大規模/長期運用プロジェクトが抱える課題へのチーム、個人の取り組み關 涼介
View Slide
氏名 :部署 :自己紹介2020年に新卒入社してから現在まで『白猫テニス』、『白猫プロジェクト NEWWORLD'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