Slide 1

Slide 1 text

Copyright 2019 DELiGHTWORKS. 大規模ゲーム開発環境を支える サーバー・インフラアーキテクチャへの取り組み事例

Slide 2

Slide 2 text

Copyright 2019 DELiGHTWORKS. はじめに… 本セッションの「撮影」「SNS共有」が可能です 資料は公開予定です 前半はインフラ周り、後半はサーバー周りについて話をさせていた だきます 弊社の事例として紹介します、同様の状況をお持ちの方々の参考と なれば幸いです

Slide 3

Slide 3 text

Copyright 2019 DELiGHTWORKS. 会社紹介 会社名:ディライトワークス株式会社 設立: 2014年1月22日 従業員数: 366名 (単体・2019年7月時点) Fate/Grand Order 新ゲームプロジェクト

Slide 4

Slide 4 text

Copyright 2019 DELiGHTWORKS. 大規模ゲーム開発環境を支える サーバー・インフラアーキテクチャへの取り組み事例

Slide 5

Slide 5 text

Copyright 2019 DELiGHTWORKS. 自己紹介 鈴木 健生 (すずき たけお) これまでゲーム業界で様々な職種の経験を重ね、 2019年 6月にディライトワークス株式会社にSREとして入社 開発者の業務を効率化する為の自動化に取り組み中

Slide 6

Slide 6 text

Copyright 2019 DELiGHTWORKS. アジェンダ (前半) 5 ➢ インフラのこれまでの変遷と取り組みの事例 ⚫ 大量コンテンツ配信について ⚫ ゲームデータベースについて ⚫ デプロイについて ➢ 開発環境構築の効率化について

Slide 7

Slide 7 text

Copyright 2019 DELiGHTWORKS. 6 インフラのこれまでの変遷と 取り組みの事例

Slide 8

Slide 8 text

Copyright 2019 DELiGHTWORKS. 弊社採用技術の変遷 7 言語 OS コンテンツ 配信 DB 環境

Slide 9

Slide 9 text

Copyright 2019 DELiGHTWORKS. 弊社採用技術の変遷 8 言語 OS コンテンツ 配信 DB 環境

Slide 10

Slide 10 text

Copyright 2019 DELiGHTWORKS. 大量コンテンツ配信について 1 9 マルチCDN化で可用性を高め、高速化・安定化 Storage Server Smartphone CDN 単体のCDN経由 Storage Server Smartphone CDN1 CDN2 複数のCDNを利用

Slide 11

Slide 11 text

Copyright 2019 DELiGHTWORKS. 大量コンテンツ配信について 2 10 多方面のCDN有効活用により、全体的な速度の向上へ マスターデータの取得 Game Server Smartphone ゲームAPIのコール Smartphone CDN Game Server Storage Server 負荷軽減+速度向上 Game Server Smartphone ゲームサーバから取得 Smartphone CDN Game Server 応答速度の向上

Slide 12

Slide 12 text

Copyright 2019 DELiGHTWORKS. 垂直分割 データベースについて 高性能MySQL RDS(MySQL) ※イメージです Aurora採用 リードレプリカ使用 ディスク自動追加 適切な台数設定により、不安の無い状態! 水平分割

Slide 13

Slide 13 text

Copyright 2019 DELiGHTWORKS. 快適…!!

Slide 14

Slide 14 text

Copyright 2019 DELiGHTWORKS. データベースについて – 資料 - ➢ 詳細は弊社エンジニアが過去に講演した資料がございます ➢ Fate/Grand Orderにおける大規模なデータベース移行と負荷試験 /今井 https://www.slideshare.net/MorioImai/fategrand-order ➢ これで怖くない!?大規模環境で体験するDB負荷対策 ~垂直から水平の彼方へ~ /甲 https://www.slideshare.net/hideakikabuto/db-108716671 ➢ 想定外な規模へと成長し続けるサービスを支えるサーバ開発・運用の軌跡 ~ DBの縦横分割スケーリング ~ /髙屋 https://speakerdeck.com/walkure/history-of-a-large-scale-web-api-service-development-and-operation- with-vertical-and-horizontal-database-partitioning

Slide 15

Slide 15 text

Copyright 2019 DELiGHTWORKS. コンテナ化について 14 テストの容易化、環境の安定化、デプロイの高速化 Windows Servers CI ソースを各サーバー内で展開 ZIP ソース管理 自動化ツール Linux Servers ビルドしたコンテナを設置するだけ CI ソース管理 コンテナ 自動化ツール

Slide 16

Slide 16 text

Copyright 2019 DELiGHTWORKS. インフラ事例 - まとめ - 15 ➢ コンテンツ状況により、必要となるインフラも変化を求められます 問題の想定や検証/対策等を常にする事が大切 ➢ CDNはコンテンツ配信のキャッシュ用途だけではなく、色々な面で 恩恵を受けることが出来る ➢ コンテナ利用は効率化やコスト軽減効果等色々な効果が期待出来る

Slide 17

Slide 17 text

Copyright 2019 DELiGHTWORKS. アジェンダ(前半) 16 ➢ インフラのこれまでの変遷と取り組みの事例 ⚫ 大量コンテンツ配信について ⚫ ゲームデータベースについて ⚫ デプロイについて ➢ 開発環境構築の効率化について

Slide 18

Slide 18 text

Copyright 2019 DELiGHTWORKS. 17 開発環境構築の効率化について

Slide 19

Slide 19 text

Copyright 2019 DELiGHTWORKS. 開発環境について 18 ➢ 開発用テスト用環境どのぐらい用意してますか? ➢ 環境を構築する手間、どうですか? ➢ 効率化の為、最近取り組んだ事例を紹介

Slide 20

Slide 20 text

Copyright 2019 DELiGHTWORKS. 弊社開発環境について 19 ➢ 弊社では、以下の担当者向けに個別の環境を用意 ⚫ QA ⚫ プランナー ⚫ デザイナー ⚫ エンジニア ➢ これを必要に応じ立てたり消したりしてます

Slide 21

Slide 21 text

Copyright 2019 DELiGHTWORKS. 以前までの開発環境運用 20 エンジニア (サーバー/インフラ) 利用者 (QA/プランナー) チャットによる、環境作成依頼 ・新規?既存? ・新規→インフラ構築 ・指定バージョンのデプロイ ・正常動作確認後、提供 環境

Slide 22

Slide 22 text

Copyright 2019 DELiGHTWORKS. 以前までの開発環境運用 21 エンジニア (サーバー/インフラ) 利用者 (QA/プランナー) チャットによる、環境作成依頼 ・新規?既存? ・新規→インフラ構築 ・指定バージョンのデプロイ ・正常動作確認後、提供 環境

Slide 23

Slide 23 text

Copyright 2019 DELiGHTWORKS. こんな開発環境運用あるある 22 ➢ 依頼相手と連絡がとれない ➢ 承認者と連絡がとれない ➢ 依頼内容の間違い ➢ 急な差し込み依頼でエンジニアの手が取られる ➢ 作成依頼を貰ったが、提供時には不要になってた ➢ …とにかく時間や手戻りが発生

Slide 24

Slide 24 text

Copyright 2019 DELiGHTWORKS. 23 この手間、ずっと続けるの?

Slide 25

Slide 25 text

Copyright 2019 DELiGHTWORKS. 24 否

Slide 26

Slide 26 text

Copyright 2019 DELiGHTWORKS. 25 ちから 自動化がほしいか?

Slide 27

Slide 27 text

Copyright 2019 DELiGHTWORKS. 26 めっちゃ欲しい

Slide 28

Slide 28 text

Copyright 2019 DELiGHTWORKS. 27 なので、作りました!!

Slide 29

Slide 29 text

Copyright 2019 DELiGHTWORKS. 現在の開発環境運用 28 利用者 承認者 ②承認 (チャット) ③Job実行 ④インフラ構築 ⑤デプロイ ⑥ソース適用 ⑦環境テスト ⑧完了通知 (チャット) ①WebUIから依頼 環境 Terraform Jenkins GitHub

Slide 30

Slide 30 text

Copyright 2019 DELiGHTWORKS. 現在の開発環境運用 - これにより - 29 ➢ 運用周りで大きな改善 ➢ 超絶劇的速度向上! ➢ ヒューマンエラーも軽減! 新規作成 環境更新 再起動 環境削除 1日〜2日 1日 数時間 1週間程度 約20分 約6分 約5分 約10分

Slide 31

Slide 31 text

Copyright 2019 DELiGHTWORKS. 30 めでたしめでたし

Slide 32

Slide 32 text

Copyright 2019 DELiGHTWORKS. 31 と…思ってたら

Slide 33

Slide 33 text

Copyright 2019 DELiGHTWORKS. 課題が生まれました 32 ➢ Jenkinsを利用する事の運用コスト ⚫ オンプレでもIaaSでも監視やメンテが必須 ➢ 入力フォーム式による入力ミス ⚫ パラメータが手入力式で間違える ➢都度都度、エンジニアの手が止まる

Slide 34

Slide 34 text

Copyright 2019 DELiGHTWORKS. 33 その時間次もかけ続けるの?

Slide 35

Slide 35 text

Copyright 2019 DELiGHTWORKS. 34 否 です…

Slide 36

Slide 36 text

Copyright 2019 DELiGHTWORKS. 35 じかん 時間がほしいか?

Slide 37

Slide 37 text

Copyright 2019 DELiGHTWORKS. 36 欲しい

Slide 38

Slide 38 text

Copyright 2019 DELiGHTWORKS. 37 新コンテンツでの目標!! サーバーレス 入力ミスの撲滅

Slide 39

Slide 39 text

Copyright 2019 DELiGHTWORKS. サーバーレスに向けJenkinsを置き換えよう 38 ➢ 情報入力WebUI → SlackApps + AWS Lambda ➢ ジョブの実行 → CircleCI ➢ Terraform → Terraform ➢ 環境のチェック → CircleCI ➢ 新要素! コンテナのbuild → AWS CodeBuild ➢ 新要素! コンテナデプロイ → AWS CodePipeline

Slide 40

Slide 40 text

Copyright 2019 DELiGHTWORKS. なんでSlackAppsをUIに? 39 ➢ 社内共通コミュニケーションツール ➢ コミュニケーションの流れで環境構築 ➢ あらゆる情報がすべて1アプリで完結 ➢ SlackIDでユーザー管理 ➢ どこでも申請と承認が可能 ➢ 使ってみたかった

Slide 41

Slide 41 text

Copyright 2019 DELiGHTWORKS. なんでCircleCIを選択? 40 ➢ コスト面で利点 ⚫ Performance (従量課金)プランは便利 ➢ 並列実行環境が利用出来る ➢ iOS向けのビルドも出来る ➢ クラウドベンダーによらないCI ➢ これも、使ってみたかった

Slide 42

Slide 42 text

Copyright 2019 DELiGHTWORKS. 入力ミスに対しての取り組み 41 ➢ サーバー名、ブランチ名等情報が手入力 ➢ サーバー名 ⚫ サーバー情報マスターを作成し、操作時にリスト化、選択式に ➢ ブランチ名 ⚫ ブランチ情報をGitHubのAPIを叩いて取得し、それをリスト化し て選択式に ➢ 選択式にすることでアナログなミスの排除

Slide 43

Slide 43 text

Copyright 2019 DELiGHTWORKS. 42 こうなりました!!

Slide 44

Slide 44 text

Copyright 2019 DELiGHTWORKS. 新規コンテンツの開発環境運用 43 利用者 承認者 ③承認 (チャット) ⑧環境テスト ①SlackAppsから 情報入力 ④Job実行 ⑥ソース取得 ビルド ⑨完了通知 環境 ⑤インフラ構築 Terraform ⑦コンテナ適用 ②ブランチ 情報取得 GitHub

Slide 45

Slide 45 text

Copyright 2019 DELiGHTWORKS. 44 無事完成!!

Slide 46

Slide 46 text

Copyright 2019 DELiGHTWORKS. 45 「複雑になってる」って?

Slide 47

Slide 47 text

Copyright 2019 DELiGHTWORKS. 46 自動化で手間が軽減したので OK!

Slide 48

Slide 48 text

Copyright 2019 DELiGHTWORKS. 新規の開発環境運用 - これにより - 47 ➢ 目的であった問題点の解決 ⚫ Jenkinsを利用せず、すべてサーバレスでの動作 ⚫ 環境指定が選択式なので、誤字脱字ミスの解消 ➢ それ以外として ⚫ Slack上で情報が見えるので、他の人の動きも見える ⚫ エラー通知もSlack専用グループに通知で追いやすく ⚫ 旧環境からの高速化…はそれほどならず。でも高速化の余地あり

Slide 49

Slide 49 text

Copyright 2019 DELiGHTWORKS. 新規の開発環境運用 – 悩んだ所 - 48 ➢ SlackAppsダイアログの3秒ルール ⚫ ダイアログ表示の[Submit]には3秒で応答しないといけない ⚫ Lambda内部でLambdaを非同期で呼び出し ➢ Lambdaへのソースデプロイ ⚫ 自前でデプロイコマンドを作成 ➢ 1つのTerraformレシピで複数マシン名への対応 ⚫ リソース情報ファイルをS3に設置。それを init 時に指定

Slide 50

Slide 50 text

Copyright 2019 DELiGHTWORKS. 新規の開発環境運用 – 悩んだ所2 - 49 ➢ CircleCIAPIでJobを実行すると1Job内での並列動作が出来ない 問題 ⚫ 現在未対応、プレビュー版のAPIでは対応が可能 ➢ CircleCIからGitHubEnterprise Serverにアクセス出来ない問 題 ⚫ GitHubEnterprise Cloudを利用

Slide 51

Slide 51 text

Copyright 2019 DELiGHTWORKS. 新規の開発環境運用 - これにより - 50 まだ稼働開始直後! 日々、改善中です!

Slide 52

Slide 52 text

Copyright 2019 DELiGHTWORKS. 開発環境運用 – まとめ - 51 ➢ 人同士の情報伝達や人の手での確認はリスクもコストも高い。で すが、汎用的な運用では自動化する事で避けることができる ➢ まずはスモールスタート。そして、必要な時にリソース追加。 サーバーレスは積極的に導入して行く ➢ 人力入力フォームはエラーの温床なりがち、単純化する事により エラーを回避できる

Slide 53

Slide 53 text

Copyright 2019 DELiGHTWORKS. 前半 インフラ まとめ 52 ➢ インフラを支える技術は日々進化。その中から取捨選択できるよ うに想定と検証を重ね、適したツールを取り込んでいく事が大事 ➢ コンテンツの質を高める要件の一つはテストを重ねる事。テスト を何度も重ねる為には効率化が必須 ➢ 全てのベースはインフラが支えている。そのベースを失わない為 にも日々検証と改善に取り組むことが必然

Slide 54

Slide 54 text

Copyright 2019 DELiGHTWORKS. 53 では後半へ

Slide 55

Slide 55 text

Copyright 2019 DELiGHTWORKS. 54 大規模ゲーム開発環境を支える サーバー・インフラアーキテクチャへの取り組み事例

Slide 56

Slide 56 text

Copyright 2019 DELiGHTWORKS. 自己紹介 王 秦如(Ou Shinjo) ディライトワークス株式会社 技術部 サーバープログラマー これまではクライアント、サーバー、インフラ(ほんの数か月)エンジ ニアを経験、現在は自動化回りを担当

Slide 57

Slide 57 text

Copyright 2019 DELiGHTWORKS. アジェンダ(後半) 採用技術の変遷 ⚫ 言語の過去と今 ⚫ OSの過去と今 クラウド環境の新しい取り組み 効率化への新しい取り組み ⚫ 開発環境編 ⚫ CI/CD環境編 まとめ

Slide 58

Slide 58 text

Copyright 2019 DELiGHTWORKS. アジェンダ(後半) 採用技術の変遷 ⚫ 言語の過去と今 ⚫ OSの過去と今 クラウド環境の新しい取り組み 効率化への新しい取り組み ⚫ 開発環境編 ⚫ CI/CD環境編 まとめ

Slide 59

Slide 59 text

Copyright 2019 DELiGHTWORKS. 弊社採用技術の変遷(後半) 58 言語 OS コンテンツ 配信 DB 環境

Slide 60

Slide 60 text

Copyright 2019 DELiGHTWORKS. アジェンダ(後半) 採用技術の変遷 ⚫ 言語の過去と今 ⚫ OSの過去と今 クラウド環境の新しい取り組み 効率化への新しい取り組み ⚫ 開発環境編 ⚫ CI/CD環境編 まとめ

Slide 61

Slide 61 text

Copyright 2019 DELiGHTWORKS. 言語の変遷 弊社では積極的にC#を利用しています 初期から.NET Frameworkを使ってきました Fate/Grand Order 新ゲームプロジェクト ※Fate/Grand Orderやその他新ゲームプロジェクトもC#を使っています

Slide 62

Slide 62 text

Copyright 2019 DELiGHTWORKS. なぜC# 61 言語機能が多い Visual Studioによるサポートが強力 弊社プログラマーの好み クライアント(Unity)とソースコードを共有できる ジェネリック、静的/動的型付け、LINQ、Unsafeなど便利機能がいっぱい サーバー側の人がクライアント側のソースを読む際の障壁が少なくなる(逆も然り) 参照の表示、インテリセンス、クイックアクション、ブレイクポイントなど 会社立ち上げ時からのエンジニアがC#を好きだった

Slide 63

Slide 63 text

Copyright 2019 DELiGHTWORKS. .NET Frameworkを使った実績 62 Fate/Grand Orderでは基本ゲームサーバー70台構成で動いています (2019年11月時点) ※イベントに合わせて調整も行っています 70

Slide 64

Slide 64 text

Copyright 2019 DELiGHTWORKS. 63 Fate/Grand Orderの大規模イベン ト開催時、 普段の7倍ものアクセスがあった ものの、 問題なく乗り越えました 63 約 7 倍 微 増 .NET Frameworkを使った実績

Slide 65

Slide 65 text

Copyright 2019 DELiGHTWORKS. 64 C#の知見・実績を活かし、新プロジェクトで は.NET Coreを採用

Slide 66

Slide 66 text

Copyright 2019 DELiGHTWORKS. .NET Coreを採用する理由 クロスプラットフォーム Dockerでの構築はしやすい フレームワーク自体の更新頻度は比較的に高い パフォーマンスが改善 Windows・Linux・macOSに対応している .NET Frameworkと比べてパフォーマンスが強化されている C#の最新機能もすぐ使えたりする コンテナ化がよりスムーズに 65

Slide 67

Slide 67 text

Copyright 2019 DELiGHTWORKS. アジェンダ(後半) 採用技術の変遷 ⚫ 言語の過去と今 ⚫ OSの過去と今 クラウド環境の新しい取り組み 効率化への新しい取り組み ⚫ 開発環境編 ⚫ CI/CD環境編 まとめ

Slide 68

Slide 68 text

Copyright 2019 DELiGHTWORKS. OSの変遷 67 Windows Winodwsのアップデートによる再起動が なくなる 長期的に動かし続けるものに向いている ライセンス費用もなくなった Linux

Slide 69

Slide 69 text

Copyright 2019 DELiGHTWORKS. 68 OSの変遷に伴い、クラウド環境、効率化回 りも新しい挑戦へ

Slide 70

Slide 70 text

Copyright 2019 DELiGHTWORKS. アジェンダ(後半) 採用技術の変遷 クラウド環境の新しい取り組み 効率化への新しい取り組み まとめ ⚫ 言語の過去と今 ⚫ OSの過去と今 ⚫ 開発環境編 ⚫ CI/CD環境編

Slide 71

Slide 71 text

Copyright 2019 DELiGHTWORKS. クラウド環境の新しい取り組み 70 Fate/Grand Order AWS Cloud Fate/Grand OrderはAWSを利用 社内の知見を溜めたい 選択肢を増やしたい GCPを利用した新規プロジェクト

Slide 72

Slide 72 text

Copyright 2019 DELiGHTWORKS. クラウド環境の新しい取り組み 71 コンテナ化したので運用の仕方を検討 Google App Engine Google Kubernetes Engine Googleのインフラの上でアプリケーション を作り、実行できるようにするPaaSです Googleのインフラストラクチャを使用して、 コンテナ化されたアプリケーションのデプ ロイ、管理、スケーリングを行うマネージ ド環境です Windows Servers CI ソースを各サーバー内で展開 ZIP ソース管理 自動化ツール

Slide 73

Slide 73 text

Copyright 2019 DELiGHTWORKS. クラウド環境の新しい取り組み 72 フルマネージド 〇 〇 〇 自動スケーリング 〇 〇 〇 C#をサポート × 〇 〇 Dockerイメージの サポート 〇 〇 〇 Google App Engine フレシブル環境 Google Kubernetes Engine Google App Engine スダンダート環境 C#はサポートされて いないので不採用

Slide 74

Slide 74 text

Copyright 2019 DELiGHTWORKS. フルマネージド 〇 〇 〇 自動スケーリング 〇 〇 〇 C#をサポート × 〇 〇 Dockerイメージの サポート 〇 〇 〇 その他 ・VMインスタンスは毎週 再起動します ・長期的に動かし続けるこ とが可能 クラウド環境の新しい取り組み 73 Google App Engine フレシブル環境 Google Kubernetes Engine Google App Engine スダンダート環境 C#はサポートされて いないので不採用 毎週再起動するため不 採用

Slide 75

Slide 75 text

Copyright 2019 DELiGHTWORKS. フルマネージド 〇 〇 〇 自動スケーリング 〇 〇 〇 C#をサポート × 〇 〇 Dockerイメージの サポート 〇 〇 〇 その他 ・VMインスタンスは毎週 再起動します ・長期的に動かし続けるこ とが可能 クラウド環境の新しい取り組み 74 Google App Engine フレシブル環境 Google Kubernetes Engine Google App Engine スダンダート環境 GKEを採用

Slide 76

Slide 76 text

Copyright 2019 DELiGHTWORKS. アジェンダ(後半) 採用技術の変遷 クラウド環境の新しい取り組み 効率化への新しい取り組み まとめ ⚫ 言語の過去と今 ⚫ OSの過去と今 ⚫ 開発環境編 ⚫ CI/CD環境編

Slide 77

Slide 77 text

Copyright 2019 DELiGHTWORKS. 効率化への新しい取り組み ~の前に~ 76 前半のインフラパートでは「開発環境構築の効率化」ついてご紹介しま したが、後半はゲーム開発にフォーカスした事例をご紹介します 前半のインフラパートの事例とプロジェクトも開発要件も異なるため、 効率化に対してのアプローチが違います

Slide 78

Slide 78 text

Copyright 2019 DELiGHTWORKS. アジェンダ(後半) 採用技術の変遷 クラウド環境の新しい取り組み 効率化への新しい取り組み まとめ ⚫ 言語の過去と今 ⚫ OSの過去と今 ⚫ 開発環境編 ⚫ CI/CD環境編

Slide 79

Slide 79 text

Copyright 2019 DELiGHTWORKS. 開発環境の運用に最低限必要なもの 78 一つ以上の開発環境 各開発環境の情報を閲覧できる手段 クライアントから接続する開発環境を選ぶ手段 開発環境の増減に対応できる設計

Slide 80

Slide 80 text

Copyright 2019 DELiGHTWORKS. 以前までの開発環境の運用 79 ➢ 弊社では、以下の担当者向けに個別の環境を用意 ⚫ QA ⚫ プランナー ⚫ デザイナー ⚫ エンジニア ➢ これを必要に応じ立てたり消したりしてます

Slide 81

Slide 81 text

Copyright 2019 DELiGHTWORKS. 以前までの開発環境の運用 80 QA プランナー デザイナー エンジニア 開発環境 決定 弊社では開発アプリに開発環境選択画面を作成し、環 境を選んでからゲームスタートするようにしています 開発環境画面担当者

Slide 82

Slide 82 text

Copyright 2019 DELiGHTWORKS. 以前までの開発環境の運用 81 開発環境 決定 弊社では開発環境画面担当者に開発環境 の情報をまとめ依頼をして手動で追加し てもらいます 開発環境画面担当者 Test01環境の 追加をお願い 依頼者 QA プランナー デザイナー エンジニア

Slide 83

Slide 83 text

Copyright 2019 DELiGHTWORKS. 以前までの開発環境の運用 82 開発環境 決定 開発環境画面担当者 Test01環境の 追加をお願い 依頼者 対応します! 弊社では開発環境画面担当者に開発環境 の情報をまとめ依頼をして手動で追加し てもらいます QA プランナー デザイナー エンジニア Test01

Slide 84

Slide 84 text

Copyright 2019 DELiGHTWORKS. 以前までの開発環境の運用 83 開発環境 決定 開発環境画面担当者 依頼者 海外版環境の 追加をお願 い! ××のテスト 環境追加をお 願い △△のテスト 環境追加をお 願い Test01環境の 追加をお願い □□のテスト 環境追加をお 願い Test02の追加 もお願い 負荷試験環境 の追加も頼む 外部検証環境 の追加も頼む ○○のテスト 環境追加をお 願い デバッグ環境 の追加も! ○○のテスト 環境追加をお 願い QA プランナー デザイナー エンジニア Test01

Slide 85

Slide 85 text

Copyright 2019 DELiGHTWORKS. 以前までの開発環境の運用 84 決定 QA プランナー デザイナー エンジニア Test01 Test02 負荷試験 外部検証 デバッグ フューチャ 開発環境 開発環境画面担当者 依頼者 海外版環境の 追加をお願 い! ××のテスト 環境追加をお 願い △△のテスト 環境追加をお 願い Test01環境の 追加をお願い □□のテスト 環境追加をお 願い Test02の追加 もお願い 負荷試験環境 の追加も頼む 外部検証環境 の追加も頼む ○○のテスト 環境追加をお 願い デバッグ環境 の追加も! ○○のテスト 環境追加をお 願い

Slide 86

Slide 86 text

Copyright 2019 DELiGHTWORKS. 85 環境が多ければ多いほど運用が手間

Slide 87

Slide 87 text

Copyright 2019 DELiGHTWORKS. 以前までの開発環境の運用 86 決定 QA プランナー デザイナー エンジニア Test01 Test02 負荷試験 外部検証 デバッグ フューチャ 開発環境 Test01って何用 だっけ 外部検証のマス ターはいつのバー ジョンだっけ プランナーって サーバープログラ ムのブランチどれ だっけ 外部検証って誰 が使ってるん だっけ デザイナー最後 更新したのいつ だっけ 負荷試験つかっ ていいんだっけ

Slide 88

Slide 88 text

Copyright 2019 DELiGHTWORKS. 以前までの開発環境の運用 とりあえず聞くしかない!

Slide 89

Slide 89 text

Copyright 2019 DELiGHTWORKS. 以前までの開発環境の運用 ~まとめ~ 88 開発環境は複数存在する 各開発環境は口頭かドキュメントを使って管理してる 開発アプリからは開発環境選択画面を経由して開発環境の選択を行う 開発環境が増えた際は担当者に依頼して、手動で追加を行う プランナーの人数分環境がたてられているタイトルも 開発環境選択画面の情報は基本べた書き 追加に伴い、アプリの再ビルドと再配布の手間も コミュニケーションコストの発生、ドキュメントは気を抜くとすぐ古くなったり。。

Slide 90

Slide 90 text

Copyright 2019 DELiGHTWORKS. 89 どうにかしたい

Slide 91

Slide 91 text

Copyright 2019 DELiGHTWORKS. 90 開発環境の情報を全部DBに入れよう

Slide 92

Slide 92 text

Copyright 2019 DELiGHTWORKS. 今の開発環境の運用 環境名 用途 マスター アプリバー ジョン ドメイン ブランチ 利用者 開発者 開発用 ○○○ 1.0.3 xxx develop 開発メンバー QA デバッグ用 △△△ 1.0.1 yyy master QA DBから情報を参照して表示するWebページを作成、どの環境がどういう風に使われて いるかは一目瞭然 開発環境の問い合わせによるコミュニケーションコストの撲滅を目指す!

Slide 93

Slide 93 text

Copyright 2019 DELiGHTWORKS. 今の開発環境の運用 さらに、DBの情報をもとに開発環境リストの取得 をAPI化してクライアント側に提供 これにより開発環境の変更や追加が生じた際にク ライアント側の追加対応がいらなくなる 開発環境の追加による対応コストの撲滅を目指す

Slide 94

Slide 94 text

Copyright 2019 DELiGHTWORKS. 今の開発環境の運用 ~まとめ~ 93 開発環境の情報はDBに入れて保持する 開発環境DBの更新はCI/CDと連動して自動/手動更新する 開発環境DBのデータを参照して開発管理サイトに表示する 開発環境DBのデータに基づいて開発環境のリストを返すAPIを用意 DBは専用のものを作成 開発管理サイトでは開発管理の閲覧と編集、マスター更新の有り無しなど設定できる クライアントが必要な情報だけ返す 利用者/使用用途など推測不可能なデータは手動更新

Slide 95

Slide 95 text

Copyright 2019 DELiGHTWORKS. アジェンダ(後半) 採用技術の変遷 クラウド環境の新しい取り組み 効率化への新しい取り組み まとめ ⚫ 言語の過去と今 ⚫ OSの過去と今 ⚫ 開発環境編 ⚫ CI/CD環境編

Slide 96

Slide 96 text

Copyright 2019 DELiGHTWORKS. CI/CDツールの選定 95 Jenkinsは使わない GCPを使っているのでGCP内で完結できると理想的 サーバーの面倒は見たくない 理由は前半と同じ Gsuiteのアカウントそのまま使える、GCPのほかのサービスと連動しやすい サーバー管理が不要なサービス

Slide 97

Slide 97 text

Copyright 2019 DELiGHTWORKS. CI/CDツールの選定 96 Jenkinsは使わない GCPを使っているのでGCP内で完結できると理想的 サーバーの面倒は見たくない 理由は前半と同じ Gsuiteのアカウントそのまま使える、GCPのほかのサービスと連動しやすい サーバー管理が不要なサービス サーバーレスのサービスを使うことにしました

Slide 98

Slide 98 text

Copyright 2019 DELiGHTWORKS. CI/CDツールの選定 97 サーバーレス 〇 〇 〇 Dockerイメージの サポート × 〇 〇 ランライム 提供のみ 提供のみ 任意の言語を選べる File System Read Only Read Only コンテナイメージに準拠 Google Cloud Function Google Cloud Run Google App Engine スダンダート環境 今回はファイルを生成してGitリポジトリにプッシュすることがCIの要件 に含まれています

Slide 99

Slide 99 text

Copyright 2019 DELiGHTWORKS. CI/CDツールの選定 98 今回はファイルを生成してGitリポジトリにコミットすることがCIの要件 に含まれています サーバーレス 〇 〇 〇 Dockerイメージの サポート × 〇 〇 ランライム 提供のみ 提供のみ 任意の言語を選べる File System Read Only Read Only コンテナイメージに準拠 Google Cloud Function Google Cloud Run Google App Engine スダンダート環境 Google Cloud Run を採用しました

Slide 100

Slide 100 text

Copyright 2019 DELiGHTWORKS. CI/CDツールの選定 ~余談~ 99 最適なサーバーレスコンピューティングプラットフォームを選ぶ https://cloud.google.com/serverless-options/?hl=ja GCP公式のサーバーレスプラットフォームを選ぶときのフローチャートです。 ご参考に

Slide 101

Slide 101 text

Copyright 2019 DELiGHTWORKS. 100 Cloud Runを使って実装してみましたが

Slide 102

Slide 102 text

Copyright 2019 DELiGHTWORKS. Cloud Run移行後の課題 101 Jenkinsのような入力インターフェイスはない パラメータの受け渡しが面倒 パラメータごとにサービスとして作るのも現実的ではない 解決策:開発管理サイトをCIのインターフェイスとしても使う

Slide 103

Slide 103 text

Copyright 2019 DELiGHTWORKS. Cloud Run移行後の課題 102 Jenkinsのような入力インターフェイスはない パラメータの受け渡しが面倒 パラメータごとにサービスとして作るのも現実的ではない Cloud Run(フルマネージド)はVPCにアクセスできない SVNサーバーがVPC内にあるので、アクセスできないとリポジトリをチェックアウトで きない 解決策:開発管理サイトをCIのインターフェイスとしても使う 解決策:Cloud Run on GKEに変更

Slide 104

Slide 104 text

Copyright 2019 DELiGHTWORKS. Log マスター更新 全体像(一部抜粋) 103 GitHub Enterprise デプロイ Cloud Build Container Registry Spinnaker Database SVN (マスタデータ) Slack Kubernetes cluster Cloud Run on GKE 開発管理サイト Cloud Run on GKE マスター更新 Cloud Run on GKE マスターコンバータ Stackdriver Cloud Spanner

Slide 105

Slide 105 text

Copyright 2019 DELiGHTWORKS. 全体像(一部抜粋) 104 GitHub Enterprise Cloud Build Container Registry Spinnaker SVN (マスタデータ) Slack Kubernetes cluster Cloud Run on GKE 開発管理サイト Cloud Run on GKE マスター更新 Cloud Run on GKE マスターコンバータ 開発管理サイト経由でCloud Runのサー ビスを呼び出すことで、パラメータの 受け渡しが楽になり、企画職の操作簡 単になった マスター更新 デプロイ Database Log Stackdriver Cloud Spanner

Slide 106

Slide 106 text

Copyright 2019 DELiGHTWORKS. 全体像(一部抜粋) GitHub Enterprise Cloud Build Container Registry Spinnaker Cloud Spanner SVN (マスタデータ) Slack Kubernetes cluster Cloud Run on GKE 開発管理サイト Cloud Run on GKE マスター更新 Cloud Run on GKE マスターコンバータ Cloud Run on GKEに移行したことによ り、VPCアクセスが可能になってSVNの リポジトリを無事チェックアウトできる ようになった マスター更新 デプロイ Database Log Stackdriver

Slide 107

Slide 107 text

Copyright 2019 DELiGHTWORKS. 効率化への新しい取り組み ~まとめ~ 106 開発環境は多くなりがち、情報を整理して可視化することが大事 プロジェクトの規模、体制などに適していたツールを選ぶことが重要 ⚫ チーム全員に正しい情報が共有されていることが開発をよりスムーズにする ⚫ 一回数分だけの確認も、積もれば大きなコミュニケーションコストに繋がる ⚫ プロジェクトの事情は千種万様 ⚫ プロジェクトから困ったことや要望をしっかりヒアリングすることが重要 ⚫ 時には既存のツールを捨て、プロジェクトにあったツールを選ぶことも必要

Slide 108

Slide 108 text

Copyright 2019 DELiGHTWORKS. アジェンダ(後半) 採用技術の変遷 クラウド環境の新しい取り組み 効率化への新しい取り組み まとめ ⚫ 言語の過去と今 ⚫ OSの過去と今 ⚫ 開発環境編 ⚫ CI/CD環境編

Slide 109

Slide 109 text

Copyright 2019 DELiGHTWORKS. まとめ ~後半~ 最適な技術を検討できるようになるためには、失敗を恐れず、新しい技 術は積極的に使っていくことが重要 チームメンバーがゲーム開発を集中できるように仕事効率化を常に考え て行動することが大事 ⚫ .NET CoreもGCPもサーバーレスも、弊社としても自分としても初の挑戦 ⚫ やってみないと優劣わからないところもあるので、新しいものに対しての検証は 欠かさない ⚫ 仮に挑戦が失敗しても次に繋がる大きな一歩になる ⚫ ゲーム開発において一番重要なのはコンテンツのクオリティ ⚫ 人手不足なのはどのプロジェクトも同じ ⚫ コンテンツのクオリティと直接かかわらない部分の仕事をどれだけ自動化できる かが肝心

Slide 110

Slide 110 text

Copyright 2019 DELiGHTWORKS.