ゼロからサーバレスの先端に追いつこう
Game Server Services 株式会社
代表取締役社⻑CEO 丹⽻ ⼀智
Slide 2
Slide 2 text
⾃⼰紹介
丹⽻ ⼀智(にわ かずとも)
Game Server Services 株式会社 代表取締役社⻑ CEO
2006年 株式会社セガ⼊社
携帯電話向けゲームおよびサーバ開発業務に従事
2009年 任天堂株式会社⼊社
ニンテンドー3DSのOS/SDK開発や、
ゲームサーバの開発・運⽤業務に従事
2016年 Game Server Services 株式会社 設⽴
Game Server Services, Inc.
https://gs2.io
Slide 3
Slide 3 text
Game Server Services とは?
フルサーバレスアーキテクチャ(FaaS)でモバイルゲーム向けの
汎⽤ゲームサーバを開発・提供。
各社がゲームサーバを開発している現状に疑問を感じ、あらゆる
ゲームに使える汎⽤ゲームサーバを提供することをミッションと
し、ゲームサーバ界の Unity を⽬指して開発中。
Game Server Services, Inc.
https://gs2.io
Slide 4
Slide 4 text
Game Server Services とは?
来⽉で設⽴2年というヒヨッコスタートアップですが、今年3⽉
に DeNA / KLab らから資⾦調達を実施。
主な採⽤事例
Game Server Services, Inc.
https://gs2.io
私、茄⼦で⾶びます(usaya株式会社)
講演数⽇前に Twitter でバズったりするも、
サーバレスアーキテクチャのおかげで無障害でサービス提供中
Slide 5
Slide 5 text
サーバレスアーキテクチャの歴史
Slide 6
Slide 6 text
2014年11⽉ AWS Lambda発表(re:invent 2014)
Game Server Services, Inc.
https://gs2.io
Slide 7
Slide 7 text
AWS Lambda とは?
Game Server Services, Inc.
https://gs2.io
AWS 内のイベントをトリガーとして、クラウドに登録した関数を実⾏するもの
Slide 8
Slide 8 text
AWS Lambda の実⾏イメージ
ファイルPUT通知 サーバを瞬時に起動
処理を終えたらサーバを破棄
Game Server Services, Inc.
https://gs2.io
Slide 9
Slide 9 text
AWS Lambda の利点
Game Server Services, Inc.
https://gs2.io
簡単に使えて、インフラについて考える必要が無くなることで、
メンテナンスコストが低く利⽤出来ること
イベントに対してミリ秒単位で素早く反応し、関数が実⾏されること
Slide 10
Slide 10 text
AWS Lambda のイベントソース
Game Server Services, Inc.
https://gs2.io
AWS Lambda を実⾏する起点となるイベントは S3, DynamoDB, Kinesis, AWS SDK
Slide 11
Slide 11 text
AWS Lambda の使⽤例
Game Server Services, Inc.
https://gs2.io
S3に写真をアップロード -> 関数で画像のメタデータを解析 -> メタデータをDynamoDB に格納
メタデータに含まれる位置情報などからトレンドを分析 -> トレンドデータをDynamoDBに格納
Slide 12
Slide 12 text
AWS Lambda の使⽤例
Game Server Services, Inc.
https://gs2.io
最後にトレンドデータを元にプッシュ通知を出す関数を実⾏
Slide 13
Slide 13 text
でも、おたかいんでしょう?
Game Server Services, Inc.
https://gs2.io
100万リクエストあたり$0.20
実⾏時間100ミリ秒あたり × メモリ割り当て128MBあたり $0.00000021
Slide 14
Slide 14 text
⽤語の定義
• この頃はまだアーキテクチャの名称が定まっていませんでした。
• 現在は Function as a Service(FaaS) と呼ばれていますが、当
時は Dynamic Computing とも、Serverless
Architecture/Computing とも呼ばれていました。
• ちなみに、現在は Dynamic Computing はなりを潜め、
Serverless Architecture はサーバの存在を感じさせないアーキ
テクチャの総称として、FaaSだけでなくBaaSなども含むニュ
アンスで使⽤されます。
Game Server Services, Inc.
https://gs2.io
Slide 15
Slide 15 text
2015年6⽉ AWS Lambdaが東京に
Game Server Services, Inc.
https://gs2.io
AWS Lambda が東京リージョンで利⽤出来るようになりました
Slide 16
Slide 16 text
2015年6⽉ AWS Lambdaが Java をサポート
Game Server Services, Inc.
https://gs2.io
AWS Lambda で Java が利⽤出来るようになりました。
Slide 17
Slide 17 text
2015年7⽉ DynamoDB をイベントソースに指定出来るように
Game Server Services, Inc.
https://gs2.io
AWS Lambda のイベントソースに DynamoDB の更新を指定出来るようになりました。
※ re:invent であんな発表をしておきながら当初は出来なかったのです。
Slide 18
Slide 18 text
2015年7⽉ API Gateway発表
Game Server Services, Inc.
https://gs2.io
RESTful API を定義し、HTTP アクセス時に Lambda をトリガー出来るサービスが発表。
Slide 19
Slide 19 text
2015年9⽉ GS2の基礎研究開始
Game Server Services, Inc.
https://gs2.io
API Gateway + AWS Lambda を触っていて GS2 という事業に思い⾄り、
それを実現出来るかの基礎研究を開始
Slide 20
Slide 20 text
2015年10⽉ JAWS Framework公開
Game Server Services, Inc.
https://gs2.io
現在の Serverless Framework である JAWS Framework が公開
Slide 21
Slide 21 text
2015年10⽉ Kinesis Firehose をリリース
Game Server Services, Inc.
https://gs2.io
ログ集約などに使⽤出来る Kinesis Firehose をリリース。
Slide 22
Slide 22 text
2015年10⽉ AWS IoT が previewリリース
Game Server Services, Inc.
https://gs2.io
フルマネージドMQTTサーバである AWS IoT を preview リリース。
Slide 23
Slide 23 text
2015年11⽉ GS2開発開始
Game Server Services, Inc.
https://gs2.io
基礎研究を終え、弊社のプロダクトである Game Server Services の開発を開始
Slide 24
Slide 24 text
2016年12⽉ Lambda が Python 2.7 をサポート
Game Server Services, Inc.
https://gs2.io
Lambda が Python2.7 をサポートしました。
Slide 25
Slide 25 text
2015年12⽉ AWS IoT が GA
Game Server Services, Inc.
https://gs2.io
AWS IoT が GA に。
Slide 26
Slide 26 text
2016年1⽉Lambda のイベントソースに Events が追加
Game Server Services, Inc.
https://gs2.io
Lambda を定期実⾏出来るように(当時は最短5分。現在は1分)
Slide 27
Slide 27 text
2016年2⽉ Google Cloud Functions αリリース
Game Server Services, Inc.
https://gs2.io
Google が Google Cloud Functions を招待制でαリリースしました。(対応⾔語は node.js のみ)
Slide 28
Slide 28 text
2016年2⽉Lambda が VPC に対応
Game Server Services, Inc.
https://gs2.io
Lambda に ENI を割り当てることで VPC 内のリソースを触れるように
Slide 29
Slide 29 text
2016年2⽉ Bluemix OpenWhisk が previewリリース
Game Server Services, Inc.
https://gs2.io
IBM の提供する Bluemix OpenWhisk が previewリリース しました。
Node.js Swift に対応
Slide 30
Slide 30 text
2016年4⽉ Azure Functions が プレビューリリース
Game Server Services, Inc.
https://gs2.io
Microsoft が Azure Functions をプレビューリリースしました。
当時は node.js と C# のみの対応でした。
Slide 31
Slide 31 text
2016年5⽉ ServerlessConf NYC開催
Game Server Services, Inc.
https://gs2.io
コミュニティ主催のカンファレンスである ServerlessConf が
世界初で初めてニューヨークで開催されました。
Slide 32
Slide 32 text
2016年6⽉ Firebaseリリース
Game Server Services, Inc.
https://gs2.io
Google が 2014年に買収した Firebase を GCP との統合を進め、再リリースしました。
Slide 33
Slide 33 text
2016年9⽉ GS2創業
Game Server Services, Inc.
https://gs2.io
GS2 が創業しました。
Slide 34
Slide 34 text
2016年9⽉ Azure Functions が F# に対応
Game Server Services, Inc.
https://gs2.io
Microsoft が Azure Functions が F# に対応しました。
Slide 35
Slide 35 text
2016年9⽉ Bluemix OpenWhisk が βリリース
Game Server Services, Inc.
https://gs2.io
IBM の提供する Bluemix OpenWhisk が βリリース しました。
Java、Python に追加対応
Slide 36
Slide 36 text
2016年10⽉ Azure Functions が API Routing に対応
Game Server Services, Inc.
https://gs2.io
Microsoft が Azure Functions が API Routing に対応し、
RESTful な API で使⽤出来るようになりました。
Slide 37
Slide 37 text
2016年10⽉ ServerlessConf Tokyo 開催
Game Server Services, Inc.
https://gs2.io
世界で2都市⽬として、東京で ServerlessConf が開催されました。
創業間もないですが、GS2も登壇しました。
Slide 38
Slide 38 text
サーバレスとマイクロサービスで
変わるゲームサーバ開発
Game Server Services, Inc.
https://gs2.io
登壇資料からエッセンスを抽出します。
Slide 39
Slide 39 text
サーバレスとマイクロサービスで
変わるゲームサーバ開発
Game Server Services, Inc.
https://gs2.io
Slide 40
Slide 40 text
サーバレスとマイクロサービスで
変わるゲームサーバ開発
Game Server Services, Inc.
https://gs2.io
Slide 41
Slide 41 text
サーバレスとマイクロサービスで
変わるゲームサーバ開発
Game Server Services, Inc.
https://gs2.io
Slide 42
Slide 42 text
サーバレスとマイクロサービスで
変わるゲームサーバ開発
Game Server Services, Inc.
https://gs2.io
Slide 43
Slide 43 text
サーバレスとマイクロサービスで
変わるゲームサーバ開発
Game Server Services, Inc.
https://gs2.io
Slide 44
Slide 44 text
サーバレスとマイクロサービスで
変わるゲームサーバ開発
Game Server Services, Inc.
https://gs2.io
Slide 45
Slide 45 text
サーバレスとマイクロサービスで
変わるゲームサーバ開発
Game Server Services, Inc.
https://gs2.io
Slide 46
Slide 46 text
サーバレスとマイクロサービスで
変わるゲームサーバ開発
Game Server Services, Inc.
https://gs2.io
Slide 47
Slide 47 text
サーバレスとマイクロサービスで
変わるゲームサーバ開発
Game Server Services, Inc.
https://gs2.io
Slide 48
Slide 48 text
サーバレスとマイクロサービスで
変わるゲームサーバ開発
Game Server Services, Inc.
https://gs2.io
Slide 49
Slide 49 text
2016年11⽉ Azure Functions が GA
Game Server Services, Inc.
https://gs2.io
Microsoft が Azure Functions をGAしました。
Slide 50
Slide 50 text
2016年11⽉ AWS SAM がリリース
Game Server Services, Inc.
https://gs2.io
Cloud Formation のプリプロセッサとして稼働し、
Lambda のアプリケーションフレームワークとして使⽤出来る
AWS Serverless Application Model(SAM) がリリース。
Slide 51
Slide 51 text
2016年12⽉ Step Functions がリリース
Game Server Services, Inc.
https://gs2.io
Lambda でステートフルな処理を実⾏するための Step Functions がリリース。
Slide 52
Slide 52 text
2016年12⽉ GS2のサービスを開始
Game Server Services, Inc.
https://gs2.io
GS2 のサービスを開始しました。
おそらく世界初のフルサーバレスで提供されるサービス。
Slide 53
Slide 53 text
2016年12⽉ Bluemix OpenWhisk が GA
Game Server Services, Inc.
https://gs2.io
IBM の提供する Bluemix OpenWhisk が GA しました。
Slide 54
Slide 54 text
2016年12⽉ Azure Functions がデバッグ実⾏に対応
Game Server Services, Inc.
https://gs2.io
Azure Functions が Visual Studio 2015 / Visual Studio Code / CLI によるデバッグ実⾏に対応。
Slide 55
Slide 55 text
2016年12⽉ Lambda が C#(.NET Core 1.0) をサポート
Game Server Services, Inc.
https://gs2.io
Lambda が C#(.NET Core 1.0) をサポートしました。
Slide 56
Slide 56 text
2017年3⽉ Google Cloud Functions βリリース
Game Server Services, Inc.
https://gs2.io
Google が Google Cloud Functions をパブリックβリリースしました。
Slide 57
Slide 57 text
2017年4⽉ X-Ray が提供開始
Game Server Services, Inc.
https://gs2.io
Lambda の動作を視覚化する X-Ray が提供開始。
パフォーマンスチューニングや不具合の調査に活⽤出来るように。
Slide 58
Slide 58 text
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 のサポートが発表。
Slide 59
Slide 59 text
2017年8⽉ Chalice が GA
Game Server Services, Inc.
https://gs2.io
AWS が提供する SAM と異なるアプリケーションフレームワーク。
CF のプリプロセッサとして稼働する SAM とは異なり、
がっつり Python のアプリケーションフレームワーク。
Slide 60
Slide 60 text
2017年10⽉ Azure Functions Java対応(preview)
Game Server Services, Inc.
https://gs2.io
Microsoft が Azure Functions の Java対応のプレビューリリースしました。
Slide 61
Slide 61 text
2017年11⽉ ServerlessConf Tokyo 開催
Game Server Services, Inc.
https://gs2.io
2年⽬・2回⽬となる Serverless Conf Tokyoが開催。
GS2は昨年に引き続き登壇しました。
Slide 62
Slide 62 text
真のサーバレスアーキテクトと
サーバレス時代のゲーム開発・運⽤
Game Server Services, Inc.
https://gs2.io
登壇資料からエッセンスを抽出します。
Slide 63
Slide 63 text
真のサーバレスアーキテクトと
サーバレス時代のゲーム開発・運⽤
Game Server Services, Inc.
https://gs2.io
サーバレス時代の設計者は、フルマネージドサービスの特性を把握して
適切なタイミングで使⽤出来る能⼒が求められる。
Slide 64
Slide 64 text
真のサーバレスアーキテクトと
サーバレス時代のゲーム開発・運⽤
Game Server Services, Inc.
https://gs2.io
GS2 の⾏っているコールドスタート対策。
1つのLambdaファンクションに全てのRESTアクセスを向けて
呼び出し頻度の低いエンドポイントでもコールドスタートしにくいように。
Slide 65
Slide 65 text
真のサーバレスアーキテクトと
サーバレス時代のゲーム開発・運⽤
Game Server Services, Inc.
https://gs2.io
ログをいかに集約し、検索出来る状態にするか。
GS2 では Kinesis Firehose -> S3 -> BigQuery とログを流している
Slide 66
Slide 66 text
真のサーバレスアーキテクトと
サーバレス時代のゲーム開発・運⽤
Game Server Services, Inc.
https://gs2.io
⾮同期処理をどう扱うか。
AWS IoT を使って MQTT経由でサーバからプッシュ通知をすることで解決。
Slide 67
Slide 67 text
真のサーバレスアーキテクトと
サーバレス時代のゲーム開発・運⽤
Game Server Services, Inc.
https://gs2.io
DynamoDB はトランザクション機能がない。
部分的に GCP の Cloud DataStore を使うなどして対応。
Slide 68
Slide 68 text
真のサーバレスアーキテクトと
サーバレス時代のゲーム開発・運⽤
Game Server Services, Inc.
https://gs2.io
GS2 では IAM を模したアクセス権限管理を提供している。
ポリシー判定Lambdaは全てのマイクロサービスが共通して呼び出すファンクションに切り出されている。
ポリシー判定処理を切り出している理由は、ポリシードキュメントのキャッシュヒット率を⾼める⽬的。
Slide 69
Slide 69 text
真のサーバレスアーキテクトと
サーバレス時代のゲーム開発・運⽤
Game Server Services, Inc.
https://gs2.io
GS2 の管理画⾯はEC2で動かしていた。
GAE SE が Java8 に対応したため、めでたくサーバレス化できた。
Slide 70
Slide 70 text
真のサーバレスアーキテクトと
サーバレス時代のゲーム開発・運⽤
Game Server Services, Inc.
https://gs2.io
サーバレスアーキテクチャでの開発は、ベンダーロックインは避けられない。
何かあったときにすぐに連絡の取れる関係になっておくのがオススメ。
Slide 71
Slide 71 text
真のサーバレスアーキテクトと
サーバレス時代のゲーム開発・運⽤
Game Server Services, Inc.
https://gs2.io
サーバレスによって、インフラの死活監視はいらなくなったとしても
サービスが正しく稼働しているか判断出来るよう、稼働状況は可視化しておくべき。
Slide 72
Slide 72 text
2017年12⽉ Cloud9 を使って Lambda の開発が可能に
Game Server Services, Inc.
https://gs2.io
AWS が提供するブラウザ上で動作するIDEである Cloud9 を使って Lambda が開発出来るように。
Slide 73
Slide 73 text
2018年1⽉ Lambda が Go と C#(.NET Core 2.0)
をサポート
Game Server Services, Inc.
https://gs2.io
Lambda が Golang と C#(.NET Core 2.0) をサポートしました。
Slide 74
Slide 74 text
2018年6⽉ Google Cloud Functions が東京に
Game Server Services, Inc.
https://gs2.io
Google Cloud Functions が東京リージョンで利⽤出来るように。
Slide 75
Slide 75 text
2018年6⽉ イベントソースにSQSを使⽤可能に
Game Server Services, Inc.
https://gs2.io
Lambda がイベントソースに SQS を使⽤出来るようになりました。
Slide 76
Slide 76 text
2018年7⽉ Google Cloud Functions がGA
Game Server Services, Inc.
https://gs2.io
Google Cloud Functions が GA し、SLA がつくように。
対応⾔語に Python3.6 を追加。
Slide 77
Slide 77 text
2018年7⽉ Serverless containers が発表
Game Server Services, Inc.
https://gs2.io
Google が Serverless containers を発表しました。
Serverless containers は App Engine Flexible のリブランド+Dockerイメージによるデプロイの対応。
Slide 78
Slide 78 text
今後の⾒えてる予定
Game Server Services, Inc.
https://gs2.io
• 9⽉ ServerlessConf Tokyo 2018
• GS2 は今年も登壇します。今年は運⽤周りを中⼼に話します。
• 11⽉ re:invent 2018
• ラスベガスで開催される AWS 主催のカンファレンスです。
毎年サーバレス関連のアップデートが複数あるので、今年も何かがあ
るはずです。
Slide 79
Slide 79 text
次は実践!
歴史を学んだことで、どのようなことがサーバレスで出来るのか
はなんとなく分かるようになったはずです。
あとは実際に⼿を動かしてみてください!
Game Server Services, Inc.
https://gs2.io