@rxpaki
Ryosuke Matsumura
各社のFaaSを比較してみる
2018/11/16
Serverless Meetup Fukuoka #3
Intro
• Ryosuke Matsumura
• Fukuoka, Japan
• i3Systems, Inc.
• Microsoft MVP for Microsoft Azure
Agenda
• クラウド各社のFaaSについて
• やってみたこと
• まとめ
FaaS
FaaS
• Serverless Compute Manifesto
• ファンクションはデプロイ単位/拡張可能単位で管理する
• 機器や仮想サーバーやコンテナがプログラミングモデルから見えてはいけない
• データを永続化するストレージは他の場所に確保する
• リクエスト単位にスケールが管理される。ユーザーはキャパシティの調達不足も超過もしない
• アイドル時間に課金されてはいけない(待機サーバー/コンテナや課金)
• ファンクションはどこでも実行できるので、暗黙的に耐障害性を持つ
• Bring your own code. コードだけ持ってくればいい
• メトリクス収集やログ取得は絶対的正義である
AWS
• AWS Lambda
• 2014/11 登場
• 対応言語
• Javascript
• Python
• Java
• Go
• C#
Azure
• Azure Functions
• 2016/03 登場
• 対応言語
• C# / F#
• Javascript
• Java / Python / TypeScript
• PHP / Bash
• Batch(.cmd, .bat) / Powershell
GCP
• Cloud Functions
• 2016/02 登場
• 対応言語
• Javascript
• Python
やってみたこと
やってみたこと
• 同じJavascriptのコードをそれぞれにデプロイ
• HTTPトリガーでのレスポンスタイムを計測
• それぞれのリージョンは次の通り
• AWS Lambda:us-west-1
• Azure Functions:Central US
• Google Cloud Functions:us-central1
• 福岡市南区のとある山のふもとから、自分のMacbookでApache Benchを実行
• 利用したコードは次ページで
Code
結果
First Response Process time
AWS Lambda 3154ms 499ms
Azure Functions 7220ms 422ms
Google Cloud Functions 2697ms 200ms
• Postmanで初回実行を計測
結果
Time per request Requests per second
AWS Lambda 96.559ms 10.36
Azure Functions 178.420ms 5.60
Google Cloud Functions 199.883ms 5.00
• abコマンドで同時10接続で100リクエスト
• 1回実行後に再度実行した結果(初回起動を省くため)
まとめ
まとめ
• 今回の前提条件と結果だけでいくと、AWS Lambdaの勝利
• それぞれプラットフォーム側の設定値変更等でパフォーマンスは変わる
• ケースバイケースで使い分けることが大事
• ご利用は計画的に
https://www.wantedly.com/projects/235495
Thank you :)

各社のFaaSを比較してみる