Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
私たちがGCPを使い始めた本当の理由
Search
gree_tech
PRO
November 19, 2019
Technology
0
180
私たちがGCPを使い始めた本当の理由
「第 9 回 Google Cloud INSIDE Games & Apps」で発表された資料です。
gree_tech
PRO
November 19, 2019
Tweet
Share
More Decks by gree_tech
See All by gree_tech
REALITY株式会社における開発生産性向上の取り組み: 失敗と成功から学んだこと
gree_tech
PRO
2
130
『ヘブンバーンズレッド』におけるフィールドギミックの裏側
gree_tech
PRO
2
90
セキュリティインシデント対応の体制・運用の試行錯誤 / greetechcon2024-session-a1
gree_tech
PRO
1
96
『アナザーエデン 時空を超える猫』国内海外同時運営実現への道のり ~別々で開発されたアプリを安定して同時リリースするまでの取り組み~
gree_tech
PRO
1
78
『アサルトリリィ Last Bullet』におけるクラウドストリーミング技術を用いたブラウザゲーム化の紹介
gree_tech
PRO
1
89
UnityによるPCアプリの新しい選択肢。「PC版 Google Play Games」への対応について
gree_tech
PRO
1
110
実機ビルドのエラーによる検証ブロッカーを0に!『ヘブンバーンズレッド』のスモークテスト自動化の取り組み
gree_tech
PRO
1
110
"ゲームQA業界の技術向上を目指す! 会社を超えた研究会の取り組み"
gree_tech
PRO
1
140
Jamstack でリニューアルするグリーグループのメディア
gree_tech
PRO
2
300
Other Decks in Technology
See All in Technology
【若手エンジニア応援LT会】ソフトウェアを学んできた私がインフラエンジニアを目指した理由
kazushi_ohata
0
150
Oracle Cloud Infrastructureデータベース・クラウド:各バージョンのサポート期間
oracle4engineer
PRO
28
12k
SSMRunbook作成の勘所_20241120
koichiotomo
2
120
隣接領域をBeyondするFinatextのエンジニア組織設計 / beyond-engineering-areas
stajima
1
270
VideoMamba: State Space Model for Efficient Video Understanding
chou500
0
190
Shopifyアプリ開発における Shopifyの機能活用
sonatard
4
250
Amazon Personalizeのレコメンドシステム構築、実際何するの?〜大体10分で具体的なイメージをつかむ〜
kniino
1
100
DMARC 対応の話 - MIXI CTO オフィスアワー #04
bbqallstars
1
160
AGIについてChatGPTに聞いてみた
blueb
0
130
個人でもIAM Identity Centerを使おう!(アクセス管理編)
ryder472
3
190
OCI Security サービス 概要
oracle4engineer
PRO
0
6.5k
リンクアンドモチベーション ソフトウェアエンジニア向け紹介資料 / Introduction to Link and Motivation for Software Engineers
lmi
4
300k
Featured
See All Featured
A designer walks into a library…
pauljervisheath
203
24k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
665
120k
Reflections from 52 weeks, 52 projects
jeffersonlam
346
20k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
26
1.4k
StorybookのUI Testing Handbookを読んだ
zakiyama
27
5.3k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
169
50k
How STYLIGHT went responsive
nonsquared
95
5.2k
10 Git Anti Patterns You Should be Aware of
lemiorhan
654
59k
Building Flexible Design Systems
yeseniaperezcruz
327
38k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
47
2.1k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
47
5k
Designing for Performance
lara
604
68k
Transcript
私たちがGCPを 使い始めた本当 理由 2019年11月18日 堀口 真司 グリー株式会社 開発本部 インフラストラクチャ部 ディベロップメントオペレーションズグループ
リードエンジニア
堀口 真司 グリー株式会社 開発本部 インフラストラクチャ部 • 家庭用 普通 ゲーム( 1年)
→ 国内MMORPG などオンラインゲーム 開発、支援、販売(5年) → 主にアーケードゲーム基盤開発(2年) → グ リー8年目 • クラウド系やゲーム系勉強会など多数講演 • 主にインフラ 運用効率改善(データベース、クラウド系全部) • 社内で AWS 2014~ GCP 2017~ • アプリ開発・設計 お手伝い
もくじ •開発開始まで 社内事情 •GCP に期待されること •結果や課題など •これから こと 30分だと思ってたら20分だった
じめに •会社 方針や組織全体 認識 で ない こと •AWS より優れているとか、イケ てないとか、そういう比較
で な い こと
• 消滅都市スピンオフ • アニメもやってたよ! • ストーリー重視 • ターン制バトル • そこそこ
規模 ゲームで 初めて GCP
OnPre GCP 2014 2019 AWS AFTERLOST 消滅都市 消滅都市0. 開発や運営メンバー 同じ。
効率よく運用することが求められた
開発開始まで 社内事情
VM 中心 クラウド環境 理想的な運用に なりつつあった! •Chef Cookbook によって符号化されたサーバ環境 • インフラ担当、セキュリティ担当、モニタリング担当、ゲーム開発者それぞれ
チームが独立してコミットできる •CloudFormation や多数 運用ツールを使って簡略化 •マネージドサービスを多用し自動復旧や Pager 削減 •大量 メトリクスを収集して最適化や問題解決 高 化 •ゲーム開発開始から、サービスクローズまで手順化 •ゲームで ありきたりな LAMP 環境
Backend DB Replica Auto Scale … commit VM Image …
DB Master Launch Admin Serverless Asset ・Pager ・Chat ・Mail ・Logging ・Monitoring DB Replica … DB Master ・Redis ・Memcache App Operator Developer Deploy build CDN LoadBalancer Serverless
VM を中心とした環境 課題 •僅かな修正で VM イメージ 作り直しと入れ替えに手間がかかりデ プロイ手法 氾濫、学習コスト増加 •
Packer, Capistrano, s3 sync, Code Deploy •管理コストを抑えるために VM イメージ 共通化 • 多様性 低下、開発者 裁量低下、基盤検証コスト 増加 •スケールアウトに時間がかかる で余裕を持ったキャパシティ設計 でコスト増加 •VM を支えるため クラウドサービスへ 依存
GCP に期待されること
•ゲームで ない別件で 柔軟性とス ピード感重視で GAE と GKE を選択し た •雑ながらも結果的に上手くいき、ゲー
ムで 活用も視野に いった •ビルドフローやモニタリング、データ分 析まで一通りできた • VM 時代 課題 ほとんどない • 2018/2月時点 人気手法とりいれた • App Engine (Go) 2000 req/sec ~ • Kubernetes Engine 1000 req/sec ~
Kubernetes cluster GKE Dashboard Ingress HTTPS GKE Support GKE Channel
GKE Redis GKE Web GKE Certificate Manager Cloud DNS reality.wrightflyer.net Identity Aware Proxy GKE Jenkins GKE Web-stg GKE Collab GKE Comment GKE Video GKE Comment Monitor GKE Comment Summarizer GKE PHPMyAdmin User Cloud SQL Streaming Cloud Datastore CloudFront Lambda App Engine GKE ワークロード 40種類ぐらい。 200 Pods ~。 動画配信・コミュニティプラットフォームな で ゲームより だいぶ複雑なも を運用して慣れてきた。
ゲームでもコンテナを使いたかった •VM イメージ構築 期待通りに動作していたし、既存 手法でも大き な不満 なかった •VM で Immutable
を目指すとスピード感が落ちる。どちらか トレー ドオフになりがち •インフラ部が VM イメージを管理するより 、開発チームに任せて裁 量と責任を寄せたい。でもノウハウ 共有したい •AFTERLOST 消滅都市案件で 想定規模も控えめで、開発チーム も前向きに GKE を検討
Kubernetes Engine で運用したかった •Kubernetes を運用したいわけで ない • Kubernetes が問題を起こしたときに対処しにくい(できない) •
よってマネージド Kubernetes 以外ありえない。独自 CRD も消極的 • Google Origin だし GKE 相性良さそうな気がした • svc 仕様変更で iptables が壊れたり、 ingress-gce バグ踏んだりしたけど。 •Compute Engine 利用 避けたかった • VM イメージ 管理が増える 暗い未来が待っている • VM に SSH して運用できるようにすると、考えなけれ いけないことが膨大 になる
と いえ、劇的にアーキテクチャを変えたい というわけで なかった •ガチャとかあるし、(新規事業に比べて)売り上げ規模 割合 大き いし、保守コスト かけたくないし。 •AppEngine
や Spanner 検討せず。 •他 マネージドサービスもありふれたも を利用 • RDS → CloudSQL (MySQL) • CloudWatch → Stackdriver • S3 → CloudStorage • Lambda → Functions • BQ 使わず、慣れた内製ツール(Kinesis EMR)を利用 • 開発チーム側がログやテーブルを設計し、クエリも打つため
かなり大きい運用負担になる 構築、運用 手間 オーバーヘッド費用 地域ごと 負荷 波 ※実際 サービス地域と 異なります
2days、日本を除く
課題や結果など ここから tips など
docker コンテナ化 期待通り VM Apache PHP Ubuntu Monitoring Application VM
Monitoring Application Middleware any OS anything… VM で OS や ミドルウェア イ ンフラ部で 対応 コンテナで OS やミドルウェアを開 発チームで自由に 選べる。 新しい開発言語や OS など積極的に 取り入れることが でき、インフラ 負 担も減らせる。 VM Image
API Container Engine App afterlost.wfs.games Cloud DNS HTTPS-Ingress Cloud Load
Balancing Certificate Manager Container Something Logging Alert Monitoring Batch Container Engine Admin Container Engine Admin Cloud IAP Developer Customer Service User-1 Cloud SQL Notify Cloud Pub/Sub Stg-API Container Engine Stg-Admin Container Engine Stg-Admi n Cloud IAP To-slack Cloud Functions Asset Cloud Storage Kubernetes cluster production1 Kubernetes cluster monitoring HTTPS-Ingress Cloud Load Balancing Grafana Container Engine Grafana Cloud IAP Ops Stackdriver Prometheus Container PagerDuty Slack Kinesis User-N Cloud SQL Masterdata Container Registory
東京リージョン み運用 手抜きで ない 遅い地域でも 300ms 程度
DNS 問題 起こらなかった Pod API dnsmasq fluentd database.afterlost.wfs.games. 最後 ドットもちゃんとつけて
リゾルバ search suffix を回避。 GKE 環境 ndots が 5 で高め。 念 ため sidecar IPv4 が っきりしているなら AAAA レコード 引かない。 (CloudSQL VPC IP 不変らしい)
CloudSQL リリース初日に方針変更 Cloud SQL Cloud SQL Cloud SQL Cloud SQL
master failover replica-1 replica-N Behind Replication スレッド 一つ innodb_flush_log_at_trx_commit = 1 更新系性能がスケールしにくい Cloud SQL Cloud SQL master failover Cloud SQL Cloud SQL master failover Cloud SQL Cloud SQL master failover replica による分散に頼らず 水平・垂直分割でし ぐ。 Behind も気にせずアプリも開発しやすい 運用 ちょっとめんどう。
Production 環境 Kustomize 廃止 base production QA-1 Dev-1 Dev-N real
テンプレ化できるほど 単純で なかった。 運用事故を防ぐためにも 専用に管理 helm 化や json 風 .js を nodejs に通すやり方などやってみ たけど、なるべく raw に近い Kustomize が使いやすかった。 GKE コンソールで編集もできるし。
よかった • スケジュール通り • 開発チーム Kubernetes 理解 度が高かった • 海外レイテンシが良かった
• 過去 GCP 経験 活かせた • CI/CD 環境もバッチリできた 改善したい • 情報 共有が少なかった • DNS が弱かった • Stackdriver ログ代が高かった • CloudSQL 負荷が予想以上だった • サービスアカウントが乱立してた • 固定 IP 必須と相性が悪かった • Request/Limit 精査してなかった • 特定 タイミングに Pod 増やしたかった • ノードが減りにくかった • チャットボットが居なかった リリース直後 反省会など 意見
これから こと
多様な選択肢 • 分析 BQ、 CDN に CF(+Lambda)と Akamai 、 GKE
から DynamoDB などハイブリッド化 進んでます •開発チームやみんな スキル、趣向などを取り入れて自由様々にえ らんでます • 今 Spanner へ 感度が大変高くなっており、社内勉強会なども積極的に 開催されてます
• インフラ部で 自社ゲームだけで なくグループ・関連企業全体 運 用を行っています。たくさんプロ ジェクト・案件あります • 規模も様々で、 Cloud
Run で済 むも から数千vCPUクラスま で! • GCP を採用した裏 理由も聞けます ご清聴ありがとうございました