SlideShare a Scribd company logo
GCE vs 他社クラウド
株式会社 Zeadle 長谷川祐介 2014-04-17
はじめに
• 開発中のため予定のものが含まれています
• スーパーエンジニアってわけでもないので

気楽に聞いて下さい!
index
• 会社説明
• 自己紹介
• ゲーム紹介(現在開発中
• アーキテクチャ(現在開発中
• GCE vs 他社クラウド
会社説明
社名 株式会社Zeadle
設立 2013年
代表 川方慎介
社名の由来
Zeal(熱意)と

Doodle(いたずら書きをする)
現在9名+1羽のメンバーで開発中!
自己紹介
氏名 長谷川祐介
経歴
20代にGMO, Yahoo, SQEXその他中小を転々としながら
2010年にgloops(旧gms)へ
2014年4月1日からZeadleへ
職種
いわゆるインフラエンジニア

CIO

(ちっちゃなインフラおじさん)
GCP歴 約2ヶ月
その他
AWSここ最近半年くらい
AzureもVM側だけど数ヶ月触ってる
GCP vs 他社クラウド
ゲーム紹介
現在開発中!
ゲームタイトル
グラフィックは
すべてKIRARITOさん!
もう一発
KIRARITO!
アーキテクチャ
現在開発中なもんで内容が薄いですが!!
Google各種サービス
Compute Engine
Application / WebSocket
redis, MySQL etc…
CloudDNS 名前のとおり!
CloudStorage
静的ファイル配信
CDNもそのまま利用
BigQuery KPI関連
Google Analytics もはや説明の必要なし
お世話になるみなさん!
がんばって作ったので・・・
さっきのごちゃごちゃを
分解していきます
Application
WebSocket
Deploy(予定)
ApplicationのActive/StandbyをInstance内で行う!
Monitor
• すべてのInstanceで
ZooKeeperClientを起動
• ZooKeeperへは
EphemeralNodeでHost
の情報を保存
• InfluxDBはCollectData
• 通知はHipChatを利用予
定
Operation Central
• デプロイとか
• オーケストレーションとか
• コンフィグレーションとか
• 基本管理系はここからやろうかなと
• MonitorのApache ZooKeeperにあるデータを利用する形で運
用フローを検討中
KPI
• Google Analytics + BigQueryを活用予定!
• まだ何も決めていないのでこれから・・・
bootstrap
• 基本はsnapshotでやろうかなと検討中
• MiddlewareのInstallなどはprefix切ってbuildして入れたい(趣
味)なのでbuildしたbinaryをそのままgitに・・・
• ansibleでgit pull?
AutoScale(検討中
• まだ機能が公式にないので自作
• MonitorでとっているOSの監視データを元に行う(しきい値は
多分いろいろ考慮するはめになると思う!
• ApplicationDeployは必ずgitのtagで行い、tagをZooKeeperに
保存しておけばあとで利用できると考えてます。
• 上記を基にSnapshotからOSを起動

Applicationはtagを元にgit pullしてからバランサーに追加す
る!
• なんか実際作るとなるとJobQueue欲しいなぁ・・・w
GCE vs 他社クラウド
構築していく中で
気がついたことを!
GCEだけじゃないですが!
という流れで現在開発構築真っ最中なわけですが
いきなり結論ですが
第一に感じたこと
全体的に
非常にスッキリしている!
Compute Engine
• 起動がちょっぱや!
• CPUも同等のEC2 Instance Typeと比較すると速い

(よくbuildするので感覚値
• いわゆるregionがない
• USにInstance立てているのになんでか速い
• 通常のInstanceについているDiskも悪くない

(buildしてるとわかる
Google塩入さんの受け売りです・・・
VMインスタンス
• 起動は本当に速い

だいたい1 2分くらい
• ディスク作成、スナップショット取得
などは体感的にも高速

(10GBのDiskのInstanceで2分程度
• タグはカンマ区切り
• Image管理はsnapshotでやった方が
楽なんじゃないかと感じてます。

どうなんでしょうか?
• 管理上作った日付が欲しい場合もあ
ると思いますが

gcutilであれば

--format=json付きでgetinstance/
listinstancesのcreationTimestamp
で取得できます。
ディスク
• Diskサイズにより性能向上す
るらしい
• マウントを簡単にできるツー
ルも付属してる!(こいつが
かなり楽でいい!
$ sudo /usr/share/google/safe_format_and_mount -m "mkfs.ext4 -F" /
dev/<disk-or-alias-name> <mount-point>
メタデータサーバー
• 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
負荷分散
• ターゲットプール

いわゆるバランサーメンバー

対象のWebServerを複数指定
• 転送ルール

バランサーのIP、プロトコル、ポート、ターゲットプール
• ヘルス チェック

ホスト、ポート、パス、間隔、タイムアウト

異常とみなす基準、正常とみなす基準
• ヘルスチェック、ターゲットプール、転送ルールの順番で作成す
れば作れます。
ヘルスチェック
• 名前を入力
• パスを入力
• 間隔、タイムアウト入力
• 異常とみなす基準、正常とみ
なす基準を入力
ターゲットプール
• 名前を入力
• 地域を選択
• VMインスタンスを選択
• ヘルスチェックを選択
転送ルール
• 名前を入力
• 地域を選択
• 外部IPを選択
• プロトコルを選択
• ポート/範囲を選択
• ターゲットプールを選択
負荷分散
これだけでできあがり
LBへのインスタンスの追加・削除
gcutil --service_version="v1" 
--project="xxxxx-xxxxx-xxx" 
[addtargetpoolinstance¦removetargetpoolinstance] 
--region="us-central1" 
--instances="test" 
test-targetpool
• 反映も数秒で完了するので非常に扱いやすい
hostname
• インスタンス作成で付けた名前がそのままhostnameになりま
す。
• また同じProject内のインスタンスはシンプルに上記hostname
で名前解決できます。
• ここらへんは非常にスッキリしてていい感じ!
アカウント
• ぶっちゃけ今回一番驚いたことです!
• Google AppsのアカウントとVM内ユーザーが連携!
• manage_accountsというプロセスが起動しており、

Developers Console上の権限に追加すると

LinuxOSのユーザーが自動で作成されます。
• Developers Console上から権限剥奪すると

ちゃんとLinuxOSにLoginできなくなります。
• Google Cloud Platformと名付けられている理由
が!!!
構築上非常に便利な点!
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"
Cloud Storage
• fluentdからLogを送るのはfluent-plugin-gstoreでできます。
• 静的ファイル配信はFileをUploadし公開flagを立てるだけでできます。
• あと権限周りが非常に面白くて、

GoogleAppsのDomainだけ許可したりできます。
• gsutilでUpload(約100MB)したらすごい遅かった・・・

けど-mオプションつけたら気にならないくらい速い!

約100MBが2分くらいでUpload完了
• これからDeployTool作るんですがcomposeが便利そう
Alternate-Protocolが気になる!
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でやりました。
CloudDNS
• edit
$ gcloud dns records --zone=zeadleorgzone edit
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が立ち上がってきて(ちっちゃくてすいません・・・
CloudDNS
{
"kind": "dns#resourceRecordSet",
"name": www.zeadle.org.",
"rrdatas": [
xxx.xxx.xxx.xxx (ここにglobal-ipを)
],
"ttl": 21600(ここはお望みのTTLを),
"type": "A"(CNAMEとかもできました!)
}
• 入力するデータ
• viで保存すると反映します!
CloudDNS
$ gcloud dns records --zone=zeadleorgzone list
• 確認
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つけてテスト
すれば返ってきます!
CloudSQL
• 今回は利用しません。
• ただみなさんに伝えたいこととして他社CloudのDBに比べると
起動がすんごい速いので1回起動してみて頂けると・・・
• 現状は性能がでないけど ちょっと使う には非常に良いと思いま
す。
• 今後の性能向上に期待してます!
管理上のメリット
• Project単位で分割されている構造になっていて

課金周りもProject単位で分割されている。
• 自分のGoogleAppsのアカウントひとつだけで各種Projectの
DeveloperConsoleにアクセスできる!
• これは複数のProjectを扱う上で非常に大きなメリットになりま
す。
• 同じくGoogleCloudSDKの各種Toolkitも--projectパラメーター
でアクセスできるようになっているためすごい使いやすいです!
今後の予定
• DeployTool作る!
• AutoScale作る!
• Configrationをどうするか

meta-serverかzookeeper使ってTemplateEngineと組み合わせ
て作る?
• Orchestrationをどれでやろうかな

Redisのpub/sub, ZooKeeperのwatch, Serf?

手段はたくさんあるので楽しいですね!
目標
• 前職で15万req/per secのソーシャルゲーム基板を作ることがで
きました。
• 構成はオンプレミス + Windows + Fusion-IO + OpenSource
• 確かにソーシャルゲームが非常に盛り上がった時代の中心で達成
できた数字で、これからそういった数字が出せるかわかりません
がそれを超えたいと考えています!
目指せ!
25万req/per sec!!
大きなシステム作りたいですね!
スタートしたばかりの
時間もリソースも限られている
小さなチームですが
最大限クォリティあげてリリースします!
ご清聴ありがとうございました!
!
今後ともよろしくお願い致します!

More Related Content

PPTX
gcpug_okinawa_#2_hiroshi_kawakami
PDF
Google Cloud Platformでソーシャルゲームを1本出してみた!
PPTX
Google Compute Engine 入門
PDF
grasysの仕組み解説
PDF
ゲームインフラとGoogle Cloud Platformと酒!
PDF
Introduction of Azure Docker Integration
PDF
最近Preview公開されたAzure テストサービスを試してみた
PPTX
実プロジェクトの経験から学ぶazureサービス適用パターン
gcpug_okinawa_#2_hiroshi_kawakami
Google Cloud Platformでソーシャルゲームを1本出してみた!
Google Compute Engine 入門
grasysの仕組み解説
ゲームインフラとGoogle Cloud Platformと酒!
Introduction of Azure Docker Integration
最近Preview公開されたAzure テストサービスを試してみた
実プロジェクトの経験から学ぶazureサービス適用パターン

What's hot (20)

PDF
Azure &lt;3 Openness
PDF
しみじみサーバーレス
PDF
[JANOG35.5] WhiteBox SW検証 ~サーバサイド編~
PDF
アナザーエデンにおける非同期オートセーブを用いた通信待ちストレスのないゲーム体験の実現
PDF
俺のサイジング
PDF
Azure How to Learn & ゆるふわ雑談Q&A
PDF
TB / Day規模のゲーム向けデータパイプラインを開発運用する日々
PDF
KubernetesでPHPを動かした話
PDF
OSS/linux on Azureの活用方法と勘所
PDF
Infrastructure as Codeの取り組みと改善
PDF
Azure Virtual Machines設計の勘所 | Microsoft Tech Summit 2017
PPTX
Azure Stack Hybrid DevOpsデモンストレーション
PDF
20181201 Azure Storage 静的 Web サイト ホスティング #きたあず #jazug
PDF
コマンド1発でAzureにDC/OS環境を作る方法
PDF
グリー株式会社『私たちが GCP を使い始めた本当の理由』第 9 回 Google Cloud INSIDE Game & Apps
PPTX
AzureDevOpsの機能解説
PPTX
大規模ライブ配信の苦労ポイント
PDF
DC/OS as PaaS : paasjp#36
PDF
コンテナ時代にインフラエンジニアは何をするのか
KEY
CloudFoundryをつかってみよう
Azure &lt;3 Openness
しみじみサーバーレス
[JANOG35.5] WhiteBox SW検証 ~サーバサイド編~
アナザーエデンにおける非同期オートセーブを用いた通信待ちストレスのないゲーム体験の実現
俺のサイジング
Azure How to Learn & ゆるふわ雑談Q&A
TB / Day規模のゲーム向けデータパイプラインを開発運用する日々
KubernetesでPHPを動かした話
OSS/linux on Azureの活用方法と勘所
Infrastructure as Codeの取り組みと改善
Azure Virtual Machines設計の勘所 | Microsoft Tech Summit 2017
Azure Stack Hybrid DevOpsデモンストレーション
20181201 Azure Storage 静的 Web サイト ホスティング #きたあず #jazug
コマンド1発でAzureにDC/OS環境を作る方法
グリー株式会社『私たちが GCP を使い始めた本当の理由』第 9 回 Google Cloud INSIDE Game & Apps
AzureDevOpsの機能解説
大規模ライブ配信の苦労ポイント
DC/OS as PaaS : paasjp#36
コンテナ時代にインフラエンジニアは何をするのか
CloudFoundryをつかってみよう
Ad

Similar to GCP vs 他社クラウド (20)

PPTX
Tech lounge gcp_20190313
PDF
私たちがGCPを使い始めた本当の理由
PDF
SHOWROOMとDeNAで取り組んだライブ配信基盤刷新・超低遅延ライブ配信の裏側【DeNA TechCon 2020 ライブ配信】
PPTX
オープンソースカンファレンス OSC 2014 エンタープライズ 東京 ownCloud 法人向けオンラインストレージ マルチデバイスファイル共有ソリューション
PDF
D3.jsを使ったデータビジュアライズ勉強会
PPTX
自社クラウドサービスをAnsibleで作った話
PDF
(IDEユーザのための) ClojureのEmacs開発環境について
PDF
スマホにおけるWebGL入門
PDF
20191120 beyondstudy#21 kitaoka
PDF
プログラミング生放送第7回 比べてみようPaaSクラウド~Azure VS GAE~
PDF
アカツキはどのようにAWSを活用しているか #jawsug
PDF
ToolChainを使った次世代DevOps環境の作り方
PDF
Intalio japan special cloud workshop
PDF
20121119.dodai projectの紹介
PPTX
AWS & Google Cloudを使ったシステム開発/技術選定のはなし
PDF
Windows azure
PDF
Dockerを活用したリクルートグループ開発基盤の構築
PDF
Azure de debian
PDF
Googleのインフラ技術から考える理想のDevOps
PPTX
Azure Api Management 俺的マニュアル 2020年3月版
Tech lounge gcp_20190313
私たちがGCPを使い始めた本当の理由
SHOWROOMとDeNAで取り組んだライブ配信基盤刷新・超低遅延ライブ配信の裏側【DeNA TechCon 2020 ライブ配信】
オープンソースカンファレンス OSC 2014 エンタープライズ 東京 ownCloud 法人向けオンラインストレージ マルチデバイスファイル共有ソリューション
D3.jsを使ったデータビジュアライズ勉強会
自社クラウドサービスをAnsibleで作った話
(IDEユーザのための) ClojureのEmacs開発環境について
スマホにおけるWebGL入門
20191120 beyondstudy#21 kitaoka
プログラミング生放送第7回 比べてみようPaaSクラウド~Azure VS GAE~
アカツキはどのようにAWSを活用しているか #jawsug
ToolChainを使った次世代DevOps環境の作り方
Intalio japan special cloud workshop
20121119.dodai projectの紹介
AWS & Google Cloudを使ったシステム開発/技術選定のはなし
Windows azure
Dockerを活用したリクルートグループ開発基盤の構築
Azure de debian
Googleのインフラ技術から考える理想のDevOps
Azure Api Management 俺的マニュアル 2020年3月版
Ad

GCP vs 他社クラウド