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
大規模/長期運用プロジェクト が抱える課題への チーム、個人の取り組み
Search
COLOPL Inc.
October 31, 2023
Technology
1
1.5k
大規模/長期運用プロジェクト が抱える課題への チーム、個人の取り組み
COLOPL Inc.
October 31, 2023
Tweet
Share
More Decks by COLOPL Inc.
See All by COLOPL Inc.
PHPStan をできる限り高速化してみる
colopl
0
470
コロプラ最新作インフラ構成について
colopl
0
150
Cloud Spanner 導入で実現した快適な開発と運用について
colopl
1
1.9k
コロプラのオンボーディングを採用から語りたい
colopl
7
2.2k
怖くない!ゼロから始めるPHPソースコードコンパイル入門
colopl
1
430
大規模トラフィックを支える ゲームバックエンドの課題と構成の変遷 ~安定したゲーム体験を実現するために~
colopl
3
5.5k
長期運用プロジェクトでのMySQLからTiDB移行の検証
colopl
3
1.7k
ゲームを支えるバックエンドエンジニアのリアルを公開!
colopl
1
1.5k
コロプラ_SRE_LCE_ゲームバックエンド_性能との戦い
colopl
0
1k
Other Decks in Technology
See All in Technology
AWS DDoS攻撃防御の最前線
ryutakondo
1
130
MCP認可の現在地と自律型エージェント対応に向けた課題 / MCP Authorization Today and Challenges to Support Autonomous Agents
yokawasa
5
1.8k
隙間時間で爆速開発! Claude Code × Vibe Coding で作るマニュアル自動生成サービス
akitomonam
3
250
モバイルゲームの開発を支える基盤の歩み ~再現性のある開発ラインを量産する秘訣~
qualiarts
0
1.1k
AI によるドキュメント処理を加速するためのOCR 結果の永続化と再利用戦略
tomoaki25
0
410
JAWS AI/ML #30 AI コーディング IDE "Kiro" を触ってみよう
inariku
3
290
Google Cloud で学ぶデータエンジニアリング入門 2025年版 #GoogleCloudNext / 20250805
kazaneya
PRO
14
3k
AIに目を奪われすぎて、周りの困っている人間が見えなくなっていませんか?
cap120
1
430
20250807_Kiroと私の反省会
riz3f7
0
160
帳票構造化タスクにおけるLLMファインチューニングの性能評価
yosukeyoshida
1
230
Lambda management with ecspresso and Terraform
ijin
2
140
S3 Glacier のデータを Athena からクエリしようとしたらどうなるのか/try-to-query-s3-glacier-from-athena
emiki
0
180
Featured
See All Featured
The Straight Up "How To Draw Better" Workshop
denniskardys
235
140k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
34
3.1k
VelocityConf: Rendering Performance Case Studies
addyosmani
332
24k
How to train your dragon (web standard)
notwaldorf
96
6.1k
Making Projects Easy
brettharned
117
6.3k
Writing Fast Ruby
sferik
628
62k
For a Future-Friendly Web
brad_frost
179
9.9k
Fantastic passwords and where to find them - at NoRuKo
philnash
51
3.4k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
15
1.6k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
656
60k
jQuery: Nuts, Bolts and Bling
dougneiner
63
7.8k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
3.9k
Transcript
大規模/長期運用プロジェクト が抱える課題への チーム、個人の取り組み 關 涼介
氏名 : 部署 : 自己紹介 2020年に新卒入社してから現在まで 『白猫テニス』、『白猫プロジェクト NEW WORLD'S』(以降白猫)の運用に携わる 關
涼介 技術基盤本部 第1バックエンドエンジニア部 第1グループ 第1チーム 2
大規模/長期運用プロジェクトが抱える課題に対して チームとしてどのように取り組んだか その中で新卒エンジニアが行ったこと 3 今回の話題
「片手で簡単!爽快アクション」 リリース日は2014年7月14日。 今年の7月で9周年を迎えた。 4 白猫プロジェクトNEW WORLD’S
「片手で簡単!爽快アクション」 リリース日は2014年7月14日。 今年の7月で9周年を迎えた。 5 白猫プロジェクトNEW WORLD’S 発表をするに当たって白猫に関わる人を 社内ツールで調べてみました→
「片手で簡単!爽快アクション」 リリース日は2014年7月14日。 今年の7月で9周年を迎えた。 6 白猫プロジェクトNEW WORLD’S 発表をするに当たって白猫に関わる人を 社内ツールで調べてみました→ 100名over
長期運用・大規模開発の課題でイメージされるもの 7 今回の話題
長期運用・大規模開発の課題でイメージされるもの 8 今回の話題 ・仕様やコードが複雑化している? ・機能に精通するスペシャリストがいて属人化している? ・新メンバーのキャッチアップが難しい? ・サーバーの処理効率も劣化していく? ・開発人数も多くて関われる範囲が狭い?
長期運用・大規模開発の課題 9 今回の話題 ①キャッチアップコスト ②サーバー負荷
①キャッチアップコスト 10
・長期運用するためには人材の流動を見越したシステムが必要 ・一方、年々仕様やコードは増加していきキャッチアップコストが 上昇する傾向がある 11 ①キャッチアップコスト ・情報を整理して共有する ・コードの複雑化を防ぐ
情報を整理して共有する ・情報の集約 ・管理ツールの充実 12 ①キャッチアップコスト
情報を整理して共有する ・情報の集約 ・管理ツールの充実 13 ①キャッチアップコスト ~ 新規・追加機能の説明 ~
情報を整理して共有する ・情報の集約 ・管理ツールの充実 14 ①キャッチアップコスト
情報を整理して共有する ・情報の集約 ・管理ツールの充実 個人として 情報集約やツール作成だけでなく、 前提としてフローの整理や要望の収集にも取り組み セクション間でのやり取りへ力を入れた 15 ①キャッチアップコスト
コードの複雑化を防ぐ ・システム構成の見直し ・複雑化したコードの改修/新規作成 16 ①キャッチアップコスト
コードの複雑化を防ぐ ・システム構成の見直し ・複雑化したコードの改修/新規作成 各レイヤーやクラスが大きな意味を持っていることが多かった →役割に専念できず肥大化する →依存関係も複雑に 17 ①キャッチアップコスト
コードの複雑化を防ぐ ・システム構成の見直し ・複雑化したコードの改修/新規作成 先程の見直しを元にコードを再構築 →特にミッションやスコアアタックなどは、 機能追加が起こりやすく複雑化しやすかった 18 ①キャッチアップコスト
コードの複雑化を防ぐ ・システム構成の見直し ・複雑化したコードの改修/新規作成 個人として コードレビューや設計相談を通して新しい構成についてインプット スコアアタック周りは複雑化部分を回避した新機能を作成 19 ①キャッチアップコスト
<取り組み> 情報を整理して共有する ・情報の集約 ・管理ツールの充実 コードの複雑化を防ぐ ・システム構成の見直し ・複雑化したコードの改修/新規作成 20 ①キャッチアップコスト
<効果> チーム ・前提であるキャッチアップコスト低下 ・脱属人化 ・フローの改善 ・不要な工数を削減 個人 ・質問される機会が増え価値発揮に繋がる ・保守性/柔軟性の高いコードの書き方を学べる 21
①キャッチアップコスト
②サーバー負荷 22
サーバー負荷は年々増加しますが、 負荷が高い状態ではサーバーダウンリスクが高まります それに対応するため負荷対策チームが存在し、メンバーはイベント開発と 並行しながら負荷の対策を行っています 23 ②サーバー負荷 ・キャパシティプランニング ・毎日の負荷見積もり ・定例
キャパシティプランニング ・大規模イベント(コラボや周年など)に備えて 事前にアクセス見積もりをして、対策をしておくもの ・プランナー、インフラなど各所と連携して対応していく 詳しくは過去のconnpass発表で! 24 ②サーバー負荷
毎日の見積もり ・autoscaleも導入してはいるものの、 それだけでは崖のようなスパイクには耐えられない →事前にスケジューリングし台数を増やしておく →リリースイベントの影響度を把握する必要がある 25 ②サーバー負荷
定例 ・週一でサーバーの処理効率をapi毎にみる(APMにはdatadogを活用) ・不審な負荷の変化があればコードなのかデータなのか原因を調査し改善する 26 ②サーバー負荷
定例(事例) ・無限討伐クエストのトップ画面に遷移する時に非常に重い処理が見つかる ・調査をしていくとトップ画面で最終階までのランダム報酬を全て計算していた ・必要データ/不要データを整理することでレイテンシが改善した 27 ②サーバー負荷 1 階 6 階
2 階 3 階 5 階 4 階 … 7 階 ランダム報酬を最初に全て計算 無限討伐クエスト・・・ 最大何百階とあるダンジョンを 1階層ずつ攻略するイベント
定例(事例) ・無限討伐クエストのトップ画面に遷移する時に非常に重い処理が見つかる ・調査をしていくとトップ画面で最終階までのランダム報酬を全て計算していた ・必要データ/不要データを整理することでレイテンシが改善した 28 ②サーバー負荷
<取り組み> 負荷対策チームを作成 ・キャパシティプランニング ・毎日の負荷見積もり ・定例 29 ①キャッチアップコスト
<効果> チーム ・サーバーリスク/コストの低下 ・プレイ体験向上 個人 ・イベント全体への理解 ・コード全体への理解 30 ②サーバー負荷
チームとして得られたこと ・人材が流動可能な体制 ・不要工数/コストの削減によりクリエイティブ部分に力をいれられるように 個人として意識していたことと成長 ・ニーズの把握や、チームの流れの理解を意識してきました →視野の広さ、自身の把握できる範囲の広さ →より責任のある対応を任せられる、企画へ早期段階から参加できるなど 31 取り組みを通して
• 課題 ◦ キャッチアップコストの増加 ◦ サーバー負荷の増加 • 取り組み ◦ キャッチアップコスト
▪ 情報の整理と共有 ▪ コードの複雑化防止 ◦ サーバー負荷 ▪ 負荷対策チームを作り対応 • 効果 ◦ より良いチーム体制 ◦ 個人として成長 32 まとめ
ありがとうございました 33