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
ロリポップ! for Gamersの立ち上げ/lolipop for gamers launch
Search
Takuma Kume
May 24, 2024
Technology
3k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
ロリポップ! for Gamersの立ち上げ/lolipop for gamers launch
Road to SRE Next @ Fukuoka
https://sre-lounge.connpass.com/event/314694/
Takuma Kume
May 24, 2024
More Decks by Takuma Kume
See All by Takuma Kume
SRE/インフラエンジニアの市場価値とキャリアパス/Market value and career path for SRE-infrastructure engineers
takumakume
2
1.5k
【新卒研修】共通言語としてのSRE/SRE as a common language
takumakume
0
290
DDoSとの終わりなき戦い2025/endless_battle_with_ddos_attack_2025
takumakume
3
190
事業部CTOの現在地(パネルディスカッション)/Current-location-of-Division-CTO
takumakume
0
230
ロリポップ! for Gamersを支えるインフラ/lolipop for gamers infrastructure
takumakume
0
1.7k
ホモグラフドメインを検出してみた/detect homograph domain
takumakume
0
810
ソフトウェアの継続的アップデートをコンテナ化によって加速させる/Accelerate continuous software updates with containerization
takumakume
0
5.7k
KubernetesにおけるSBOMを利用した脆弱性管理/Vulnerability_Management_with_SBOM_in_Kubernetes
takumakume
2
3.2k
ホスティング事業におけるSREの取り組みと面白さ/SRE Efforts in the Hosting Business and the Interest of SRE
takumakume
2
4k
Other Decks in Technology
See All in Technology
依頼文化をやめる日 EM視点で語るPlatform EngineeringとInclusive SRE / Discussing Platform Engineering and Inclusive SRE from an EM's Perspective
shin1988
4
5.5k
証券システムを10年Scalaで作り続けるということ - 関数型まつり2026
krrrr38
3
850
Amazon EVS で VCF 9.0 / 9.1 のサポート開始まとめ
mtoyoda
0
300
関数型の考えを TypeScript に持ち込んで、テストしやすい純粋関数を増やす / Pure at the Core, Effects at the Edge: Bringing Functional Thinking into TypeScript
kaminashi
1
120
キャリアの中で本を作る / Making a Book During Your Career
ak1210
0
140
Making sense of Google’s agentic dev tools
glaforge
1
210
AICoEでAIネイティブ組織への進化
yukiogawa
0
170
Amplify Gen2でbackend.tsにCDKを定義する/しない事によるCDKの挙動の違いとユースケース
smt7174
0
240
個人開発で育てる「大規模設計の苗床」 - AI時代の1人開発から始める業務への知識接続 / The Seedbed for Large-Scale Design - From AI-Era Solo Projects to Professional Knowledge
bitkey
PRO
1
250
ZOZOTOWNの進化と信頼性を両立する負荷試験
zozotech
PRO
2
170
ソニー銀行におけるビジネスアジリティ向上のためのクラウドシフト戦略
srenext
0
280
SoccerMaster: A Vision Foundation Model for Soccer Understanding
kzykmyzw
0
110
Featured
See All Featured
コードの90%をAIが書く世界で何が待っているのか / What awaits us in a world where 90% of the code is written by AI
rkaga
62
44k
Code Reviewing Like a Champion
maltzj
528
40k
Reflections from 52 weeks, 52 projects
jeffersonlam
356
21k
The Curious Case for Waylosing
cassininazir
1
430
Game over? The fight for quality and originality in the time of robots
wayneb77
1
220
KATA
mclloyd
PRO
35
15k
Build The Right Thing And Hit Your Dates
maggiecrowley
39
3.3k
sira's awesome portfolio website redesign presentation
elsirapls
0
300
Building an army of robots
kneath
306
46k
Public Speaking Without Barfing On Your Shoes - THAT 2023
reverentgeek
1
460
Impact Scores and Hybrid Strategies: The future of link building
tamaranovitovic
0
330
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
Transcript
ロリポップ! for Gamersの 立ち上げ 久米拓馬 / GMO PEPABO inc. 2024.5.24
Road to SRE Next @ Fukuoka
2 自己紹介 ホスティング事業部 エンジニアリングリード 久米拓馬 @takumakume • 福岡在住 • ルアーフィッシング・珈琲焙煎 •
ウイスキーパトロール • 今年の4月までSREをやっていた • Kubernetes / Cloudnative
None
ロリポップ! for Gamers 4 https://news.yahoo.co.jp/articles/444e847fc6ad2a9d98c8951e325c674d8a995668
ロリポップ! for Gamers • パルワールドなどのマルチプレイ⽤ゲーム サーバを提供 • サーバに関する専⾨知識が少なくても、数 クリックで簡単にゲームを始められる
ロリポップ! for Gamers • ゲームの設定を簡単に変更できる機能の提供
タイムライン 2024/2/9 2/29 4/15 6/x イマこ こ プロジェクト発足 無料モニター提供開始 正式版リリース
有料提供開始 13 営業日 • 無料モニター提供開始:最短で市場参⼊するためにコントロールパネルからサーバを作るのでは なく予めセットアップしたサーバを払い出すようにして最⼩⼯数でサービスを開始 • 正式版:コントロールパネルの機能の拡充や、サーバの増強を実施。課⾦機能を除いてリリース • 現在、有料化に向けて進⾏中
本⽇お話すること • アーキテクチャ全体像 • SRE観点での技術選定 • 今後やっていきたいこと
アーキテクチャ全体像
• Webアプリケーションをすぐに実行可能な、Kubernetes クラスタを持っている。 • オンプレミスのデータセンターにゲームサーバが複数実行できる余剰サーバを 持っている。 • 実質13日で、ゲームサーバ市場に参入する。 10 アーキテクチャ
前提
11 アーキテクチャ 全体像 MySQL Frontend (Type script) Backend (Go) アプリケーション
DB (Amazon RDS) コントロールパネル Kubernetes Cluster (オンプレミス ) オンプレミスデータセンター Baremetal #1 (Ubuntu/LXD) Baremetal #n (Ubuntu/LXD) LXD Cluster Ceph Cluster VM #1 VM #2 VM #n Webアプリケーション ゲームサーバインフラ
技術選定
• monorepoを採用 • Frontend、Backend、Kubernetes manifests などサービスに関わるコードは単一 のリポジトリで管理する • ソースコード全体の視認性向上 •
SREとして、サービス内の各コンポーネントがどこで管理されているかを知るの は重要なポイントである • 1箇所で完結していると調査しやすい • Pull Request毎に動作確認環境を生成できる仕組みを作っており、サービスに関わ る全てのコンポーネントやインフラを一気通貫で結合テストができる 13 技術選定 リポジトリ
14 技術選定
15 技術選定 • Protocol Buffers を採用 • スキーマ駆動開発を行いたい • SREとしては、API仕様がコード化されていると調査が捗る
• フロントエンド・バックエンドを効率よく開発したい • サービスの性質上一般的なリソースの CRUDに加えて、RPC的な要素が多く、無理に RESTfulなAPIに落とし込まないでよい • OpenAPIではなくProtocol Buffersである理由 Webアプリケーション
• Connectを採用 • 1つのコードでgRPC, gRPC-Web, Connectプロトコルに対応できる • Frontendからクライアントに配信されたJavaScriptからBackendのAPIを実行する必 要がある •
gRPCはブラウザから直接実行することはできない • ブラウザのjsではgRPCが利用するHTTP/2を完全に制御できない • gRPC-Webが必要となる • EnvoyのようなプロキシなしでgRPCのAPIをgRPC-Webで利用できる • SREとしては、構成はシンプルになり調査が楽 16 技術選定 Webアプリケーション
• オンプレミスデータセンターでのベアメタルサーバ を採用 • 競合他社に劣らない価格設定をすると、パブリッククラウドでは赤字 • 今後、ゲームサーバビジネス以外にも柔軟に対応できるインフラ基盤としても活用し たい 17 技術選定
ゲームサーバインフラ
18 技術選定 • canonical/lxd を採用 • コンテナとVMのオーケストレーター • ゲームサーバの効率的な運用のためにオーケストレーションツールは必須 •
なぜ LXD ? • VMとシステムコンテナの両方を標準でサポートしている • コントロールプレーンの導入が比較的楽である ゲームサーバインフラ
19 技術選定 • ストレージとして Ceph を採用 • 分散ストレージシステム • ユーザのデータを特定のサーバに依存しない構成とし、耐障害性やメンテナンス性を
高めるのは今後の運用を見据えて必須である • SREとしては、単一母艦サーバの障害だけで夜間対応を強いられるのは厳しい • スモールスタートかつ短納期の条件下では、コストや時間の関係でエンタープライズ なストレージを調達することはできない ゲームサーバインフラ
20 リリース後に起きた障害を一つ紹介します
• 問題 • 突然一部のIPアドレスと疎通できなくなる • 気づきにくい、問い合わせで発覚 • 1日に数台のサーバで発生 • 正式版リリース以降に調達した新しいのハードウェアで発生していた
• 原因 • Bondingで束ねたIntel NICをUbuntuのKernelで利用するとバグを踏む • 解決策 • Kernelのアップデートで解決した 21 障害 ネットワーク障害 Switch Switch Server bonding ハードウェアの違いで問題が起こるリスクも忘れてはいけない
今後のやっていきたいこと
• プロジェクト発足当初は「VPSベースのゲームサーバサービス」だった • 国内の競合はVPSをベースとして、ゲームサーバのテンプレートを提供するパターン • VPSはサーバ全体をユーザが自由に触ることができる • カーネルまで触ることができる、VMを提供するのが一般的 • そのため、ゲームサーバとしてVMを採用した
23 今後のやっていきたいこと ゲームインスタンスのコンテナ化
• 開発を進める中でプロダクトの価値は「ゲームを快適にプレイできるサービス」であると考え るようになった • ゲームをプレイしたり、ユーザがカスタマイズをできる余地があれば、VPSにこだわる必要が ない • コンテナも選択肢となる 24 今後のやっていきたいこと
ゲームインスタンスのコンテナ化
25 コンテナ化のメリット • リソースのオーバーヘッドが少ない • 原価を抑えてよりよいサービスを提供するために重要な要素 • 起動が早い • LXDで管理しやすい
• コンパネからゲームの設定を変更する機能は、LXDのAPI経由でインスタンスのコマンドを 実行している • VMの場合はゲストOS上のlxd-agentを経由してコマンドが実行されるため、不安定な場 合がある • コンテナの場合はlxdが直接コンテナに実行するため、比較的安定する ゲームインスタンスのコンテナ化 今後のやっていきたいこと
26 ゲームインスタンスのコンテナ化 今後のやっていきたいこと https://ubuntu.com/blog/lxd-vs-docker • LXDで使われているLXCではシステムコンテナが扱える • (語弊はあるが)VMのように扱えるコンテナ
27 • LXCはコンテナ実行時にinitを実行することを前提としている。つまり、複数プロセスを上げ ることができる。 • ゲームサーバ、SSH、etc… などを同時に実行できる。 • Dockerはコンテナ実行時にinitを実行しない。アプリケーションプロセスを実行することを前 提として作られている。つまり、1コンテナ1プロセス。
• 本質としては同じなのでDockerでinitプロセスを上げることで、1コンテナ1プロセスの制約 がなくなる。しかしながら、Dockerは実行プロセスがダウンしたらコンテナがダウンしたり、 ログにstdout/errを用いる点から、複数プロセスを前提としていない仕組みであると言え る。 ゲームインスタンスのコンテナ化 今後のやっていきたいこと
28 • システムコンテナによって、コストを抑えつつ、ゲームサーバのカスタマイズに必要なユーザ 体験を維持することができると考えている。 ゲームインスタンスのコンテナ化 今後のやっていきたいこと
まとめ
まとめ • ロリポップ!for Gamersというゲームサーバを提供するサービ スをリリースしました! • SREの視点での技術選定 • 今後やっていきたいこと「システムコンテナ」
31 Thank You! Thank You! GMOペパボのSREに興味がある方は @takumakume までご連絡ください! カジュアル面談でもお待ちしております。