© 2021, Amazon Web Services, Inc. or its Affiliates.
Amazon Web Services Japan K.K.
Solutions Architect Taiji Iwai
より速いゲーム開発をより安全に。
Amazon Elastic Kubernetes Service が⽀える
DevOps for Your Game Development
© 2021, Amazon Web Services, Inc. or its Affiliates.
所属
アマゾン ウェブ サービス ジャパン株式会社
技術統括本部 ゲームエンターテイメントソリューション部
ソリューションアーキテクト
好きなAWSサービス
岩井 泰児(いわい たいじ)
AWS Fargate Amazon Interactive
Video Service (IVS)
Amazon Lumberyard
© 2021, Amazon Web Services, Inc. or its Affiliates.
本⽇のセッション概要
ゲーム開発を取り巻く最新事情
コンテナ技術が解決する課題
Amazon EKS が⽀えるゲーム開発
まとめ
© 2021, Amazon Web Services, Inc. or its Affiliates.
本セッションの想定視聴者とゴール
想定視聴者
効率よくアプリ開発を⾏いたいと考えるサーバーサイドエンジニア
ゲームサーバーの運⽤負荷を下げたいと感じているインフラエンジニア
Kubernetes をゲーム開発の現場に導⼊するか迷っている⽅
ゴール
DevOps がゲーム開発のスピード化に貢献することを理解する
コンテナ技術がゲーム開発にどのように役⽴つか理解する
Kubernetes を導⼊するメリットや選定基準を⾃分の中にもつ
© 2021, Amazon Web Services, Inc. or its Affiliates.
ゲーム開発を取り巻く最新事情
© 2021, Amazon Web Services, Inc. or its Affiliates.
最新事情︓ゲーム開発のサイクルが⾼速化している
モバイルを含めてゲーム開発の⼤規模化が進んでいる
ゲームソフトの制作費は⼈件費が 6-7 割を占めると⾔われている
新作ヒット率の低下や収益性の低下が各ゲーム会社の課題
ヒット作を⽣み出す可能性を⾼めるために
少ない⼈数 で 効率よく かつ ⾼速に ゲームを開発することが
ゲーム制作の現場では求められている
しかし・・・・
メディア・ソフトの制作及び流通の実態に関する調査 (2020年7⽉)
https://www.soumu.go.jp/main_content/000700592.pdf
© 2021, Amazon Web Services, Inc. or its Affiliates.
開発︓サーバーサイドのアプリエンジニアが抱える苦悩
集約の結果として頻繁な仕様変更が発⽣し、修正に対応するために
開発を担当するアプリケーションエンジニアの負担が増⼤していく
⼀般的にはクライアントよりサーバーサイドエンジニアの⼈数は少ない
開発だけすればよいわけではなく、ソフトウェアをサーバーに
デプロイ後の動作確認や、⾼負荷時の性能調査を⾏う必要がある
© 2021, Amazon Web Services, Inc. or its Affiliates.
運⽤︓開発だけでなくインフラの運⽤も⾼度化している
⽣み出したヒット作を守るために可⽤性を最⼤限担保する必要がある
サーバーが落ちた時間=売上の損失に直結する
不定期なアクセスパターンを予測してサーバー需給の最適化が必須
ローンチ時やメンテナンス明けのスパイクアクセス
定常稼働中システムの安定運⽤とコスト削減
インフラ運⽤の⾃動化を実践する⾼度な運⽤スキルが必要
クラウド上で管理するリソースが膨⼤に増えている
インフラをコードで「開発」する Infrastructure as a Code (IaC)
IaC ⾃体の開発効率を⾼めていく必要がある
© 2021, Amazon Web Services, Inc. or its Affiliates.
ゲーム開発の課題 と DevOps が解決するもの
ゲーム開発の課題のまとめ
開発/運⽤ どちらのフェイズでも 効率化・⾃動化が⾄上命題 となっている
→ DevOps の考え⽅により諸問題の解決を図っていく
DevOps とはなにか︖
⽂化・実践・テクノロジーを組み合わせてビジネスの成功を⽬指す活動で
あり、ビジネスのためのアジリティを向上させ、リスクを低減させるもの
本⽇のセッションではテクノロジーに着⽬した技術をご紹介します
© 2021, Amazon Web Services, Inc. or its Affiliates.
コンテナ技術が解決する課題
© 2021, Amazon Web Services, Inc. or its Affiliates.
ゲーム制作のよくある課題と典型的な解決策
アプリケーションを 安全かつ⾼速にデプロイ しなければならない
⼿元の環境とサーバーで ランタイムとライブラリの整合性 を取りたい
アプリケーションの スケーリング速度を早めて 5xx エラーを解消したい
今よりも コスト効率よくインフラを管理 したい
© 2021, Amazon Web Services, Inc. or its Affiliates.
ゲーム制作のよくある課題と典型的な解決策
アプリケーションを 安全かつ⾼速にデプロイ しなければならない
→ サーバー管理者がバイナリを各サーバーに SCP 等のコマンドで配る
⼿元の環境とサーバーで ランタイムとライブラリの整合性 を取りたい
→ Ansible 等の構成管理ツールで依存関係を記述しておく
アプリケーションの スケーリング速度を早めて 5xx エラーを解消したい
→ サーバーを事前に数多く起動しておく
今よりも コスト効率よくインフラを管理 したい
→ 不必要なサーバーをこまめに落とす
© 2021, Amazon Web Services, Inc. or its Affiliates.
ゲーム制作のよくある課題と典型的な解決策
SCP
Ansible
これらのツールが「悪い」訳ではないが
⻑年の運⽤の中で技術的負債になりがち
© 2021, Amazon Web Services, Inc. or its Affiliates.
ところでコンテナって︖
リソースが隔離されたOS上のプロセス
(仮想マシンと同様に「起動・停⽌・削除」などのライフサイクルを持つ)
Bins/Libs
App2
Process
Infrastructure
Operating System
Container Engine
Infrastructure
Hypervisor
Guest OS
Bins/Libs
App2
Guest OS
Bins/Libs
App1
VM VM
App1
Bins/Libs
Process
コンテナ
仮想マシン
1つのOS上で、複数同時稼働実⾏環境を提供。
各々で独⽴したルートファイルシステム、CPU・メモリ、プロセス空間等を利⽤可能
© 2021, Amazon Web Services, Inc. or its Affiliates.
コンテナの特徴とメリット
nスピード
ü 起動・停⽌が⾮常に⾼速
n可搬性
ü コンテナイメージは「不変」
ü 「アプリケーションのビルドと
デプロイ」への組み込みが容易
n柔軟性
ü 1つのイメージから複数の
コンテナを起動可 (スケール性)
リソース効率に優れ、オーバーヘッドが少ない
→ 粒度を細かく、利⽤率の向上が可能
Bins/Libs
App2
Process
Infrastructure
Operating System
Container Engine
App1
Bins/Libs
Process
コンテナ
Local Container Registry
コンテナ
⽣成
コンテナ
イメージ
コンテナ
⽣成
© 2021, Amazon Web Services, Inc. or its Affiliates.
コンテナ技術によるゲーム開発の課題解決
ü 起動・停⽌が⾮常に ⾼速
ü コンテナイメージは「不変」
ü 「アプリケーションのビルドと
デプロイ」への 組み込みが容易
ü 1つのOSに対して 複数コンテナ
を同時に起動可能
アプリの スケーリング速度を早めて
5xx エラーを解消したい
⼿元の環境とサーバーで ランタイムと
ライブラリの整合性 を取りたい
アプリケーションを 安全かつ⾼速に
デプロイ したい
今よりも コスト効率よくインフラを
管理 したい
コンテナの特徴
ゲーム開発の課題
© 2021, Amazon Web Services, Inc. or its Affiliates.
コンテナ技術(Docker) は銀の弾丸ではない
Docker コンテナはあくまでも OS 上の 1 プロセスなので、
⼤規模だったり、複雑な運⽤をしたくなった時に⾟くなります。
例)依存関係のある複数コンテナを起動させたい。
例)複数のサーバーで複数のコンテナを起動させて冗⻑構成にしたい。
サーバ1 サーバ2
© 2021, Amazon Web Services, Inc. or its Affiliates.
オーケストレータ
コンテナオーケストレーションの必要性
「このサーバーのクラスタで
課⾦ API ⽤のコンテナを実⾏
したいです」
「このコンテナを複数のデータ
センターに分散させつつ
10 個デプロイして、
このロードバランサーに
つないでください」
© 2021, Amazon Web Services, Inc. or its Affiliates.
コンテナオーケストレーターの責務
以下の作業をすべて⾃動化された⽅法で管理することができる
効率よいコンテナの管理とスケジューリング
コンテナやノードのスケーリング
コンテナのデプロイ
ネットワーキングやログ収集
etc...
© 2021, Amazon Web Services, Inc. or its Affiliates.
オーケストレーターを⾃作︖︓ AWS の Building Block
ネットワーク アナリティクス
コンピュート
ストレージ & 配信
開発ツール 管理ツール セキュリティ
アプリケーションインテグレーション
モバイルサービス データベース IoT
機械学習
ゲーム
Amazon
EMR
Amazon
Kinesis
Amazon Athena AWS Glue
Amazon
Elasticsearch
Service
Amazon
Redshift
Amazon
QuickSight
AWS
Data Pipeline
Amazon
SNS
Amazon
SQS
Amazo
n MQ
AWS
AppSync
AWS Step
Functions
ELB
AWS Elastic
Beanstalk
AWS
Lambda
Amazon
EC2
Amazon
ECS
Amazon
Aurora
Amazon
DynamoDB
Amazon
ElastiCache
Amazon
Redshift
AWS DMS Amazon
Neptune
Amazon
RDS
AWS
CodeBuild
AWS
CodeCommit
AWS
CodeDeploy
AWS
CodePipeline
Amazon
GameLift
Amazon
FreeRTOS
AWS IoT
Analytics
AWS IoT
Core
AWS IoT Device
Defender
AWS IoT
Greengrass
Amazon
Forecast
Amazon
Polly
Amazon
Rekognition
Amazon
SageMaker
Amazon
Translate
Amazon
CloudWatch
AWS Auto
Scaling
AWS
CloudFormation
AWS
CloudTrail
AWS
Config
AWS Managed
Services
Amazon API
Gateway
AWS
Amplify
AWS
AppSync
AWS Device
Farm
Amazon
Route 53
Amazon
VPC
AWS
Direct
Connect
Amazon
GuardDuty
Amazon
Inspector
Amazon
Cognito
AWS
Organizations
AWS
KMS
Amazon
EFS
Amazon S3 AWS
Snowball
AWS Storage
Gateway
Amazon
FSx
Amazon
EBS
AWS
Trusted
Advisor
© 2021, Amazon Web Services, Inc. or its Affiliates.
CNCF の Building Block も活⽤すると更に⾃由度が向上
© 2021, Amazon Web Services, Inc. or its Affiliates.
A m a z o n E l a s t i c K u b e r n e t e s S e r v i c e
https://aws.amazon.com/jp/eks/
© 2021, Amazon Web Services, Inc. or its Affiliates.
Amazon EKS が⽀える
DevOps とゲーム開発
© 2021, Amazon Web Services, Inc. or its Affiliates.
“Kubernetesは、宣⾔的な構成管理と
⾃動化を促進し、コンテナ化された
ワークロードや
サービスを管理するための、ポータブ
ルで拡張性のあるオープンソースの
プラットフォームです”
Worker Node
containers
Worker Node
Kubernetes
Application Application
Application
Application
Application Application
containers
https://kubernetes.io/ja/docs/concepts/overview/what-is-
kubernetes/
Kubernetes のオーケストレーション
© 2021, Amazon Web Services, Inc. or its Affiliates.
Kubernetes マニフェストを書けばアプリケーションが動く
© 2021, Amazon Web Services, Inc. or its Affiliates.
Kubernetes を使ったゲーム開発での DevOps
⼿元で開発した アプリケーションをすぐに本番で動かす ことができる
ローリングアップデートがデフォルトなので、アプリ更新時にもダウンタイムなし
にデプロイが可能
スパイクアクセス時にもオートスケール がサポートされており、リソース量を常に
適切なサイズへとスケール可能
YAML 形式で記載されたマニフェストによりオペレーションを統⼀化できるので
ミスなく安全にゲーム開発を継続することができる
「差別化に繋がらない重労働」は Kubernetes に任せる︕
浮いた時間はゲームの価値を⾼める作業に集中する。
© 2021, Amazon Web Services, Inc. or its Affiliates.
ゲーム開発における Kubernetes の運⽤課題
Kubernetes という分散システム⾃体がとても複雑であり管理が⼤変
”プラガブル“ な特徴を使い込むほどクラスタのアップグレードの難易度が上がる
例)Kubernetes ⾃体に 1 ⽇平均 119 Commit ⾏われており、3 ヶ⽉に⼀度
マイナーバージョンがリリースされる
例) クラスタのセキュリティ、⾼可⽤性の担保、API アクセスの適切な権限管理、
ノードのアップグレードやパッチの適⽤はユーザーの負担となる
https://www.cncf.io/cncf-kubernetes-project-journey/
© 2021, Amazon Web Services, Inc. or its Affiliates.
Amazon EKS が提供する価値
“差別化に繋がらない重労働” を更に削減し、
ビジネス価値の創出に集中できる
© 2021, Amazon Web Services, Inc. or its Affiliates.
Amazon EKS が提供する価値
DevOps !!!
© 2021, Amazon Web Services, Inc. or its Affiliates.
Tenet 1
EKS はプロダクションレベルのワー
クロードを動かすための
プラットフォームである
Tenet 2
EKS はネイティブかつアップスト
リームの Kubernetes 体験を提供する。
Tenet 3
EKS ユーザが追加の AWS サービス
を使う際に、そのインテグレーショ
ンを可能なかぎりシームレスにする
Tenet 4
EKS チームは積極的に Kubernetesプ
ロジェクトに貢献していくこと
© 2021, Amazon Web Services, Inc. or its Affiliates.
コントロールプレーンをマネージドサービスとして提供
kubectl コマンド
Client
コントロールプレーン
データプレーン
Worker Node Worker Node
Worker Node
Amazon EKS
Kubernetes API Server
© 2021, Amazon Web Services, Inc. or its Affiliates.
AWS サービスとの親和性
• ALB が持つ可用性や証明書管理といった
メリットを活かしつつ Kubernetes の
自由度や表現力を維持したい
• AWS Load Balancer Controller を使うと
ALB や NLB といったリソースを k8s
内部から透過的に扱うことが可能
Pod
Pod
Pod
Ingress
L7
Application
Load Balancer
AWS Ingress Controller
https://github.com/kubernetes-sigs/aws-alb-ingress-controller
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
namespace: day1-test
name: game-matchmaking-server
annotations:
kubernetes.io/ingress.class: alb
alb.ingress.kubernetes.io/scheme: internet-facing
alb.ingress.kubernetes.io/target-type: ip
spec:
rules:
- http:
paths:
- path: /*
backend:
serviceName: game-matchmaking-server
servicePort: 80
AWS Load Balancer Controller
によって統合
200 を超える AWS サービスとのインテグレーション
© 2021, Amazon Web Services, Inc. or its Affiliates.
Amazon EKS でのゲーム開発
コンテナ化されたゲームサーバー はネイティブな Kubernetes を使えるので
もちろん実⾏が可能
堅牢かつリレーショナルなデータストア を使いたい場合には別のセッションで
ご紹介する Amazon Aurora との組み合わせも⾃由に選べる
EKS も銀の弾丸ではないので、EKS ⾃体の管理を⾏う 専任のエンジニア が必要
最終的な⽬的は DevOps でゲーム開発を⾼速化させるため CNCF の OSS
サービスを使わないというのであれば、ECS 等のオーケストレーションツール
も選択できる
© 2021, Amazon Web Services, Inc. or its Affiliates.
AWS 上での最適な DevOps 実現に向けて
やりたいことは、Kubernetes の運⽤でも、コンテナの導⼊でもなく、ゲームの
開発速度をあげることで、よい体験をお客様に届ける ことができること。
そのための最適な DevOps 開発環境構築にむけて、ソリューションアーキテクトが
お⼿伝いできます。お気軽にご相談ください。
AWS
Cloud Map
オーケストレーション
コンテナのデプロイ、スケジューリング、スケーリング
イメージレジストリ
コンテナイメージの格納
ホスティング
コンテナ実⾏環境
その他の関連サービス
サービスメッシュ、サービスディスカバリ、モニタリング
Amazon CloudWatch
Container Insights
Amazon ECS Amazon EKS Amazon ECR
Amazon EC2 AWS Fargate
© 2021, Amazon Web Services, Inc. or its Affiliates.
EKS を体験する Workshop を公開
https://www.eksworkshop.com
k8s 初心者にも
オススメ!
差
© 2021, Amazon Web Services, Inc. or its Affiliates.
コンテナ関連サービスの公開ロードマップ
https://github.com/aws/containers-roadmap
皆様のご要望を
お待ちしています
© 2021, Amazon Web Services, Inc. or its Affiliates.
まとめ
サーバーサイドでの ゲーム開発の課題と DevOps の考え⽅をご紹介しました
コンテナ技術の説明とゲーム開発における コンテナのメリット をお伝えしました
差別化に繋がらない重労働を Amazon EKS にオフロード することにより
コンテナオーケストレーションとゲーム開発を加速させることができます
要件に応じた技術を選ぶことで最適な DevOps を実現しましょう︕
© 2021, Amazon Web Services, Inc. or its Affiliates.
Thank you!

20210415 amazonelastickubernetesservice devops_game_development

  • 1.
    © 2021, AmazonWeb Services, Inc. or its Affiliates. Amazon Web Services Japan K.K. Solutions Architect Taiji Iwai より速いゲーム開発をより安全に。 Amazon Elastic Kubernetes Service が⽀える DevOps for Your Game Development
  • 2.
    © 2021, AmazonWeb Services, Inc. or its Affiliates. 所属 アマゾン ウェブ サービス ジャパン株式会社 技術統括本部 ゲームエンターテイメントソリューション部 ソリューションアーキテクト 好きなAWSサービス 岩井 泰児(いわい たいじ) AWS Fargate Amazon Interactive Video Service (IVS) Amazon Lumberyard
  • 3.
    © 2021, AmazonWeb Services, Inc. or its Affiliates. 本⽇のセッション概要 ゲーム開発を取り巻く最新事情 コンテナ技術が解決する課題 Amazon EKS が⽀えるゲーム開発 まとめ
  • 4.
    © 2021, AmazonWeb Services, Inc. or its Affiliates. 本セッションの想定視聴者とゴール 想定視聴者 効率よくアプリ開発を⾏いたいと考えるサーバーサイドエンジニア ゲームサーバーの運⽤負荷を下げたいと感じているインフラエンジニア Kubernetes をゲーム開発の現場に導⼊するか迷っている⽅ ゴール DevOps がゲーム開発のスピード化に貢献することを理解する コンテナ技術がゲーム開発にどのように役⽴つか理解する Kubernetes を導⼊するメリットや選定基準を⾃分の中にもつ
  • 5.
    © 2021, AmazonWeb Services, Inc. or its Affiliates. ゲーム開発を取り巻く最新事情
  • 6.
    © 2021, AmazonWeb Services, Inc. or its Affiliates. 最新事情︓ゲーム開発のサイクルが⾼速化している モバイルを含めてゲーム開発の⼤規模化が進んでいる ゲームソフトの制作費は⼈件費が 6-7 割を占めると⾔われている 新作ヒット率の低下や収益性の低下が各ゲーム会社の課題 ヒット作を⽣み出す可能性を⾼めるために 少ない⼈数 で 効率よく かつ ⾼速に ゲームを開発することが ゲーム制作の現場では求められている しかし・・・・ メディア・ソフトの制作及び流通の実態に関する調査 (2020年7⽉) https://www.soumu.go.jp/main_content/000700592.pdf
  • 7.
    © 2021, AmazonWeb Services, Inc. or its Affiliates. 開発︓サーバーサイドのアプリエンジニアが抱える苦悩 集約の結果として頻繁な仕様変更が発⽣し、修正に対応するために 開発を担当するアプリケーションエンジニアの負担が増⼤していく ⼀般的にはクライアントよりサーバーサイドエンジニアの⼈数は少ない 開発だけすればよいわけではなく、ソフトウェアをサーバーに デプロイ後の動作確認や、⾼負荷時の性能調査を⾏う必要がある
  • 8.
    © 2021, AmazonWeb Services, Inc. or its Affiliates. 運⽤︓開発だけでなくインフラの運⽤も⾼度化している ⽣み出したヒット作を守るために可⽤性を最⼤限担保する必要がある サーバーが落ちた時間=売上の損失に直結する 不定期なアクセスパターンを予測してサーバー需給の最適化が必須 ローンチ時やメンテナンス明けのスパイクアクセス 定常稼働中システムの安定運⽤とコスト削減 インフラ運⽤の⾃動化を実践する⾼度な運⽤スキルが必要 クラウド上で管理するリソースが膨⼤に増えている インフラをコードで「開発」する Infrastructure as a Code (IaC) IaC ⾃体の開発効率を⾼めていく必要がある
  • 9.
    © 2021, AmazonWeb Services, Inc. or its Affiliates. ゲーム開発の課題 と DevOps が解決するもの ゲーム開発の課題のまとめ 開発/運⽤ どちらのフェイズでも 効率化・⾃動化が⾄上命題 となっている → DevOps の考え⽅により諸問題の解決を図っていく DevOps とはなにか︖ ⽂化・実践・テクノロジーを組み合わせてビジネスの成功を⽬指す活動で あり、ビジネスのためのアジリティを向上させ、リスクを低減させるもの 本⽇のセッションではテクノロジーに着⽬した技術をご紹介します
  • 10.
    © 2021, AmazonWeb Services, Inc. or its Affiliates. コンテナ技術が解決する課題
  • 11.
    © 2021, AmazonWeb Services, Inc. or its Affiliates. ゲーム制作のよくある課題と典型的な解決策 アプリケーションを 安全かつ⾼速にデプロイ しなければならない ⼿元の環境とサーバーで ランタイムとライブラリの整合性 を取りたい アプリケーションの スケーリング速度を早めて 5xx エラーを解消したい 今よりも コスト効率よくインフラを管理 したい
  • 12.
    © 2021, AmazonWeb Services, Inc. or its Affiliates. ゲーム制作のよくある課題と典型的な解決策 アプリケーションを 安全かつ⾼速にデプロイ しなければならない → サーバー管理者がバイナリを各サーバーに SCP 等のコマンドで配る ⼿元の環境とサーバーで ランタイムとライブラリの整合性 を取りたい → Ansible 等の構成管理ツールで依存関係を記述しておく アプリケーションの スケーリング速度を早めて 5xx エラーを解消したい → サーバーを事前に数多く起動しておく 今よりも コスト効率よくインフラを管理 したい → 不必要なサーバーをこまめに落とす
  • 13.
    © 2021, AmazonWeb Services, Inc. or its Affiliates. ゲーム制作のよくある課題と典型的な解決策 SCP Ansible これらのツールが「悪い」訳ではないが ⻑年の運⽤の中で技術的負債になりがち
  • 14.
    © 2021, AmazonWeb Services, Inc. or its Affiliates. ところでコンテナって︖ リソースが隔離されたOS上のプロセス (仮想マシンと同様に「起動・停⽌・削除」などのライフサイクルを持つ) Bins/Libs App2 Process Infrastructure Operating System Container Engine Infrastructure Hypervisor Guest OS Bins/Libs App2 Guest OS Bins/Libs App1 VM VM App1 Bins/Libs Process コンテナ 仮想マシン 1つのOS上で、複数同時稼働実⾏環境を提供。 各々で独⽴したルートファイルシステム、CPU・メモリ、プロセス空間等を利⽤可能
  • 15.
    © 2021, AmazonWeb Services, Inc. or its Affiliates. コンテナの特徴とメリット nスピード ü 起動・停⽌が⾮常に⾼速 n可搬性 ü コンテナイメージは「不変」 ü 「アプリケーションのビルドと デプロイ」への組み込みが容易 n柔軟性 ü 1つのイメージから複数の コンテナを起動可 (スケール性) リソース効率に優れ、オーバーヘッドが少ない → 粒度を細かく、利⽤率の向上が可能 Bins/Libs App2 Process Infrastructure Operating System Container Engine App1 Bins/Libs Process コンテナ Local Container Registry コンテナ ⽣成 コンテナ イメージ コンテナ ⽣成
  • 16.
    © 2021, AmazonWeb Services, Inc. or its Affiliates. コンテナ技術によるゲーム開発の課題解決 ü 起動・停⽌が⾮常に ⾼速 ü コンテナイメージは「不変」 ü 「アプリケーションのビルドと デプロイ」への 組み込みが容易 ü 1つのOSに対して 複数コンテナ を同時に起動可能 アプリの スケーリング速度を早めて 5xx エラーを解消したい ⼿元の環境とサーバーで ランタイムと ライブラリの整合性 を取りたい アプリケーションを 安全かつ⾼速に デプロイ したい 今よりも コスト効率よくインフラを 管理 したい コンテナの特徴 ゲーム開発の課題
  • 17.
    © 2021, AmazonWeb Services, Inc. or its Affiliates. コンテナ技術(Docker) は銀の弾丸ではない Docker コンテナはあくまでも OS 上の 1 プロセスなので、 ⼤規模だったり、複雑な運⽤をしたくなった時に⾟くなります。 例)依存関係のある複数コンテナを起動させたい。 例)複数のサーバーで複数のコンテナを起動させて冗⻑構成にしたい。 サーバ1 サーバ2
  • 18.
    © 2021, AmazonWeb Services, Inc. or its Affiliates. オーケストレータ コンテナオーケストレーションの必要性 「このサーバーのクラスタで 課⾦ API ⽤のコンテナを実⾏ したいです」 「このコンテナを複数のデータ センターに分散させつつ 10 個デプロイして、 このロードバランサーに つないでください」
  • 19.
    © 2021, AmazonWeb Services, Inc. or its Affiliates. コンテナオーケストレーターの責務 以下の作業をすべて⾃動化された⽅法で管理することができる 効率よいコンテナの管理とスケジューリング コンテナやノードのスケーリング コンテナのデプロイ ネットワーキングやログ収集 etc...
  • 20.
    © 2021, AmazonWeb Services, Inc. or its Affiliates. オーケストレーターを⾃作︖︓ AWS の Building Block ネットワーク アナリティクス コンピュート ストレージ & 配信 開発ツール 管理ツール セキュリティ アプリケーションインテグレーション モバイルサービス データベース IoT 機械学習 ゲーム Amazon EMR Amazon Kinesis Amazon Athena AWS Glue Amazon Elasticsearch Service Amazon Redshift Amazon QuickSight AWS Data Pipeline Amazon SNS Amazon SQS Amazo n MQ AWS AppSync AWS Step Functions ELB AWS Elastic Beanstalk AWS Lambda Amazon EC2 Amazon ECS Amazon Aurora Amazon DynamoDB Amazon ElastiCache Amazon Redshift AWS DMS Amazon Neptune Amazon RDS AWS CodeBuild AWS CodeCommit AWS CodeDeploy AWS CodePipeline Amazon GameLift Amazon FreeRTOS AWS IoT Analytics AWS IoT Core AWS IoT Device Defender AWS IoT Greengrass Amazon Forecast Amazon Polly Amazon Rekognition Amazon SageMaker Amazon Translate Amazon CloudWatch AWS Auto Scaling AWS CloudFormation AWS CloudTrail AWS Config AWS Managed Services Amazon API Gateway AWS Amplify AWS AppSync AWS Device Farm Amazon Route 53 Amazon VPC AWS Direct Connect Amazon GuardDuty Amazon Inspector Amazon Cognito AWS Organizations AWS KMS Amazon EFS Amazon S3 AWS Snowball AWS Storage Gateway Amazon FSx Amazon EBS AWS Trusted Advisor
  • 21.
    © 2021, AmazonWeb Services, Inc. or its Affiliates. CNCF の Building Block も活⽤すると更に⾃由度が向上
  • 22.
    © 2021, AmazonWeb Services, Inc. or its Affiliates. A m a z o n E l a s t i c K u b e r n e t e s S e r v i c e https://aws.amazon.com/jp/eks/
  • 23.
    © 2021, AmazonWeb Services, Inc. or its Affiliates. Amazon EKS が⽀える DevOps とゲーム開発
  • 24.
    © 2021, AmazonWeb Services, Inc. or its Affiliates. “Kubernetesは、宣⾔的な構成管理と ⾃動化を促進し、コンテナ化された ワークロードや サービスを管理するための、ポータブ ルで拡張性のあるオープンソースの プラットフォームです” Worker Node containers Worker Node Kubernetes Application Application Application Application Application Application containers https://kubernetes.io/ja/docs/concepts/overview/what-is- kubernetes/ Kubernetes のオーケストレーション
  • 25.
    © 2021, AmazonWeb Services, Inc. or its Affiliates. Kubernetes マニフェストを書けばアプリケーションが動く
  • 26.
    © 2021, AmazonWeb Services, Inc. or its Affiliates. Kubernetes を使ったゲーム開発での DevOps ⼿元で開発した アプリケーションをすぐに本番で動かす ことができる ローリングアップデートがデフォルトなので、アプリ更新時にもダウンタイムなし にデプロイが可能 スパイクアクセス時にもオートスケール がサポートされており、リソース量を常に 適切なサイズへとスケール可能 YAML 形式で記載されたマニフェストによりオペレーションを統⼀化できるので ミスなく安全にゲーム開発を継続することができる 「差別化に繋がらない重労働」は Kubernetes に任せる︕ 浮いた時間はゲームの価値を⾼める作業に集中する。
  • 27.
    © 2021, AmazonWeb Services, Inc. or its Affiliates. ゲーム開発における Kubernetes の運⽤課題 Kubernetes という分散システム⾃体がとても複雑であり管理が⼤変 ”プラガブル“ な特徴を使い込むほどクラスタのアップグレードの難易度が上がる 例)Kubernetes ⾃体に 1 ⽇平均 119 Commit ⾏われており、3 ヶ⽉に⼀度 マイナーバージョンがリリースされる 例) クラスタのセキュリティ、⾼可⽤性の担保、API アクセスの適切な権限管理、 ノードのアップグレードやパッチの適⽤はユーザーの負担となる https://www.cncf.io/cncf-kubernetes-project-journey/
  • 28.
    © 2021, AmazonWeb Services, Inc. or its Affiliates. Amazon EKS が提供する価値 “差別化に繋がらない重労働” を更に削減し、 ビジネス価値の創出に集中できる
  • 29.
    © 2021, AmazonWeb Services, Inc. or its Affiliates. Amazon EKS が提供する価値 DevOps !!!
  • 30.
    © 2021, AmazonWeb Services, Inc. or its Affiliates. Tenet 1 EKS はプロダクションレベルのワー クロードを動かすための プラットフォームである Tenet 2 EKS はネイティブかつアップスト リームの Kubernetes 体験を提供する。 Tenet 3 EKS ユーザが追加の AWS サービス を使う際に、そのインテグレーショ ンを可能なかぎりシームレスにする Tenet 4 EKS チームは積極的に Kubernetesプ ロジェクトに貢献していくこと
  • 31.
    © 2021, AmazonWeb Services, Inc. or its Affiliates. コントロールプレーンをマネージドサービスとして提供 kubectl コマンド Client コントロールプレーン データプレーン Worker Node Worker Node Worker Node Amazon EKS Kubernetes API Server
  • 32.
    © 2021, AmazonWeb Services, Inc. or its Affiliates. AWS サービスとの親和性 • ALB が持つ可用性や証明書管理といった メリットを活かしつつ Kubernetes の 自由度や表現力を維持したい • AWS Load Balancer Controller を使うと ALB や NLB といったリソースを k8s 内部から透過的に扱うことが可能 Pod Pod Pod Ingress L7 Application Load Balancer AWS Ingress Controller https://github.com/kubernetes-sigs/aws-alb-ingress-controller apiVersion: extensions/v1beta1 kind: Ingress metadata: namespace: day1-test name: game-matchmaking-server annotations: kubernetes.io/ingress.class: alb alb.ingress.kubernetes.io/scheme: internet-facing alb.ingress.kubernetes.io/target-type: ip spec: rules: - http: paths: - path: /* backend: serviceName: game-matchmaking-server servicePort: 80 AWS Load Balancer Controller によって統合 200 を超える AWS サービスとのインテグレーション
  • 33.
    © 2021, AmazonWeb Services, Inc. or its Affiliates. Amazon EKS でのゲーム開発 コンテナ化されたゲームサーバー はネイティブな Kubernetes を使えるので もちろん実⾏が可能 堅牢かつリレーショナルなデータストア を使いたい場合には別のセッションで ご紹介する Amazon Aurora との組み合わせも⾃由に選べる EKS も銀の弾丸ではないので、EKS ⾃体の管理を⾏う 専任のエンジニア が必要 最終的な⽬的は DevOps でゲーム開発を⾼速化させるため CNCF の OSS サービスを使わないというのであれば、ECS 等のオーケストレーションツール も選択できる
  • 34.
    © 2021, AmazonWeb Services, Inc. or its Affiliates. AWS 上での最適な DevOps 実現に向けて やりたいことは、Kubernetes の運⽤でも、コンテナの導⼊でもなく、ゲームの 開発速度をあげることで、よい体験をお客様に届ける ことができること。 そのための最適な DevOps 開発環境構築にむけて、ソリューションアーキテクトが お⼿伝いできます。お気軽にご相談ください。 AWS Cloud Map オーケストレーション コンテナのデプロイ、スケジューリング、スケーリング イメージレジストリ コンテナイメージの格納 ホスティング コンテナ実⾏環境 その他の関連サービス サービスメッシュ、サービスディスカバリ、モニタリング Amazon CloudWatch Container Insights Amazon ECS Amazon EKS Amazon ECR Amazon EC2 AWS Fargate
  • 35.
    © 2021, AmazonWeb Services, Inc. or its Affiliates. EKS を体験する Workshop を公開 https://www.eksworkshop.com k8s 初心者にも オススメ! 差
  • 36.
    © 2021, AmazonWeb Services, Inc. or its Affiliates. コンテナ関連サービスの公開ロードマップ https://github.com/aws/containers-roadmap 皆様のご要望を お待ちしています
  • 37.
    © 2021, AmazonWeb Services, Inc. or its Affiliates. まとめ サーバーサイドでの ゲーム開発の課題と DevOps の考え⽅をご紹介しました コンテナ技術の説明とゲーム開発における コンテナのメリット をお伝えしました 差別化に繋がらない重労働を Amazon EKS にオフロード することにより コンテナオーケストレーションとゲーム開発を加速させることができます 要件に応じた技術を選ぶことで最適な DevOps を実現しましょう︕
  • 38.
    © 2021, AmazonWeb Services, Inc. or its Affiliates. Thank you!