Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

GCP vs 他社クラウド

4,378 views

Published on

まだ設計中で仮です!

Published in: Internet

GCP vs 他社クラウド

  1. 1. GCE vs 他社クラウド 株式会社 Zeadle 長谷川祐介 2014-04-17
  2. 2. はじめに • 開発中のため予定のものが含まれています • スーパーエンジニアってわけでもないので
 気楽に聞いて下さい!
  3. 3. index • 会社説明 • 自己紹介 • ゲーム紹介(現在開発中 • アーキテクチャ(現在開発中 • GCE vs 他社クラウド
  4. 4. 会社説明 社名 株式会社Zeadle 設立 2013年 代表 川方慎介 社名の由来 Zeal(熱意)と
 Doodle(いたずら書きをする) 現在9名+1羽のメンバーで開発中!
  5. 5. 自己紹介 氏名 長谷川祐介 経歴 20代にGMO, Yahoo, SQEXその他中小を転々としながら 2010年にgloops(旧gms)へ 2014年4月1日からZeadleへ 職種 いわゆるインフラエンジニア
 CIO
 (ちっちゃなインフラおじさん) GCP歴 約2ヶ月 その他 AWSここ最近半年くらい AzureもVM側だけど数ヶ月触ってる
  6. 6. ゲーム紹介 現在開発中!
  7. 7. ゲームタイトル
  8. 8. グラフィックは すべてKIRARITOさん!
  9. 9. もう一発 KIRARITO!
  10. 10. アーキテクチャ 現在開発中なもんで内容が薄いですが!!
  11. 11. Google各種サービス Compute Engine Application / WebSocket redis, MySQL etc… CloudDNS 名前のとおり! CloudStorage 静的ファイル配信 CDNもそのまま利用 BigQuery KPI関連 Google Analytics もはや説明の必要なし
  12. 12. お世話になるみなさん!
  13. 13. がんばって作ったので・・・
  14. 14. さっきのごちゃごちゃを 分解していきます
  15. 15. Application
  16. 16. WebSocket
  17. 17. Deploy(予定) ApplicationのActive/StandbyをInstance内で行う!
  18. 18. Monitor • すべてのInstanceで ZooKeeperClientを起動 • ZooKeeperへは EphemeralNodeでHost の情報を保存 • InfluxDBはCollectData • 通知はHipChatを利用予 定
  19. 19. Operation Central • デプロイとか • オーケストレーションとか • コンフィグレーションとか • 基本管理系はここからやろうかなと • MonitorのApache ZooKeeperにあるデータを利用する形で運 用フローを検討中
  20. 20. KPI • Google Analytics + BigQueryを活用予定! • まだ何も決めていないのでこれから・・・
  21. 21. bootstrap • 基本はsnapshotでやろうかなと検討中 • MiddlewareのInstallなどはprefix切ってbuildして入れたい(趣 味)なのでbuildしたbinaryをそのままgitに・・・ • ansibleでgit pull?
  22. 22. AutoScale(検討中 • まだ機能が公式にないので自作 • MonitorでとっているOSの監視データを元に行う(しきい値は 多分いろいろ考慮するはめになると思う! • ApplicationDeployは必ずgitのtagで行い、tagをZooKeeperに 保存しておけばあとで利用できると考えてます。 • 上記を基にSnapshotからOSを起動
 Applicationはtagを元にgit pullしてからバランサーに追加す る! • なんか実際作るとなるとJobQueue欲しいなぁ・・・w
  23. 23. GCE vs 他社クラウド 構築していく中で 気がついたことを! GCEだけじゃないですが! という流れで現在開発構築真っ最中なわけですが
  24. 24. いきなり結論ですが 第一に感じたこと 全体的に 非常にスッキリしている!
  25. 25. Compute Engine • 起動がちょっぱや! • CPUも同等のEC2 Instance Typeと比較すると速い
 (よくbuildするので感覚値 • いわゆるregionがない • USにInstance立てているのになんでか速い • 通常のInstanceについているDiskも悪くない
 (buildしてるとわかる Google塩入さんの受け売りです・・・
  26. 26. VMインスタンス • 起動は本当に速い
 だいたい1 2分くらい • ディスク作成、スナップショット取得 などは体感的にも高速
 (10GBのDiskのInstanceで2分程度 • タグはカンマ区切り • Image管理はsnapshotでやった方が 楽なんじゃないかと感じてます。
 どうなんでしょうか? • 管理上作った日付が欲しい場合もあ ると思いますが
 gcutilであれば
 --format=json付きでgetinstance/ listinstancesのcreationTimestamp で取得できます。
  27. 27. ディスク • Diskサイズにより性能向上す るらしい • マウントを簡単にできるツー ルも付属してる!(こいつが かなり楽でいい! $ sudo /usr/share/google/safe_format_and_mount -m "mkfs.ext4 -F" / dev/<disk-or-alias-name> <mount-point>
  28. 28. メタデータサーバー • alt=jsonでJSONで取得できる!(これマジで嬉しい! • tagが取得できる!(これが便利! • Project単位でインスタンス全体に反映するroleや特定インスタン スにだけ反映するカスタムメタデータがある!
 (個人的に応用範囲が広いんじゃないかと・・・ $ curl -H "X-Google-Metadata-Request: True" http://metetadata/v1/ instance/network-interfaces/0/ip 10.240.31.180
  29. 29. 負荷分散 • ターゲットプール
 いわゆるバランサーメンバー
 対象のWebServerを複数指定 • 転送ルール
 バランサーのIP、プロトコル、ポート、ターゲットプール • ヘルス チェック
 ホスト、ポート、パス、間隔、タイムアウト
 異常とみなす基準、正常とみなす基準 • ヘルスチェック、ターゲットプール、転送ルールの順番で作成す れば作れます。
  30. 30. ヘルスチェック • 名前を入力 • パスを入力 • 間隔、タイムアウト入力 • 異常とみなす基準、正常とみ なす基準を入力
  31. 31. ターゲットプール • 名前を入力 • 地域を選択 • VMインスタンスを選択 • ヘルスチェックを選択
  32. 32. 転送ルール • 名前を入力 • 地域を選択 • 外部IPを選択 • プロトコルを選択 • ポート/範囲を選択 • ターゲットプールを選択
  33. 33. 負荷分散 これだけでできあがり
  34. 34. LBへのインスタンスの追加・削除 gcutil --service_version="v1" --project="xxxxx-xxxxx-xxx" [addtargetpoolinstance¦removetargetpoolinstance] --region="us-central1" --instances="test" test-targetpool • 反映も数秒で完了するので非常に扱いやすい
  35. 35. hostname • インスタンス作成で付けた名前がそのままhostnameになりま す。 • また同じProject内のインスタンスはシンプルに上記hostname で名前解決できます。 • ここらへんは非常にスッキリしてていい感じ!
  36. 36. アカウント • ぶっちゃけ今回一番驚いたことです! • Google AppsのアカウントとVM内ユーザーが連携! • manage_accountsというプロセスが起動しており、
 Developers Console上の権限に追加すると
 LinuxOSのユーザーが自動で作成されます。 • Developers Console上から権限剥奪すると
 ちゃんとLinuxOSにLoginできなくなります。 • Google Cloud Platformと名付けられている理由 が!!!
  37. 37. 構築上非常に便利な点! WebのDevelopers Console上で RESTとコマンドラインが出力される! gcutil --service_version="v1" --project="xxxxx-xxxxx-xxx" addinstance "test" --tags="test" --zone="us-central1-b" --machine_type="n1- standard-1" --network="default" --external_ip_address="ephemeral" -- service_account_scopes="https://www.googleapis.com/auth/ userinfo.email,https://www.googleapis.com/auth/compute,https:// www.googleapis.com/auth/devstorage.full_control" --image="https:// www.googleapis.com/compute/v1/projects/centos-cloud/global/ images/centos-6-v20140318" --persistent_boot_disk="true"
  38. 38. Cloud Storage • fluentdからLogを送るのはfluent-plugin-gstoreでできます。 • 静的ファイル配信はFileをUploadし公開flagを立てるだけでできます。 • あと権限周りが非常に面白くて、
 GoogleAppsのDomainだけ許可したりできます。 • gsutilでUpload(約100MB)したらすごい遅かった・・・
 けど-mオプションつけたら気にならないくらい速い!
 約100MBが2分くらいでUpload完了 • これからDeployTool作るんですがcomposeが便利そう Alternate-Protocolが気になる!
  39. 39. CloudDNS • updateを行う $ gcloud components update dns $ gcloud dns managed-zone create --dns_name="zeadle.org." -- description="zeadle org zeadleorgzone • managed-zone create • 2014-04-15現在はまだDeveloper Consoleは提供されてない のでCLIでやりました。
  40. 40. CloudDNS • edit $ gcloud dns records --zone=zeadleorgzone edit
  41. 41. CloudDNS { "additions": [ { "kind": "dns#resourceRecordSet", "name": "zeadle.org.", "rrdatas": [ "ns-cloud-b1.googledomains.com. dns-admin.google.com. 2 21600 3600 1209600 300" ], "ttl": 21600, "type": "SOA" }, { ここに入力 } ], "deletions": [ { "kind": "dns#resourceRecordSet", "name": "zeadle.org.", "rrdatas": [ "ns-cloud-b1.googledomains.com. dns-admin.google.com. 1 21600 3600 1209600 300" ], "ttl": 21600, "type": "SOA" } ] } • viが立ち上がってきて(ちっちゃくてすいません・・・
  42. 42. CloudDNS { "kind": "dns#resourceRecordSet", "name": www.zeadle.org.", "rrdatas": [ xxx.xxx.xxx.xxx (ここにglobal-ipを) ], "ttl": 21600(ここはお望みのTTLを), "type": "A"(CNAMEとかもできました!) } • 入力するデータ • viで保存すると反映します!
  43. 43. CloudDNS $ gcloud dns records --zone=zeadleorgzone list • 確認
  44. 44. CloudDNS [ { "kind": "dns#resourceRecordSet", "name": "zeadle.org.", "rrdatas": [ "ns-cloud-b1.googledomains.com.", "ns-cloud-b2.googledomains.com.", "ns-cloud-b3.googledomains.com.", "ns-cloud-b4.googledomains.com." ], "ttl": 21600, "type": "NS" }, { "kind": "dns#resourceRecordSet", "name": "zeadle.org.", "rrdatas": [ "ns-cloud-b1.googledomains.com. dns-admin.google.com. 1 21600 3600 1209600 300" ], "ttl": 21600, "type": "SOA" }, { "kind": "dns#resourceRecordSet", "name": "www.zeadle.org.", "rrdatas": [ xxx.xxx.xxx.xxx ], "ttl": 3600, "type": "A" } ] • 出力(ちっちゃくてすいません・・・ あとはdigとかdrillで @serverつけてテスト すれば返ってきます!
  45. 45. CloudSQL • 今回は利用しません。 • ただみなさんに伝えたいこととして他社CloudのDBに比べると 起動がすんごい速いので1回起動してみて頂けると・・・ • 現状は性能がでないけど ちょっと使う には非常に良いと思いま す。 • 今後の性能向上に期待してます!
  46. 46. 管理上のメリット • Project単位で分割されている構造になっていて
 課金周りもProject単位で分割されている。 • 自分のGoogleAppsのアカウントひとつだけで各種Projectの DeveloperConsoleにアクセスできる! • これは複数のProjectを扱う上で非常に大きなメリットになりま す。 • 同じくGoogleCloudSDKの各種Toolkitも--projectパラメーター でアクセスできるようになっているためすごい使いやすいです!
  47. 47. 今後の予定 • DeployTool作る! • AutoScale作る! • Configrationをどうするか
 meta-serverかzookeeper使ってTemplateEngineと組み合わせ て作る? • Orchestrationをどれでやろうかな
 Redisのpub/sub, ZooKeeperのwatch, Serf?
 手段はたくさんあるので楽しいですね!
  48. 48. 目標 • 前職で15万req/per secのソーシャルゲーム基板を作ることがで きました。 • 構成はオンプレミス + Windows + Fusion-IO + OpenSource • 確かにソーシャルゲームが非常に盛り上がった時代の中心で達成 できた数字で、これからそういった数字が出せるかわかりません がそれを超えたいと考えています!
  49. 49. 目指せ! 25万req/per sec!! 大きなシステム作りたいですね!
  50. 50. スタートしたばかりの 時間もリソースも限られている 小さなチームですが 最大限クォリティあげてリリースします!
  51. 51. ご清聴ありがとうございました! ! 今後ともよろしくお願い致します!

×