Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

禍つヴァールハイトを支えるデータ更新作業について

48 views

Published on

KLab福岡Meetup
「禍つヴァールハイトを支えるデータ更新作業について」
データ更新作業をどのようにしているのか解説します

Published in: Technology
  • Be the first to comment

  • Be the first to like this

禍つヴァールハイトを支えるデータ更新作業について

  1. 1. 禍つヴァールハイト を支える データ更新作業について 2019-06-05 作田政幸
  2. 2. 自己紹介 名前:作田 政幸(さくた まさゆき) 本来は違うPJにいるサーバーエンジニア(東京勤務) 運用について考えるのが好き 福岡では去年のCEDEC+KYUSHU2018で全く別の内容で講演 している
  3. 3. とある日のこと・・・ プロデューサー: 「データ更新について考えないと いけないけど、 仕組み的にまだ十分に 考えられていない」
  4. 4. とある日のこと・・・ 私:「( ゚д゚)ポカーン」
  5. 5. その後 PJ掛け持ちで データ更新フローの 改善に向けて 作業を始めました
  6. 6. 今回のテーマ: 今回はリリース(4/23)までに データ更新作業を改善した 話をします
  7. 7. ここでいうデータとは ● ゲーム内のデータ(マスタデータ)のことを表します ● アップデートの度にゲーム内データ更新を入れています ● ここ最近ですと、5章追加(5/10)、シロちゃんコラボ(5/29)のた めに大きくデータの更新を入れました
  8. 8. 改善前の話
  9. 9. 改善前の話 ● シナリオ、バトルなどそれぞれの画面において対応するスプ レッドシートが存在しておりプランナーさんが入力
  10. 10. 改善前の話 ● そのスプレッドシートを各サーバー環境(2環境あります)に開 発者用のwebツールを使ってアップロードしていく ● シート自体はバトル、シナリオ(章ごと)などで分かれているの で全部で100枚近くある 開発用サーバー  本番用サーバー
  11. 11. 改善前の話 ● 各サーバーにつながるandroid, iOSバイナリを作ることでゲー ムが遊べる 開発用サーバー  本番用サーバー
  12. 12. 改善前の話 ● 私がPJ(まがつ)に来てこの運用方法には気になるところがあ りました ● ここで私が気になったことは3つありました
  13. 13. 改善前の話 1.データの保全が されていない
  14. 14. データの保全性 ● ゲーム内のデータ全体を表す状態が各サーバーにしかない ○ これではデータを切り戻すのが難しい ■ 急遽シートを元の状態に戻す事態も起こり得る ○ また、ある時点で本番に出たデータを見たいときもある (ユーザーサポートなど) 開発用サーバー  本番用サーバー
  15. 15. 改善前の話 2.時期に応じた データの切り分けが出来ない
  16. 16. 時期に応じたデータの切り分けが出来ない ● シートでデータを管理しているが中には全ての行アップロード してはいけないシートもある ● 例:メインクエストの章一覧シート
  17. 17. 時期に応じたデータの切り分けが出来ない ● 本番でリリースしているのが1-4章とした場合、 ○ 本番では1-4章のデータにしたいが、テストのために5章の データも入れて確認したいときもあるので都度シート編集 が必要になる
  18. 18. 改善前の話 3.サーバー環境が少ない
  19. 19. サーバー環境が少ない ● デバッグ用として他にもサーバーがあったがそれらのサー バーにはサーバープログラムしか更新できず、ゲーム内デー タは更新できなかった 開発用サーバー ○ 更新出来る 開発用サーバー2 開発用サーバー3 ☓ 更新出来ない ☓ 更新出来ない
  20. 20. サーバー環境が少ない ● 先程の、1-4章のデータの環境、5章も入っているデータの環 境、というように様々なデータの状態でテストするためには多く の環境が必要である 開発用サーバー ○ 更新出来る 開発用サーバー2 開発用サーバー3 ☓ 更新出来ない ☓ 更新出来ない
  21. 21. 問題点 ● この3つの問題点があるまま実際の運用に入るとどうなるで しょうか? データの保全がされていない 時期に応じたデータの切り分けが出来ない サーバー環境が少ない
  22. 22. 問題点 ● 開発チーム内では複数のリリース日でのテストを同時並行で 実施しています ○ 1週間後 ○ 2週間後 ○ 1ケ月後 ● 本番用サーバーは実際のプレイヤーが遊んでいるデータと同 じにしているので環境が足りなくなります 開発用サーバー  本番用サーバー
  23. 23. 問題点 ● また、データを入れ替えようとしてもシートを1枚1枚アップ デートして変える方式なので、急遽 「1ケ月先のテストをしていたけど、直近のテストをしたい」 ● となってもデータを入れ替えるのが大変です(データだけでなく プログラムの変更もあるかもしれません) 開発用サーバー
  24. 24. 問題点 ● 簡単に入れ替えやすくなるとするとシートが増殖します 開発用サーバー 明日出す シナリオデータ 来週出す シナリオデータ 再来週出す シナリオデータ
  25. 25. 問題点 ● すると管理には限界があるので結果として本番で事故しやすく なります 本番用サーバー どれをアップロードす ればいいか?
  26. 26. 問題点 ● 以下問題点を解消する方法を考えました データの保全がされていない 時期に応じたデータの切り分けが出来ない サーバー環境が少ない
  27. 27. 改善した話
  28. 28. 改善した話 ● まずは環境を増やしました 開発用サーバー 開発用サーバー2 開発用サーバー13
  29. 29. 改善した話 ● ただ先ほど話があったように更新先が限定されている 開発用サーバー 開発用サーバー2 開発用サーバー13 ☓ 更新出来ない ☓ 更新出来ない ○ 更新出来る
  30. 30. 改善した話 ● また、保全されていない問題もあったので・・・ 開発用サーバー 開発用サーバー2 開発用サーバー13 ☓ 更新出来ない ☓ 更新出来ない ○ 更新出来る
  31. 31. 改善した話 ● Gitを使ってデータを置くことにしました(更新はJenkins) 開発用サーバー 開発用サーバー2 開発用サーバー13
  32. 32. 改善した話 ● また、データの切り分けについては、リリース日を表すデータ を入れることで解消出来るようにしました ● (md-yyyymmdd という書式でgitへの出力時にリリース日を指 定する)
  33. 33. 改善した話 ● Gitのブランチに関しては、シートで出力したデータをリリース 日ごとに管理  yyyy年mm月dd日用ブランチ yyyy年mm月ee日用ブランチ yyyy年nn月ff日用ブランチ
  34. 34. 改善した話 ● またシートのデータ出力する際ブランチを該当リリースからブ ランチを切るところまではJobでするのでPRも簡単に提出出来 る yyyy年mm月dd日用ブランチ Jenkinsで作ったブランチ Pull Request
  35. 35. 改善した話 ● また、各サーバーに展開したデータについてはgitのリビジョン (コミットID)で残すようにした(Jenkinsでの展開時に自動で記 録する仕組み)
  36. 36. こうして ● データ周りを整備して禍つヴァールハイトが無事にリリース出 来ました!
  37. 37. まとめ ● データの保全がされていない ○ → Gitを使ったマスタデータ管理 ● 時期に応じたデータの切り分けが出来ない ○ → 過去のデータ更新履歴を残す仕組み ● サーバー環境が少ない ○ → Jenkinsを使ったデータ更新作業

×