Slide 1

Slide 1 text

大規模/長期運用プロジェクト が抱える課題への チーム、個人の取り組み 關 涼介

Slide 2

Slide 2 text

氏名  : 部署  : 自己紹介 2020年に新卒入社してから現在まで 『白猫テニス』、『白猫プロジェクト NEW WORLD'S』(以降白猫)の運用に携わる 關 涼介 技術基盤本部 第1バックエンドエンジニア部 第1グループ 第1チーム 2

Slide 3

Slide 3 text

大規模/長期運用プロジェクトが抱える課題に対して  チームとしてどのように取り組んだか  その中で新卒エンジニアが行ったこと 3 今回の話題

Slide 4

Slide 4 text

「片手で簡単!爽快アクション」 リリース日は2014年7月14日。 今年の7月で9周年を迎えた。 4 白猫プロジェクトNEW WORLD’S

Slide 5

Slide 5 text

「片手で簡単!爽快アクション」 リリース日は2014年7月14日。 今年の7月で9周年を迎えた。 5 白猫プロジェクトNEW WORLD’S 発表をするに当たって白猫に関わる人を 社内ツールで調べてみました→

Slide 6

Slide 6 text

「片手で簡単!爽快アクション」 リリース日は2014年7月14日。 今年の7月で9周年を迎えた。 6 白猫プロジェクトNEW WORLD’S 発表をするに当たって白猫に関わる人を 社内ツールで調べてみました→ 100名over

Slide 7

Slide 7 text

長期運用・大規模開発の課題でイメージされるもの 7 今回の話題

Slide 8

Slide 8 text

長期運用・大規模開発の課題でイメージされるもの 8 今回の話題 ・仕様やコードが複雑化している? ・機能に精通するスペシャリストがいて属人化している? ・新メンバーのキャッチアップが難しい? ・サーバーの処理効率も劣化していく? ・開発人数も多くて関われる範囲が狭い?

Slide 9

Slide 9 text

長期運用・大規模開発の課題 9 今回の話題 ①キャッチアップコスト ②サーバー負荷

Slide 10

Slide 10 text

①キャッチアップコスト 10

Slide 11

Slide 11 text

・長期運用するためには人材の流動を見越したシステムが必要 ・一方、年々仕様やコードは増加していきキャッチアップコストが  上昇する傾向がある 11 ①キャッチアップコスト ・情報を整理して共有する ・コードの複雑化を防ぐ

Slide 12

Slide 12 text

情報を整理して共有する ・情報の集約 ・管理ツールの充実 12 ①キャッチアップコスト

Slide 13

Slide 13 text

情報を整理して共有する ・情報の集約 ・管理ツールの充実 13 ①キャッチアップコスト ~ 新規・追加機能の説明 ~

Slide 14

Slide 14 text

情報を整理して共有する ・情報の集約 ・管理ツールの充実 14 ①キャッチアップコスト

Slide 15

Slide 15 text

情報を整理して共有する ・情報の集約 ・管理ツールの充実  個人として  情報集約やツール作成だけでなく、  前提としてフローの整理や要望の収集にも取り組み  セクション間でのやり取りへ力を入れた 15 ①キャッチアップコスト

Slide 16

Slide 16 text

コードの複雑化を防ぐ ・システム構成の見直し ・複雑化したコードの改修/新規作成 16 ①キャッチアップコスト

Slide 17

Slide 17 text

コードの複雑化を防ぐ ・システム構成の見直し ・複雑化したコードの改修/新規作成 各レイヤーやクラスが大きな意味を持っていることが多かった  →役割に専念できず肥大化する  →依存関係も複雑に 17 ①キャッチアップコスト

Slide 18

Slide 18 text

コードの複雑化を防ぐ ・システム構成の見直し ・複雑化したコードの改修/新規作成 先程の見直しを元にコードを再構築  →特にミッションやスコアアタックなどは、   機能追加が起こりやすく複雑化しやすかった 18 ①キャッチアップコスト

Slide 19

Slide 19 text

コードの複雑化を防ぐ ・システム構成の見直し ・複雑化したコードの改修/新規作成  個人として  コードレビューや設計相談を通して新しい構成についてインプット  スコアアタック周りは複雑化部分を回避した新機能を作成 19 ①キャッチアップコスト

Slide 20

Slide 20 text

<取り組み> 情報を整理して共有する ・情報の集約 ・管理ツールの充実 コードの複雑化を防ぐ ・システム構成の見直し ・複雑化したコードの改修/新規作成 20 ①キャッチアップコスト

Slide 21

Slide 21 text

<効果>   チーム ・前提であるキャッチアップコスト低下  ・脱属人化  ・フローの改善 ・不要な工数を削減   個人 ・質問される機会が増え価値発揮に繋がる ・保守性/柔軟性の高いコードの書き方を学べる 21 ①キャッチアップコスト

Slide 22

Slide 22 text

②サーバー負荷 22

Slide 23

Slide 23 text

サーバー負荷は年々増加しますが、 負荷が高い状態ではサーバーダウンリスクが高まります それに対応するため負荷対策チームが存在し、メンバーはイベント開発と 並行しながら負荷の対策を行っています 23 ②サーバー負荷 ・キャパシティプランニング ・毎日の負荷見積もり ・定例

Slide 24

Slide 24 text

キャパシティプランニング ・大規模イベント(コラボや周年など)に備えて  事前にアクセス見積もりをして、対策をしておくもの ・プランナー、インフラなど各所と連携して対応していく 詳しくは過去のconnpass発表で!   24 ②サーバー負荷

Slide 25

Slide 25 text

毎日の見積もり ・autoscaleも導入してはいるものの、  それだけでは崖のようなスパイクには耐えられない  →事前にスケジューリングし台数を増やしておく  →リリースイベントの影響度を把握する必要がある 25 ②サーバー負荷

Slide 26

Slide 26 text

定例 ・週一でサーバーの処理効率をapi毎にみる(APMにはdatadogを活用) ・不審な負荷の変化があればコードなのかデータなのか原因を調査し改善する 26 ②サーバー負荷

Slide 27

Slide 27 text

定例(事例) ・無限討伐クエストのトップ画面に遷移する時に非常に重い処理が見つかる ・調査をしていくとトップ画面で最終階までのランダム報酬を全て計算していた ・必要データ/不要データを整理することでレイテンシが改善した 27 ②サーバー負荷 1 階 6 階 2 階 3 階 5 階 4 階 … 7 階 ランダム報酬を最初に全て計算 無限討伐クエスト・・・  最大何百階とあるダンジョンを  1階層ずつ攻略するイベント

Slide 28

Slide 28 text

定例(事例) ・無限討伐クエストのトップ画面に遷移する時に非常に重い処理が見つかる ・調査をしていくとトップ画面で最終階までのランダム報酬を全て計算していた ・必要データ/不要データを整理することでレイテンシが改善した 28 ②サーバー負荷

Slide 29

Slide 29 text

<取り組み> 負荷対策チームを作成 ・キャパシティプランニング ・毎日の負荷見積もり ・定例 29 ①キャッチアップコスト

Slide 30

Slide 30 text

<効果>   チーム ・サーバーリスク/コストの低下 ・プレイ体験向上   個人 ・イベント全体への理解 ・コード全体への理解 30 ②サーバー負荷

Slide 31

Slide 31 text

  チームとして得られたこと ・人材が流動可能な体制 ・不要工数/コストの削減によりクリエイティブ部分に力をいれられるように   個人として意識していたことと成長 ・ニーズの把握や、チームの流れの理解を意識してきました  →視野の広さ、自身の把握できる範囲の広さ  →より責任のある対応を任せられる、企画へ早期段階から参加できるなど 31 取り組みを通して

Slide 32

Slide 32 text

● 課題 ○ キャッチアップコストの増加 ○ サーバー負荷の増加 ● 取り組み ○ キャッチアップコスト ■ 情報の整理と共有 ■ コードの複雑化防止 ○ サーバー負荷 ■ 負荷対策チームを作り対応 ● 効果 ○ より良いチーム体制 ○ 個人として成長 32 まとめ

Slide 33

Slide 33 text

ありがとうございました 33