ゼロからサーバレスの先頭に追いつこう

 ゼロからサーバレスの先頭に追いつこう

TECH x GAME COLLEGE #2 の登壇資料です
https://techxgamecollege.connpass.com/event/95716/

Game Server Services をよろしくお願いします。
https://gs2.io/

62340514ee3033d54d79c9e7a3db68d5?s=128

Kazutomo Niwa

August 29, 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 とは? フルサーバレスアーキテクチャ(FaaS)でモバイルゲーム向けの 汎⽤ゲームサーバを開発・提供。 各社がゲームサーバを開発している現状に疑問を感じ、あらゆる ゲームに使える汎⽤ゲームサーバを提供することをミッションと し、ゲームサーバ界の Unity

    を⽬指して開発中。 Game Server Services, Inc. https://gs2.io
  4. Game Server Services とは? 来⽉で設⽴2年というヒヨッコスタートアップですが、今年3⽉ に DeNA / KLab らから資⾦調達を実施。

    主な採⽤事例 Game Server Services, Inc. https://gs2.io 私、茄⼦で⾶びます(usaya株式会社) 講演数⽇前に Twitter でバズったりするも、 サーバレスアーキテクチャのおかげで無障害でサービス提供中
  5. サーバレスアーキテクチャの歴史

  6. 2014年11⽉ AWS Lambda発表(re:invent 2014) Game Server Services, Inc. https://gs2.io

  7. AWS Lambda とは? Game Server Services, Inc. https://gs2.io AWS 内のイベントをトリガーとして、クラウドに登録した関数を実⾏するもの

  8. AWS Lambda の実⾏イメージ ファイルPUT通知 サーバを瞬時に起動 処理を終えたらサーバを破棄 Game Server Services, Inc.

    https://gs2.io
  9. AWS Lambda の利点 Game Server Services, Inc. https://gs2.io 簡単に使えて、インフラについて考える必要が無くなることで、 メンテナンスコストが低く利⽤出来ること

    イベントに対してミリ秒単位で素早く反応し、関数が実⾏されること
  10. AWS Lambda のイベントソース Game Server Services, Inc. https://gs2.io AWS Lambda

    を実⾏する起点となるイベントは S3, DynamoDB, Kinesis, AWS SDK
  11. AWS Lambda の使⽤例 Game Server Services, Inc. https://gs2.io S3に写真をアップロード ->

    関数で画像のメタデータを解析 -> メタデータをDynamoDB に格納 メタデータに含まれる位置情報などからトレンドを分析 -> トレンドデータをDynamoDBに格納
  12. AWS Lambda の使⽤例 Game Server Services, Inc. https://gs2.io 最後にトレンドデータを元にプッシュ通知を出す関数を実⾏

  13. でも、おたかいんでしょう? Game Server Services, Inc. https://gs2.io 100万リクエストあたり$0.20 実⾏時間100ミリ秒あたり × メモリ割り当て128MBあたり

    $0.00000021
  14. ⽤語の定義 • この頃はまだアーキテクチャの名称が定まっていませんでした。 • 現在は Function as a Service(FaaS) と呼ばれていますが、当

    時は Dynamic Computing とも、Serverless Architecture/Computing とも呼ばれていました。 • ちなみに、現在は Dynamic Computing はなりを潜め、 Serverless Architecture はサーバの存在を感じさせないアーキ テクチャの総称として、FaaSだけでなくBaaSなども含むニュ アンスで使⽤されます。 Game Server Services, Inc. https://gs2.io
  15. 2015年6⽉ AWS Lambdaが東京に Game Server Services, Inc. https://gs2.io AWS Lambda

    が東京リージョンで利⽤出来るようになりました
  16. 2015年6⽉ AWS Lambdaが Java をサポート Game Server Services, Inc. https://gs2.io

    AWS Lambda で Java が利⽤出来るようになりました。
  17. 2015年7⽉ DynamoDB をイベントソースに指定出来るように Game Server Services, Inc. https://gs2.io AWS Lambda

    のイベントソースに DynamoDB の更新を指定出来るようになりました。 ※ re:invent であんな発表をしておきながら当初は出来なかったのです。
  18. 2015年7⽉ API Gateway発表 Game Server Services, Inc. https://gs2.io RESTful API

    を定義し、HTTP アクセス時に Lambda をトリガー出来るサービスが発表。
  19. 2015年9⽉ GS2の基礎研究開始 Game Server Services, Inc. https://gs2.io API Gateway +

    AWS Lambda を触っていて GS2 という事業に思い⾄り、 それを実現出来るかの基礎研究を開始
  20. 2015年10⽉ JAWS Framework公開 Game Server Services, Inc. https://gs2.io 現在の Serverless

    Framework である JAWS Framework が公開
  21. 2015年10⽉ Kinesis Firehose をリリース Game Server Services, Inc. https://gs2.io ログ集約などに使⽤出来る

    Kinesis Firehose をリリース。
  22. 2015年10⽉ AWS IoT が previewリリース Game Server Services, Inc. https://gs2.io

    フルマネージドMQTTサーバである AWS IoT を preview リリース。
  23. 2015年11⽉ GS2開発開始 Game Server Services, Inc. https://gs2.io 基礎研究を終え、弊社のプロダクトである Game Server

    Services の開発を開始
  24. 2016年12⽉ Lambda が Python 2.7 をサポート Game Server Services, Inc.

    https://gs2.io Lambda が Python2.7 をサポートしました。
  25. 2015年12⽉ AWS IoT が GA Game Server Services, Inc. https://gs2.io

    AWS IoT が GA に。
  26. 2016年1⽉Lambda のイベントソースに Events が追加 Game Server Services, Inc. https://gs2.io Lambda

    を定期実⾏出来るように(当時は最短5分。現在は1分)
  27. 2016年2⽉ Google Cloud Functions αリリース Game Server Services, Inc. https://gs2.io

    Google が Google Cloud Functions を招待制でαリリースしました。(対応⾔語は node.js のみ)
  28. 2016年2⽉Lambda が VPC に対応 Game Server Services, Inc. https://gs2.io Lambda

    に ENI を割り当てることで VPC 内のリソースを触れるように
  29. 2016年2⽉ Bluemix OpenWhisk が previewリリース Game Server Services, Inc. https://gs2.io

    IBM の提供する Bluemix OpenWhisk が previewリリース しました。 Node.js Swift に対応
  30. 2016年4⽉ Azure Functions が プレビューリリース Game Server Services, Inc. https://gs2.io

    Microsoft が Azure Functions をプレビューリリースしました。 当時は node.js と C# のみの対応でした。
  31. 2016年5⽉ ServerlessConf NYC開催 Game Server Services, Inc. https://gs2.io コミュニティ主催のカンファレンスである ServerlessConf

    が 世界初で初めてニューヨークで開催されました。
  32. 2016年6⽉ Firebaseリリース Game Server Services, Inc. https://gs2.io Google が 2014年に買収した

    Firebase を GCP との統合を進め、再リリースしました。
  33. 2016年9⽉ GS2創業 Game Server Services, Inc. https://gs2.io GS2 が創業しました。

  34. 2016年9⽉ Azure Functions が F# に対応 Game Server Services, Inc.

    https://gs2.io Microsoft が Azure Functions が F# に対応しました。
  35. 2016年9⽉ Bluemix OpenWhisk が βリリース Game Server Services, Inc. https://gs2.io

    IBM の提供する Bluemix OpenWhisk が βリリース しました。 Java、Python に追加対応
  36. 2016年10⽉ Azure Functions が API Routing に対応 Game Server Services,

    Inc. https://gs2.io Microsoft が Azure Functions が API Routing に対応し、 RESTful な API で使⽤出来るようになりました。
  37. 2016年10⽉ ServerlessConf Tokyo 開催 Game Server Services, Inc. https://gs2.io 世界で2都市⽬として、東京で

    ServerlessConf が開催されました。 創業間もないですが、GS2も登壇しました。
  38. サーバレスとマイクロサービスで 変わるゲームサーバ開発 Game Server Services, Inc. https://gs2.io 登壇資料からエッセンスを抽出します。

  39. サーバレスとマイクロサービスで 変わるゲームサーバ開発 Game Server Services, Inc. https://gs2.io

  40. サーバレスとマイクロサービスで 変わるゲームサーバ開発 Game Server Services, Inc. https://gs2.io

  41. サーバレスとマイクロサービスで 変わるゲームサーバ開発 Game Server Services, Inc. https://gs2.io

  42. サーバレスとマイクロサービスで 変わるゲームサーバ開発 Game Server Services, Inc. https://gs2.io

  43. サーバレスとマイクロサービスで 変わるゲームサーバ開発 Game Server Services, Inc. https://gs2.io

  44. サーバレスとマイクロサービスで 変わるゲームサーバ開発 Game Server Services, Inc. https://gs2.io

  45. サーバレスとマイクロサービスで 変わるゲームサーバ開発 Game Server Services, Inc. https://gs2.io

  46. サーバレスとマイクロサービスで 変わるゲームサーバ開発 Game Server Services, Inc. https://gs2.io

  47. サーバレスとマイクロサービスで 変わるゲームサーバ開発 Game Server Services, Inc. https://gs2.io

  48. サーバレスとマイクロサービスで 変わるゲームサーバ開発 Game Server Services, Inc. https://gs2.io

  49. 2016年11⽉ Azure Functions が GA Game Server Services, Inc. https://gs2.io

    Microsoft が Azure Functions をGAしました。
  50. 2016年11⽉ AWS SAM がリリース Game Server Services, Inc. https://gs2.io Cloud

    Formation のプリプロセッサとして稼働し、 Lambda のアプリケーションフレームワークとして使⽤出来る AWS Serverless Application Model(SAM) がリリース。
  51. 2016年12⽉ Step Functions がリリース Game Server Services, Inc. https://gs2.io Lambda

    でステートフルな処理を実⾏するための Step Functions がリリース。
  52. 2016年12⽉ GS2のサービスを開始 Game Server Services, Inc. https://gs2.io GS2 のサービスを開始しました。 おそらく世界初のフルサーバレスで提供されるサービス。

  53. 2016年12⽉ Bluemix OpenWhisk が GA Game Server Services, Inc. https://gs2.io

    IBM の提供する Bluemix OpenWhisk が GA しました。
  54. 2016年12⽉ Azure Functions がデバッグ実⾏に対応 Game Server Services, Inc. https://gs2.io Azure

    Functions が Visual Studio 2015 / Visual Studio Code / CLI によるデバッグ実⾏に対応。
  55. 2016年12⽉ Lambda が C#(.NET Core 1.0) をサポート Game Server Services,

    Inc. https://gs2.io Lambda が C#(.NET Core 1.0) をサポートしました。
  56. 2017年3⽉ Google Cloud Functions βリリース Game Server Services, Inc. https://gs2.io

    Google が Google Cloud Functions をパブリックβリリースしました。
  57. 2017年4⽉ X-Ray が提供開始 Game Server Services, Inc. https://gs2.io Lambda の動作を視覚化する

    X-Ray が提供開始。 パフォーマンスチューニングや不具合の調査に活⽤出来るように。
  58. 2017年7⽉ Bluemix OpenWhisk が IBM Cloud Functions へ Game Server

    Services, Inc. https://gs2.io IBM の提供する Bluemix OpenWhisk が IBM Cloud Functions にリブランドしました。 Bluemix OpenWhisk でも使⽤している OSS実装である Apache OpenWhisk との混同などを理由に挙げています。 同時に PHP のサポートが発表。
  59. 2017年8⽉ Chalice が GA Game Server Services, Inc. https://gs2.io AWS

    が提供する SAM と異なるアプリケーションフレームワーク。 CF のプリプロセッサとして稼働する SAM とは異なり、 がっつり Python のアプリケーションフレームワーク。
  60. 2017年10⽉ Azure Functions Java対応(preview) Game Server Services, Inc. https://gs2.io Microsoft

    が Azure Functions の Java対応のプレビューリリースしました。
  61. 2017年11⽉ ServerlessConf Tokyo 開催 Game Server Services, Inc. https://gs2.io 2年⽬・2回⽬となる

    Serverless Conf Tokyoが開催。 GS2は昨年に引き続き登壇しました。
  62. 真のサーバレスアーキテクトと サーバレス時代のゲーム開発・運⽤ Game Server Services, Inc. https://gs2.io 登壇資料からエッセンスを抽出します。

  63. 真のサーバレスアーキテクトと サーバレス時代のゲーム開発・運⽤ Game Server Services, Inc. https://gs2.io サーバレス時代の設計者は、フルマネージドサービスの特性を把握して 適切なタイミングで使⽤出来る能⼒が求められる。

  64. 真のサーバレスアーキテクトと サーバレス時代のゲーム開発・運⽤ Game Server Services, Inc. https://gs2.io GS2 の⾏っているコールドスタート対策。 1つのLambdaファンクションに全てのRESTアクセスを向けて

    呼び出し頻度の低いエンドポイントでもコールドスタートしにくいように。
  65. 真のサーバレスアーキテクトと サーバレス時代のゲーム開発・運⽤ Game Server Services, Inc. https://gs2.io ログをいかに集約し、検索出来る状態にするか。 GS2 では

    Kinesis Firehose -> S3 -> BigQuery とログを流している
  66. 真のサーバレスアーキテクトと サーバレス時代のゲーム開発・運⽤ Game Server Services, Inc. https://gs2.io ⾮同期処理をどう扱うか。 AWS IoT

    を使って MQTT経由でサーバからプッシュ通知をすることで解決。
  67. 真のサーバレスアーキテクトと サーバレス時代のゲーム開発・運⽤ Game Server Services, Inc. https://gs2.io DynamoDB はトランザクション機能がない。 部分的に

    GCP の Cloud DataStore を使うなどして対応。
  68. 真のサーバレスアーキテクトと サーバレス時代のゲーム開発・運⽤ Game Server Services, Inc. https://gs2.io GS2 では IAM

    を模したアクセス権限管理を提供している。 ポリシー判定Lambdaは全てのマイクロサービスが共通して呼び出すファンクションに切り出されている。 ポリシー判定処理を切り出している理由は、ポリシードキュメントのキャッシュヒット率を⾼める⽬的。
  69. 真のサーバレスアーキテクトと サーバレス時代のゲーム開発・運⽤ Game Server Services, Inc. https://gs2.io GS2 の管理画⾯はEC2で動かしていた。 GAE

    SE が Java8 に対応したため、めでたくサーバレス化できた。
  70. 真のサーバレスアーキテクトと サーバレス時代のゲーム開発・運⽤ Game Server Services, Inc. https://gs2.io サーバレスアーキテクチャでの開発は、ベンダーロックインは避けられない。 何かあったときにすぐに連絡の取れる関係になっておくのがオススメ。

  71. 真のサーバレスアーキテクトと サーバレス時代のゲーム開発・運⽤ Game Server Services, Inc. https://gs2.io サーバレスによって、インフラの死活監視はいらなくなったとしても サービスが正しく稼働しているか判断出来るよう、稼働状況は可視化しておくべき。

  72. 2017年12⽉ Cloud9 を使って Lambda の開発が可能に Game Server Services, Inc. https://gs2.io

    AWS が提供するブラウザ上で動作するIDEである Cloud9 を使って Lambda が開発出来るように。
  73. 2018年1⽉ Lambda が Go と C#(.NET Core 2.0) をサポート Game

    Server Services, Inc. https://gs2.io Lambda が Golang と C#(.NET Core 2.0) をサポートしました。
  74. 2018年6⽉ Google Cloud Functions が東京に Game Server Services, Inc. https://gs2.io

    Google Cloud Functions が東京リージョンで利⽤出来るように。
  75. 2018年6⽉ イベントソースにSQSを使⽤可能に Game Server Services, Inc. https://gs2.io Lambda がイベントソースに SQS

    を使⽤出来るようになりました。
  76. 2018年7⽉ Google Cloud Functions がGA Game Server Services, Inc. https://gs2.io

    Google Cloud Functions が GA し、SLA がつくように。 対応⾔語に Python3.6 を追加。
  77. 2018年7⽉ Serverless containers が発表 Game Server Services, Inc. https://gs2.io Google

    が Serverless containers を発表しました。 Serverless containers は App Engine Flexible のリブランド+Dockerイメージによるデプロイの対応。
  78. 今後の⾒えてる予定 Game Server Services, Inc. https://gs2.io • 9⽉ ServerlessConf Tokyo

    2018 • GS2 は今年も登壇します。今年は運⽤周りを中⼼に話します。 • 11⽉ re:invent 2018 • ラスベガスで開催される AWS 主催のカンファレンスです。 毎年サーバレス関連のアップデートが複数あるので、今年も何かがあ るはずです。
  79. 次は実践! 歴史を学んだことで、どのようなことがサーバレスで出来るのか はなんとなく分かるようになったはずです。 あとは実際に⼿を動かしてみてください! Game Server Services, Inc. https://gs2.io