Upgrade to Pro — share decks privately, control downloads, hide ads and more …

サーバレスアーキテクチャ入門

 サーバレスアーキテクチャ入門

Gaming Tech Night #2 re:Born (再始動) で登壇した資料です。

https://gs2.io/

62340514ee3033d54d79c9e7a3db68d5?s=128

Kazutomo Niwa

January 24, 2018
Tweet

Transcript

  1. サーバレスアーキテクチャ⼊⾨ Game Server Services 株式会社 代表取締役社⻑CEO 丹⽻ ⼀智

  2. ⾃⼰紹介 丹⽻ ⼀智(にわ かずとも) Game Server Services 株式会社 代表取締役社⻑ CEO

    2006年 株式会社セガ⼊社 携帯電話向けゲームおよびサーバ開発業務に従事 2009年 任天堂株式会社⼊社 ニンテンドー3DSのOS/SDK開発や、 ゲームサーバの開発・運⽤業務に従事 2016年 Game Server Services 株式会社 設⽴ Game Server Services, Inc. https://gs2.io
  3. Game Server Services とは? AWS をはじめとしたクラウドベンダーが提供しているフルマ ネージドサービスのみを組み合わせてモバイルゲーム向けゲーム サーバを開発。 アカウント管理/課⾦通貨管理/スタミナ管理 といったマイクロ

    サービス単位で1時間あたり数円からという⼿頃な料⾦でサービ スを提供。 ゲームサーバ界の Unity を⽬指して開発中。 Game Server Services, Inc. https://gs2.io
  4. サーバレスとは? もちろん、サーバが無いというわけではない。 インフラ運⽤の要らないアーキテクチャ だから『ゲームの開発』という本質にフォーカス出来る。 ってAWSの⼈は⾔うかもしれない。 実際はちょっと違う。理由は後ほど。 Game Server Services, Inc.

    https://gs2.io
  5. FaaS(Function as a Service) • サーバレスという名前を背負って⽕がつき始めた技術はこの FaaS。 • AWS Lambda

    が代表的なサービスで、『S3 にファイルが置か れたら〜』『API Gateway に HTTP リクエストが届いたら 〜』 といったイベントをトリガーとして あらかじめ登録して おいた関数を実⾏できる。というサービス。 • 関数がどのサーバで実⾏されるかなど意識する必要は無い。 Game Server Services, Inc. https://gs2.io
  6. PaaS(Platform as a Service) • アプリケーションサーバ。データベースサーバ。キャッシュ サーバといったサーバシステムの開発に必要な機能がワンセッ トになったサーバプラットフォーム。 • 本当にスケールするかはプラットフォームが提供する各サーバ

    の特性によるため、確認が必要。スケールしないのであれば、 キャパシティに当たったときに神に祈るしかなくなる。 Game Server Services, Inc. https://gs2.io
  7. BaaS(Backend as a Service) • 特定の⽤途に特化したサーバシステムを提供するサービス。 • Game Server Services

    も BaaS にあたる。 • 本当にスケールするかはサービスの実装による。スケールしな いのであれば、キャパシティに当たったときに神に祈るしかな くなる。 • ちなみに Game Server Services は FaaS + フルマネージド サービス を組み合わせて設計されており、明確な限界性能はあ りません。 Game Server Services, Inc. https://gs2.io
  8. マネージド?フルマネージド? • マネージドサービス • Amazon RDS • Amazon ElastiCache •

    Amazon Elasticsearch Service • フルマネージドサービス • Amazon Simple Queue Service • Amazon DynamoDB • AWS Lambda Game Server Services, Inc. https://gs2.io 仮想サーバにMySQL/Redisといった アプリケーションをセットにしたサービス サーバの性能は インスタンスタイプによって決定 AWS が開発した アプリケーションコンポーネント サーバの性能は 利⽤状況に応じてスケール
  9. マネージドサービスは サーバレスコンポーネントとして認めん! なぜなら、マネージドサービスは所詮 仮想サーバ+ミドルウェ アのセット販売であり、ただ単純に OSやミドルウェアのパッチ をAWS側が当ててくれるだけ のサービス。 例えばディスク容量が⾜りてるか?IOスループットは⾜りている か?みたいな⾯倒は⾒てくれないし、性能の上限もインスタンス

    タイプの上限に縛られる。 Game Server Services, Inc. https://gs2.io
  10. これがAWSのフルマネージドサービス! Game Server Services, Inc. https://gs2.io Lambda Elastic Container Service(Fargate)

    S3 Glacier DynamoDB CloudFront Route 53 API Gateway よく知らない よく知らない Athena Kinesis IAM Cognito Certificate Manager WAF & Shield AWS AppSync Step Functions Simple Notification Service Simple Queue Service Simple Email Service AWS IoT Amazon GameLift
  11. フルマネージドサービスおk 「とりあえずよくわからんけど、さっきのリストのサービス使っ ときゃいいのね」と思ったあなた。それは間違い。 フルマネージドサービスにはそれぞれ流儀があり、流儀に沿って 使わなければ本来の性能を発揮してくれない。 Game Server Services, Inc. https://gs2.io

  12. たとえば AWS Lambda 開発⾔語によってスピンアップ速度が違う 開発⾔語によってメモリ消費量が違う=実⾏時の費⽤が違う 開発⾔語によって実⾏速度が違う=実⾏時の費⽤が違う VPC内で動かすと起動に7秒近くかかる Game Server Services,

    Inc. https://gs2.io
  13. たとえば DynamoDB 主キーへのアクセスを分散させる必要がある 特定のキー(シャード)へアクセスが偏るとスケールしなくなる アクセスの仕⽅によっては結果整合のクエリしか投げられない グローバルセカンダリインデックスをうまく使⽤しなければリー ドキャパシティを無駄に消費する Game Server Services,

    Inc. https://gs2.io
  14. たとえば S3 ファイルのプレフィックスがある程度分散するように命名しなけ ればスケールしない 同じコンテンツが⼤量にGETされる場合はCloudFrontを挟むべ き Game Server Services, Inc.

    https://gs2.io
  15. どこにそんな知識が…? 本当に⼤切な注意事項はAWSの各サービス内のドキュメントに 特性が書かれている すごい分量なので⼤変でも、フルマネージドサービスを採⽤する 前に⼀通り⽬を通しておくことを推奨 ドキュメント化されてない特性もあるので、それは実体験や先駆 者から学ぶ必要あり Game Server Services,

    Inc. https://gs2.io
  16. なぜゲーム開発に注⼒出来ないか 話を戻して、なぜサーバレスというだけで『ゲームの開発』の本 質に注⼒出来るわけではない。と⾔ったか。 それは、フルマネージドサービスの学習など『ゲームの開発』の 本質から外れた学習コストが⾼いから。 実際は開発時に学習コストを払って、運⽤コストを省くのが FaaS によるサーバレスアーキテクチャだと感じている。 Game Server

    Services, Inc. https://gs2.io
  17. FaaS がスケールするってのはホント? それは本当。 関数型プログラミングは 副作⽤を認めない代わりに分散処理出来る FaaS はまさにこれと同じ。副作⽤を認めない代わりにスケーラ ビリティと耐障害性を獲得した。 Game Server

    Services, Inc. https://gs2.io
  18. 副作⽤って? サーバに状態を持ってはいけない。 現実的にはサーバシステムを設計するときに全ての情報を引数で 受け取るのは不可能。 データベースなどの外部ストレージから情報を得る必要がある。 データベースに依存する場合、データベースにスケーラビリティ や可⽤性が担保されていなければ FaaS の魅⼒が引き出せない。 周辺サーバは

    フルマネージドサービス を使うことが重要 Game Server Services, Inc. https://gs2.io
  19. FaaSってピタゴラ装置って聞いた FaaS はイベント駆動設計と相性がいい。 結果、ピタゴラ装置になる。 Game Server Services, Inc. https://gs2.io API

    Gateway HTTPリクエスト Lambda イベント DynamoDB ファイルアップロード S3 Lambda イベント データ保存 イベント
  20. ピタゴラ装置ってデバッグ⼤変じゃ? • インプットとアウトプットは明確なので、FaaS のユニットテ ストはとてもしやすい。 • 思うように動かなかったときにどこが動かなかったのかを特定 するのが難しい。 • AWS

    X-Ray というサービスがあり、とても役に⽴つ。 Game Server Services, Inc. https://gs2.io
  21. サーバレス設計は別のパラダイム サーバレスアーキテクチャによるサーバシステム設計は、従来の アプリケーション開発とは全く別のパラダイム。 • イベント駆動設計が前提になっていない従来のアプリケーショ ンフレームワークは使えない • マネージドサービスの特徴について熟知して開発することが求 められる Game

    Server Services, Inc. https://gs2.io
  22. そこまで頑張る価値ある? • ゲームサーバはローンチ時のサーバダウンがとにかく多い • 事前にアクセス数の予測が困難なゲームサーバと FaaS による サーバレスは確実に相性がいい • 問題はこのパラダイムに乗って開発をする腹をくくれるか

    Game Server Services, Inc. https://gs2.io
  23. もう⼀度⽴ち⽌まって考えてみよ? フルマネージドサービスの特性の学習なんてしなくても FaaS + フルマネージドサービス の開発が出来たらいいのに! そもそも開発をする必要があるのでしょうか? Game Server Services,

    Inc. https://gs2.io
  24. イイヤツ置いておきますね • つ [ https://gs2.io/ ] • なんと Game Server

    Services は FaaS + フルマネージドサー ビスのみで実装されたゲームサーバがお⼿頃価格で利⽤可能! • GS2 Unity SDK を使⽤すれば、アプリケーション開発者だけで ネットワークゲーム開発が可能に! • 毎⽉数個のサービスを追加しており、近い将来パズドラ/モン ストライクなゲームがサーバレスで開発出来るように! Game Server Services, Inc. https://gs2.io
  25. GS2の実装例(アカウント認証) Game Server Services, Inc. https://gs2.io API Gateway HTTPリクエスト Lambda

    イベント Lambda 権限確認 OK/NG DynamoDB アカウント検索 アカウント情報 Kinesis Firehose ロギング パスワード検証 認証結果 認証結果 ファイル出⼒ Lambda イベント DynamoDB 課⾦処理 メトリック記録 Stats出⼒ Cloud Watch Event Stats取得 S3 Athena ログ検索 P/S P/S BQ
  26. Unity から GS2 を利⽤するのは簡単! SDKの初期化 (クレデンシャルを設定) GS2-Account のサンプル アカウントの作成

  27. Unity Editorで組み込むことも可能

  28. ご清聴ありがとうございました https://gs2.io/ 登録から3ヶ⽉または3万円利⽤するまで、クレジットカードの 登録無しでGS2を体験いただけます。 興味がございましたら、是⾮ご登録ください。 Game Server Services, Inc. https://gs2.io