52
GCE vs 他社クラウド 株式会社 Zeadle 長谷川祐介 2014-04-17

GCP vs 他社クラウド

Embed Size (px)

DESCRIPTION

まだ設計中で仮です!

Citation preview

Page 1: GCP vs 他社クラウド

GCE vs 他社クラウド株式会社 Zeadle 長谷川祐介 2014-04-17

Page 2: GCP vs 他社クラウド

はじめに

•開発中のため予定のものが含まれています

• スーパーエンジニアってわけでもないので気楽に聞いて下さい!

Page 3: GCP vs 他社クラウド

index

• 会社説明

• 自己紹介

• ゲーム紹介(現在開発中

• アーキテクチャ(現在開発中

• GCE vs 他社クラウド

Page 4: GCP vs 他社クラウド

会社説明社名 株式会社Zeadle

設立 2013年

代表 川方慎介

社名の由来 Zeal(熱意)とDoodle(いたずら書きをする)

現在9名+1羽のメンバーで開発中!

Page 5: GCP vs 他社クラウド

自己紹介氏名 長谷川祐介

経歴20代にGMO, Yahoo, SQEXその他中小を転々としながら

2010年にgloops(旧gms)へ 2014年4月1日からZeadleへ

職種いわゆるインフラエンジニア

CIO(ちっちゃなインフラおじさん)

GCP歴 約2ヶ月

その他 AWSここ最近半年くらい AzureもVM側だけど数ヶ月触ってる

Page 6: GCP vs 他社クラウド
Page 7: GCP vs 他社クラウド

ゲーム紹介

現在開発中!

Page 8: GCP vs 他社クラウド

ゲームタイトル

Page 9: GCP vs 他社クラウド

グラフィックは

すべてKIRARITOさん!

Page 10: GCP vs 他社クラウド

もう一発

KIRARITO!

Page 11: GCP vs 他社クラウド

アーキテクチャ現在開発中なもんで内容が薄いですが!!

Page 12: GCP vs 他社クラウド

Google各種サービス

Compute Engine Application / WebSocket redis, MySQL etc…

CloudDNS 名前のとおり!

CloudStorage 静的ファイル配信 CDNもそのまま利用

BigQuery KPI関連

Google Analytics もはや説明の必要なし

Page 13: GCP vs 他社クラウド

お世話になるみなさん!

Page 14: GCP vs 他社クラウド

がんばって作ったので・・・

Page 15: GCP vs 他社クラウド

さっきのごちゃごちゃを 分解していきます

Page 16: GCP vs 他社クラウド

Application

Page 17: GCP vs 他社クラウド

WebSocket

Page 18: GCP vs 他社クラウド

Deploy(予定)

ApplicationのActive/StandbyをInstance内で行う!

Page 19: GCP vs 他社クラウド

Monitor• すべてのInstanceでZooKeeperClientを起動

• ZooKeeperへはEphemeralNodeでHostの情報を保存

• InfluxDBはCollectData

• 通知はHipChatを利用予定

Page 20: GCP vs 他社クラウド

Operation Central• デプロイとか

• オーケストレーションとか

• コンフィグレーションとか

• 基本管理系はここからやろうかなと

• MonitorのApache ZooKeeperにあるデータを利用する形で運用フローを検討中

Page 21: GCP vs 他社クラウド

KPI

• Google Analytics + BigQueryを活用予定!

• まだ何も決めていないのでこれから・・・

Page 22: GCP vs 他社クラウド

bootstrap

• 基本はsnapshotでやろうかなと検討中

• MiddlewareのInstallなどはprefix切ってbuildして入れたい(趣味)なのでbuildしたbinaryをそのままgitに・・・

• ansibleでgit pull?

Page 23: GCP vs 他社クラウド

AutoScale(検討中• まだ機能が公式にないので自作

• MonitorでとっているOSの監視データを元に行う(しきい値は多分いろいろ考慮するはめになると思う!

• ApplicationDeployは必ずgitのtagで行い、tagをZooKeeperに保存しておけばあとで利用できると考えてます。

• 上記を基にSnapshotからOSを起動Applicationはtagを元にgit pullしてからバランサーに追加する!

• なんか実際作るとなるとJobQueue欲しいなぁ・・・w

Page 24: GCP vs 他社クラウド

GCE vs 他社クラウド

構築していく中で 気がついたことを!

GCEだけじゃないですが!

という流れで現在開発構築真っ最中なわけですが

Page 25: GCP vs 他社クラウド

いきなり結論ですが

第一に感じたこと 全体的に

非常にスッキリしている!

Page 26: GCP vs 他社クラウド

Compute Engine• 起動がちょっぱや!

• CPUも同等のEC2 Instance Typeと比較すると速い(よくbuildするので感覚値

• いわゆるregionがない

• USにInstance立てているのになんでか速い

• 通常のInstanceについているDiskも悪くない(buildしてるとわかる

Google塩入さんの受け売りです・・・

Page 27: GCP vs 他社クラウド

VMインスタンス• 起動は本当に速いだいたい1~2分くらい

• ディスク作成、スナップショット取得などは体感的にも高速(10GBのDiskのInstanceで2分程度

• タグはカンマ区切り

• Image管理はsnapshotでやった方が楽なんじゃないかと感じてます。どうなんでしょうか?

• 管理上作った日付が欲しい場合もあると思いますが gcutilであれば --format=json付きでgetinstance/listinstancesのcreationTimestampで取得できます。

Page 28: GCP vs 他社クラウド

ディスク• Diskサイズにより性能向上するらしい

• マウントを簡単にできるツールも付属してる!(こいつがかなり楽でいい!

$ sudo /usr/share/google/safe_format_and_mount -m "mkfs.ext4 -F" /dev/<disk-or-alias-name> <mount-point>

Page 29: GCP vs 他社クラウド

メタデータサーバー• 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

Page 30: GCP vs 他社クラウド

負荷分散• ターゲットプールいわゆるバランサーメンバー対象のWebServerを複数指定

• 転送ルールバランサーのIP、プロトコル、ポート、ターゲットプール

• ヘルス チェックホスト、ポート、パス、間隔、タイムアウト異常とみなす基準、正常とみなす基準

• ヘルスチェック、ターゲットプール、転送ルールの順番で作成すれば作れます。

Page 31: GCP vs 他社クラウド

ヘルスチェック

• 名前を入力

• パスを入力

• 間隔、タイムアウト入力

• 異常とみなす基準、正常とみなす基準を入力

Page 32: GCP vs 他社クラウド

ターゲットプール

• 名前を入力

• 地域を選択

• VMインスタンスを選択

• ヘルスチェックを選択

Page 33: GCP vs 他社クラウド

転送ルール• 名前を入力

• 地域を選択

• 外部IPを選択

• プロトコルを選択

• ポート/範囲を選択

• ターゲットプールを選択

Page 34: GCP vs 他社クラウド

負荷分散

これだけでできあがり

Page 35: GCP vs 他社クラウド

LBへのインスタンスの追加・削除

gcutil --service_version="v1" \ --project="xxxxx-xxxxx-xxx" \ [addtargetpoolinstance|removetargetpoolinstance] \ --region="us-central1" \ --instances="test" \ test-targetpool

• 反映も数秒で完了するので非常に扱いやすい

Page 36: GCP vs 他社クラウド

hostname

• インスタンス作成で付けた名前がそのままhostnameになります。

• また同じProject内のインスタンスはシンプルに上記hostnameで名前解決できます。

• ここらへんは非常にスッキリしてていい感じ!

Page 37: GCP vs 他社クラウド

アカウント• ぶっちゃけ今回一番驚いたことです!

• Google AppsのアカウントとVM内ユーザーが連携!

• manage_accountsというプロセスが起動しており、 Developers Console上の権限に追加すると LinuxOSのユーザーが自動で作成されます。

• Developers Console上から権限剥奪すると ちゃんとLinuxOSにLoginできなくなります。

• Google Cloud Platformと名付けられている理由が!!!

Page 38: GCP vs 他社クラウド

構築上非常に便利な点!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"

Page 39: GCP vs 他社クラウド

Cloud Storage• fluentdからLogを送るのはfluent-plugin-gstoreでできます。

• 静的ファイル配信はFileをUploadし公開flagを立てるだけでできます。

• あと権限周りが非常に面白くて、GoogleAppsのDomainだけ許可したりできます。

• gsutilでUpload(約100MB)したらすごい遅かった・・・ けど-mオプションつけたら気にならないくらい速い! 約100MBが2分くらいでUpload完了

• これからDeployTool作るんですがcomposeが便利そう

Alternate-Protocolが気になる!

Page 40: GCP vs 他社クラウド

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でやりました。

Page 41: GCP vs 他社クラウド

CloudDNS

• edit

$ gcloud dns records --zone=zeadleorgzone edit

Page 42: GCP vs 他社クラウド

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が立ち上がってきて(ちっちゃくてすいません・・・

Page 43: GCP vs 他社クラウド

CloudDNS

{ "kind": "dns#resourceRecordSet", "name": “www.zeadle.org.", "rrdatas": [ “xxx.xxx.xxx.xxx”(ここにglobal-ipを) ], "ttl": 21600(ここはお望みのTTLを), "type": "A"(CNAMEとかもできました!) }

• 入力するデータ

• viで保存すると反映します!

Page 44: GCP vs 他社クラウド

CloudDNS

$ gcloud dns records --zone=zeadleorgzone list

• 確認

Page 45: GCP vs 他社クラウド

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つけてテスト すれば返ってきます!

Page 46: GCP vs 他社クラウド

CloudSQL

• 今回は利用しません。

• ただみなさんに伝えたいこととして他社CloudのDBに比べると起動がすんごい速いので1回起動してみて頂けると・・・

• 現状は性能がでないけど”ちょっと使う”には非常に良いと思います。

• 今後の性能向上に期待してます!

Page 47: GCP vs 他社クラウド

管理上のメリット• Project単位で分割されている構造になっていて 課金周りもProject単位で分割されている。

• 自分のGoogleAppsのアカウントひとつだけで各種ProjectのDeveloperConsoleにアクセスできる!

• これは複数のProjectを扱う上で非常に大きなメリットになります。

• 同じくGoogleCloudSDKの各種Toolkitも--projectパラメーターでアクセスできるようになっているためすごい使いやすいです!

Page 48: GCP vs 他社クラウド

今後の予定• DeployTool作る!

• AutoScale作る!

• Configrationをどうするかmeta-serverかzookeeper使ってTemplateEngineと組み合わせて作る?

• OrchestrationをどれでやろうかなRedisのpub/sub, ZooKeeperのwatch, Serf?手段はたくさんあるので楽しいですね!

Page 49: GCP vs 他社クラウド

目標

• 前職で15万req/per secのソーシャルゲーム基板を作ることができました。

• 構成はオンプレミス + Windows + Fusion-IO + OpenSource

• 確かにソーシャルゲームが非常に盛り上がった時代の中心で達成できた数字で、これからそういった数字が出せるかわかりませんがそれを超えたいと考えています!

Page 50: GCP vs 他社クラウド

目指せ! 25万req/per sec!!

大きなシステム作りたいですね!

Page 51: GCP vs 他社クラウド

スタートしたばかりの 時間もリソースも限られている 小さなチームですが 最大限クォリティあげてリリースします!

Page 52: GCP vs 他社クラウド

ご清聴ありがとうございました! !

今後ともよろしくお願い致します!