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

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

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

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

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

Kazutomo Niwa

August 29, 2018
Tweet

More Decks by Kazutomo Niwa

Other Decks in Technology

Transcript

  1. ゼロからサーバレスの先端に追いつこう
    Game Server Services 株式会社
    代表取締役社⻑CEO 丹⽻ ⼀智

    View full-size slide

  2. ⾃⼰紹介
    丹⽻ ⼀智(にわ かずとも)
    Game Server Services 株式会社 代表取締役社⻑ CEO
    2006年 株式会社セガ⼊社
    携帯電話向けゲームおよびサーバ開発業務に従事
    2009年 任天堂株式会社⼊社
    ニンテンドー3DSのOS/SDK開発や、
    ゲームサーバの開発・運⽤業務に従事
    2016年 Game Server Services 株式会社 設⽴
    Game Server Services, Inc.
    https://gs2.io

    View full-size slide

  3. Game Server Services とは?
    フルサーバレスアーキテクチャ(FaaS)でモバイルゲーム向けの
    汎⽤ゲームサーバを開発・提供。
    各社がゲームサーバを開発している現状に疑問を感じ、あらゆる
    ゲームに使える汎⽤ゲームサーバを提供することをミッションと
    し、ゲームサーバ界の Unity を⽬指して開発中。
    Game Server Services, Inc.
    https://gs2.io

    View full-size slide

  4. Game Server Services とは?
    来⽉で設⽴2年というヒヨッコスタートアップですが、今年3⽉
    に DeNA / KLab らから資⾦調達を実施。
    主な採⽤事例
    Game Server Services, Inc.
    https://gs2.io
    私、茄⼦で⾶びます(usaya株式会社)
    講演数⽇前に Twitter でバズったりするも、
    サーバレスアーキテクチャのおかげで無障害でサービス提供中

    View full-size slide

  5. サーバレスアーキテクチャの歴史

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  9. AWS Lambda の利点
    Game Server Services, Inc.
    https://gs2.io
    簡単に使えて、インフラについて考える必要が無くなることで、
    メンテナンスコストが低く利⽤出来ること
    イベントに対してミリ秒単位で素早く反応し、関数が実⾏されること

    View full-size slide

  10. AWS Lambda のイベントソース
    Game Server Services, Inc.
    https://gs2.io
    AWS Lambda を実⾏する起点となるイベントは S3, DynamoDB, Kinesis, AWS SDK

    View full-size slide

  11. AWS Lambda の使⽤例
    Game Server Services, Inc.
    https://gs2.io
    S3に写真をアップロード -> 関数で画像のメタデータを解析 -> メタデータをDynamoDB に格納
    メタデータに含まれる位置情報などからトレンドを分析 -> トレンドデータをDynamoDBに格納

    View full-size slide

  12. AWS Lambda の使⽤例
    Game Server Services, Inc.
    https://gs2.io
    最後にトレンドデータを元にプッシュ通知を出す関数を実⾏

    View full-size slide

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

    View full-size slide

  14. ⽤語の定義
    • この頃はまだアーキテクチャの名称が定まっていませんでした。
    • 現在は Function as a Service(FaaS) と呼ばれていますが、当
    時は Dynamic Computing とも、Serverless
    Architecture/Computing とも呼ばれていました。
    • ちなみに、現在は Dynamic Computing はなりを潜め、
    Serverless Architecture はサーバの存在を感じさせないアーキ
    テクチャの総称として、FaaSだけでなくBaaSなども含むニュ
    アンスで使⽤されます。
    Game Server Services, Inc.
    https://gs2.io

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  18. 2015年7⽉ API Gateway発表
    Game Server Services, Inc.
    https://gs2.io
    RESTful API を定義し、HTTP アクセス時に Lambda をトリガー出来るサービスが発表。

    View full-size slide

  19. 2015年9⽉ GS2の基礎研究開始
    Game Server Services, Inc.
    https://gs2.io
    API Gateway + AWS Lambda を触っていて GS2 という事業に思い⾄り、
    それを実現出来るかの基礎研究を開始

    View full-size slide

  20. 2015年10⽉ JAWS Framework公開
    Game Server Services, Inc.
    https://gs2.io
    現在の Serverless Framework である JAWS Framework が公開

    View full-size slide

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

    View full-size slide

  22. 2015年10⽉ AWS IoT が previewリリース
    Game Server Services, Inc.
    https://gs2.io
    フルマネージドMQTTサーバである AWS IoT を preview リリース。

    View full-size slide

  23. 2015年11⽉ GS2開発開始
    Game Server Services, Inc.
    https://gs2.io
    基礎研究を終え、弊社のプロダクトである Game Server Services の開発を開始

    View full-size slide

  24. 2016年12⽉ Lambda が Python 2.7 をサポート
    Game Server Services, Inc.
    https://gs2.io
    Lambda が Python2.7 をサポートしました。

    View full-size slide

  25. 2015年12⽉ AWS IoT が GA
    Game Server Services, Inc.
    https://gs2.io
    AWS IoT が GA に。

    View full-size slide

  26. 2016年1⽉Lambda のイベントソースに Events が追加
    Game Server Services, Inc.
    https://gs2.io
    Lambda を定期実⾏出来るように(当時は最短5分。現在は1分)

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  29. 2016年2⽉ Bluemix OpenWhisk が previewリリース
    Game Server Services, Inc.
    https://gs2.io
    IBM の提供する Bluemix OpenWhisk が previewリリース しました。
    Node.js Swift に対応

    View full-size slide

  30. 2016年4⽉ Azure Functions が プレビューリリース
    Game Server Services, Inc.
    https://gs2.io
    Microsoft が Azure Functions をプレビューリリースしました。
    当時は node.js と C# のみの対応でした。

    View full-size slide

  31. 2016年5⽉ ServerlessConf NYC開催
    Game Server Services, Inc.
    https://gs2.io
    コミュニティ主催のカンファレンスである ServerlessConf が
    世界初で初めてニューヨークで開催されました。

    View full-size slide

  32. 2016年6⽉ Firebaseリリース
    Game Server Services, Inc.
    https://gs2.io
    Google が 2014年に買収した Firebase を GCP との統合を進め、再リリースしました。

    View full-size slide

  33. 2016年9⽉ GS2創業
    Game Server Services, Inc.
    https://gs2.io
    GS2 が創業しました。

    View full-size slide

  34. 2016年9⽉ Azure Functions が F# に対応
    Game Server Services, Inc.
    https://gs2.io
    Microsoft が Azure Functions が F# に対応しました。

    View full-size slide

  35. 2016年9⽉ Bluemix OpenWhisk が βリリース
    Game Server Services, Inc.
    https://gs2.io
    IBM の提供する Bluemix OpenWhisk が βリリース しました。
    Java、Python に追加対応

    View full-size slide

  36. 2016年10⽉ Azure Functions が API Routing に対応
    Game Server Services, Inc.
    https://gs2.io
    Microsoft が Azure Functions が API Routing に対応し、
    RESTful な API で使⽤出来るようになりました。

    View full-size slide

  37. 2016年10⽉ ServerlessConf Tokyo 開催
    Game Server Services, Inc.
    https://gs2.io
    世界で2都市⽬として、東京で ServerlessConf が開催されました。
    創業間もないですが、GS2も登壇しました。

    View full-size slide

  38. サーバレスとマイクロサービスで
    変わるゲームサーバ開発
    Game Server Services, Inc.
    https://gs2.io
    登壇資料からエッセンスを抽出します。

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  49. 2016年11⽉ Azure Functions が GA
    Game Server Services, Inc.
    https://gs2.io
    Microsoft が Azure Functions をGAしました。

    View full-size slide

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

    View full-size slide

  51. 2016年12⽉ Step Functions がリリース
    Game Server Services, Inc.
    https://gs2.io
    Lambda でステートフルな処理を実⾏するための Step Functions がリリース。

    View full-size slide

  52. 2016年12⽉ GS2のサービスを開始
    Game Server Services, Inc.
    https://gs2.io
    GS2 のサービスを開始しました。
    おそらく世界初のフルサーバレスで提供されるサービス。

    View full-size slide

  53. 2016年12⽉ Bluemix OpenWhisk が GA
    Game Server Services, Inc.
    https://gs2.io
    IBM の提供する Bluemix OpenWhisk が GA しました。

    View full-size slide

  54. 2016年12⽉ Azure Functions がデバッグ実⾏に対応
    Game Server Services, Inc.
    https://gs2.io
    Azure Functions が Visual Studio 2015 / Visual Studio Code / CLI によるデバッグ実⾏に対応。

    View full-size slide

  55. 2016年12⽉ Lambda が C#(.NET Core 1.0) をサポート
    Game Server Services, Inc.
    https://gs2.io
    Lambda が C#(.NET Core 1.0) をサポートしました。

    View full-size slide

  56. 2017年3⽉ Google Cloud Functions βリリース
    Game Server Services, Inc.
    https://gs2.io
    Google が Google Cloud Functions をパブリックβリリースしました。

    View full-size slide

  57. 2017年4⽉ X-Ray が提供開始
    Game Server Services, Inc.
    https://gs2.io
    Lambda の動作を視覚化する X-Ray が提供開始。
    パフォーマンスチューニングや不具合の調査に活⽤出来るように。

    View full-size slide

  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 のサポートが発表。

    View full-size slide

  59. 2017年8⽉ Chalice が GA
    Game Server Services, Inc.
    https://gs2.io
    AWS が提供する SAM と異なるアプリケーションフレームワーク。
    CF のプリプロセッサとして稼働する SAM とは異なり、
    がっつり Python のアプリケーションフレームワーク。

    View full-size slide

  60. 2017年10⽉ Azure Functions Java対応(preview)
    Game Server Services, Inc.
    https://gs2.io
    Microsoft が Azure Functions の Java対応のプレビューリリースしました。

    View full-size slide

  61. 2017年11⽉ ServerlessConf Tokyo 開催
    Game Server Services, Inc.
    https://gs2.io
    2年⽬・2回⽬となる Serverless Conf Tokyoが開催。
    GS2は昨年に引き続き登壇しました。

    View full-size slide

  62. 真のサーバレスアーキテクトと
    サーバレス時代のゲーム開発・運⽤
    Game Server Services, Inc.
    https://gs2.io
    登壇資料からエッセンスを抽出します。

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  65. 真のサーバレスアーキテクトと
    サーバレス時代のゲーム開発・運⽤
    Game Server Services, Inc.
    https://gs2.io
    ログをいかに集約し、検索出来る状態にするか。
    GS2 では Kinesis Firehose -> S3 -> BigQuery とログを流している

    View full-size slide

  66. 真のサーバレスアーキテクトと
    サーバレス時代のゲーム開発・運⽤
    Game Server Services, Inc.
    https://gs2.io
    ⾮同期処理をどう扱うか。
    AWS IoT を使って MQTT経由でサーバからプッシュ通知をすることで解決。

    View full-size slide

  67. 真のサーバレスアーキテクトと
    サーバレス時代のゲーム開発・運⽤
    Game Server Services, Inc.
    https://gs2.io
    DynamoDB はトランザクション機能がない。
    部分的に GCP の Cloud DataStore を使うなどして対応。

    View full-size slide

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

    View full-size slide

  69. 真のサーバレスアーキテクトと
    サーバレス時代のゲーム開発・運⽤
    Game Server Services, Inc.
    https://gs2.io
    GS2 の管理画⾯はEC2で動かしていた。
    GAE SE が Java8 に対応したため、めでたくサーバレス化できた。

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  72. 2017年12⽉ Cloud9 を使って Lambda の開発が可能に
    Game Server Services, Inc.
    https://gs2.io
    AWS が提供するブラウザ上で動作するIDEである Cloud9 を使って Lambda が開発出来るように。

    View full-size slide

  73. 2018年1⽉ Lambda が Go と C#(.NET Core 2.0)
    をサポート
    Game Server Services, Inc.
    https://gs2.io
    Lambda が Golang と C#(.NET Core 2.0) をサポートしました。

    View full-size slide

  74. 2018年6⽉ Google Cloud Functions が東京に
    Game Server Services, Inc.
    https://gs2.io
    Google Cloud Functions が東京リージョンで利⽤出来るように。

    View full-size slide

  75. 2018年6⽉ イベントソースにSQSを使⽤可能に
    Game Server Services, Inc.
    https://gs2.io
    Lambda がイベントソースに SQS を使⽤出来るようになりました。

    View full-size slide

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

    View full-size slide

  77. 2018年7⽉ Serverless containers が発表
    Game Server Services, Inc.
    https://gs2.io
    Google が Serverless containers を発表しました。
    Serverless containers は App Engine Flexible のリブランド+Dockerイメージによるデプロイの対応。

    View full-size slide

  78. 今後の⾒えてる予定
    Game Server Services, Inc.
    https://gs2.io
    • 9⽉ ServerlessConf Tokyo 2018
    • GS2 は今年も登壇します。今年は運⽤周りを中⼼に話します。
    • 11⽉ re:invent 2018
    • ラスベガスで開催される AWS 主催のカンファレンスです。
    毎年サーバレス関連のアップデートが複数あるので、今年も何かがあ
    るはずです。

    View full-size slide

  79. 次は実践!
    歴史を学んだことで、どのようなことがサーバレスで出来るのか
    はなんとなく分かるようになったはずです。
    あとは実際に⼿を動かしてみてください!
    Game Server Services, Inc.
    https://gs2.io

    View full-size slide