Weitere ähnliche Inhalte Ähnlich wie May the FaaS be with us!! (20) Kürzlich hochgeladen (11) May the FaaS be with us!!2. 吉田真吾
n バックグラウンド
証券システム基盤開発
p 基盤開発、Oracleチューニングなど
エバンジェリスト
p 講演年間113回(2013年実績)
p AWS設計・構築・移行(2014-2015)
n 現在のしごと
(株) セクションナイン 代表取締役社長
p AWSコンサルティング〜実装まで
(株) Cloud Payment
p 技術顧問
n 実績等
p AWSウルトラクイズ
初代チャンピオン (2012年)
p AWS Samurai 2014
p AWSエキスパート養成読本 執筆
p AWS認定全資格(5種類)保持
p Oracle Database 11g認定 (OCP,
Performance Tuning)保持
4. FaaSにいたるパラダイムシフト
• Why The Future Of Software And Apps Is Serverless
by Ken Fromm, VP of Business Development at Iron.io
• コンピューティングリソースの調達リードタイムの短縮
• スタンダローンアプリからの変化(現在のMicroservices)
• クラウドで柔軟にコンピューティングリソースをサービスとして
利用することができる
• サーバーが要らないということではなく、開発者はサーバーにつ
いて「考えなくてもよくなる」
http://readwrite.com/2012/10/15/why-the-future-of-software-and-apps-is-serverless/
5. Functions as a Service の台頭
• 特徴
• 実行環境は隠蔽&プラットフォーム
管理で、必要なのはコードのみ
• コンテナベースで調達リードタイム
を短縮
• 分散実行環境による可用性の確保
• 実行時間のみ課金によるコスト低減
• アーキテクチャにおける責務
• Stateful >> Statelessへ
• 永続データ >> 揮発性
• モノリシック >> Microservices
• バッチ処理 >> イベントドリブン
https://aws.amazon.com/jp/about-aws/events/reinvent-report-2014-pt2/
6. Serverless Compute Manifesto
1. ファンクションはデプロイ単位/拡張可能単位で管理
2. 機器/仮想サーバー/コンテナがプログラミングモデル
から見えてはいけない
3. データを永続化するストレージは他の場所に確保する
4. リクエスト単位にスケールを管理することでユーザー
をキャパシティ管理から解放する
5. 実行時間のみに課金し、アイドル時間に課金してはな
らない
6. どこでも実行できることで、いわんや耐障害性がある
7. コードだけ持ち込めば動作する
8. メトリクス収集やログ取得は必須要件である
7. • GitHub Pages や S3 でのSPAのホスティングも
現在は「サーバーレス」の中に含む
http://www.slideshare.net/acloudguru/ant-stanley-being-serverless
10. FaaS の主要な特徴
• スケーラビリティ
• ユーザーはスケールを気にしなくてもコードの実行に必要なリ
ソースが適宜適量割当てられる
• 可用性
• コンテナベースであるためポータブルで瞬時に動的に実行環境の
割当てが行われる→実行時に健全なリソースが使えるという意味
で可用性が高い(プラットフォーム次第)
• 使った分だけ課金
• 実行したリソース分だけ課金。永続的にプロビジョンするリソー
スはないので合理的。
• 制約
• データの永続化は外部の仕組みが必要(ステートレス)
• 実行環境の言語やバージョンにより利用可能なライブラリに制約
があったりする
11. FaaS の最近の注目ポイント
• CI/CD パイプラインをどう解決するか
• 自動テスト、自動ビルド、自動デプロイ
• 実行環境の設定含めたコード化、再利用性
• エコシステムフレームワークやIDEとの統合
• Goes Everywhere
• エッジコンピューティングのコンポーネントとか、プ
ラットフォーム自身のバックエンドとか
• エコシステム、開発者ネットワークの構築
• フレームワークツールの増加、コントリビューターの取
り込み
• コアのOSS化
12. AWS Lambda
• 2014年末 re:Invent にて発表
• サポート言語 2016.12.11現在
• Node.js – v0.10.36, v4.3.2
• Java – Java 8
• Python – Python 2.7
• C# - .NET Core 1.0.1
• ホスト
• Amazon Linux (時々バージョンアップ)
• 実行環境は再利用される
• 初回起動が遅いが再利用時は高速
• 一時ストレージとして /tmp 利用可能(スケールしたり破棄されたりするので
頼らないこと)
• 課金は使った分だけ
• 確保(指定)したメモリ(128MB〜1.5GB) x 実行時間(100ms単位) x 実行回数
• メモリに比例してCPUの割当ても多くなる
http://docs.aws.amazon.com/ja_jp/lambda/latest/dg/welcome.html
13. AWS Lambda
• タイムアウト 〜300秒
• エラー時のリトライについて
• ストリームベース(Kinesis Streams):データの
有効期限まで自動リトライ
• その他
• 同期呼び出し:呼び出し元で実装すること
• 非同期呼び出し:最大3回実行
それでもダメだったら
デッドレターキューで再実行
という方法も
http://www.slideshare.net/keisuke69/aws-lambda-updates
14. Lambda Everywhere
• AWS Lambda が環境変数をサポート
• AWS Serverless Application Model (SAM) リリース
• [New] AWS Greengrass
• [New] AWS Snowball Edge
• [New] AWS Step Functions
• [New] Lambda@Edge
• [New] Amazon Athena
• [New] Amazon Pinpoint
• Amazon Kinesis Firehose が Lambda に対応(予定)
• AWS Lambda が C# をサポート
• AWS Lambda Dead Letter Queue
16. AWS Serverless Application Model (SAM)
• サーバーレスアプリケーション全体
を CloudFormation テンプレートで
管理できる
• Lambda、API Gateway、
DynamoDB がサポートされている
• 個人的には今後チーム開発はこれが
もっともやりやすく(Serverless
FrameworkやChaliceより)なるん
じゃないかと想定
https://github.com/awslabs/serverless-application-model
19. Visual Studio + Lambda C# でローカルデバッグ
• ローカルの.NET Core上で実行ができる
• クラウド上のリモートデバッグには対応していない
• ユーザー側のFunction上の変数の値は見えるが、
Lambdaのコア側の変数は見えない
• シームレスにクラウド上にデプロイしてIDEか
ら直接ソースの修正できる
• 俺Macだから…
• BootCampがあるで
• Visual Studio for Mac は Xamarin やで
20. Lambda goes everywhere!!
Snowball Edge
Greengrass
AWS IoT
Greengrass
Core
IoT SDK
Gateway
edge
location
edge
location
Origin
Lambda@Edge
Step Functions
Inline processing for
Kinesis Firehose
21. Azure Functions
• 2016/3 プレビュー → 2016/11 GA
• サポート言語
• C#、F#、Node.js、Python、PHP、Batch、Bash、その
他実行可能な言語(Bash叩けりゃPerlだってイケる)
• リソース割当て
• 動的ホスティング プラン:自動的に割当てを行い実行
• App Serviceプラン:App Serviceと統合(が詳細不明)
• Visual StudioからAzure上の実行環境のメモリに
アタッチしてリモートデバッグできる
• HTTPトリガーなどEndpointがAll-in
https://azure.microsoft.com/ja-jp/services/functions/
22. Apache OpenWhisk
• 2016/2 IBM BlueMix 上のサービスとしてベータ提供開始
当初よりコードをOSSとして公開
→2016/11 Apache Incubator へ登録(正式採用を目指している状
態)
• サポート環境
• Node.js, Swift, Python, Java, Docker(←要はなんでもOK)
• 実行環境をMacのDocker環境上にセットアップできるのでローカル実行/
デバッグなども可能
• 料金
• IBM BlueMix OpenWhisk
:ベータ
• オンプレにデプロイできる
Serverless on Servers
• その他
• IBMが啓蒙に非常に前のめり
http://openwhisk.org
23. Google Cloud Functions
• 2016/2 アルファプレビュー
• サポート言語:Node.js
• トリガー
• HTTPトリガー
• Cloud Pub/Subトリガー
• GCP内の各種サービスからPub/Subトピックにイベントをエクスポートすることでトリガーすることができる
• ex. Stackdriver Logging→Pub/Sub→Functions→なにか
• ex. GMail Push→Pub/Sub→Functions→なにか
• Cloud Storageトリガー
• オブジェクトの追加(作成)、アップデート(変更)、削除
• ダイレクトトリガー
• CLIから直接呼び出し
• デプロイ
• Cloud StorageバケットにZipアップロード(or CLI)してデプロイ
• Cloud Repositoriesを使ってGitHubなどから自動(or CLI)でデプロイ
• ロギング
• CLI: $ gcloud alpha functions get-logs
• ダッシュボード(Cloud Platform Console)
• Logging API
https://cloud.google.com/functions/
24. Auth0 Webtask
• 言語サポート:Node.js
• 認証サービスAuth0と連携したトークンの発行〜
Functionをコールするプロセスがシンプル
• またGetting Startedの中で指定されるトークン付きの
API
• 認証後のJWTの内容も自分でカスタマイズできる
• ソースは専用のクラウドIDE (エディタ、実行/停止、
ログ出力など)で編集
• Warm Pool で実行環境のコンテナを暖機するので
Lambdaのように初回遅くないというのが売り
25. • Dockerベースのコア環境
• Function formatに沿えばどんな言語の実行環境も
載せられる
• 2016/11 αリリース → 2017/3 のGAを目指す
• Lambdaのコードと完全互換をうたっており、
Lambdaのローカル環境として期待できる(か
も)
26. ソースコードを公開している FaaS
• ソースコードの可視化
• コア/SDK/サンプル など
• コントリビューターや開発者を取り込み開発を促進
• 規模の経済が働くプラットフォーム事業との切り離し
• FaaSデファクトなLambdaとは違うオンプレFaaSのニーズに対応
• オンプレで使う場合リソーススケジューラは自前で実装する必要があ
り課題(将来的に既存のコンテナスケジューラと統合されるといい
な)
MIT Apache License, Version 2.0Apache License, Version 2.0MIT
28. 参考情報
• Why The Future Of Software And Apps Is Serverless
• http://readwrite.com/2012/10/15/why-the-future-of-software-and-apps-is-serverless/
• Being Serverless
• http://www.slideshare.net/acloudguru/ant-stanley-being-serverless
• サーバレスの薄い本ダイジェスト
• http://www.slideshare.net/nekoruri/20161109-serverless-meetup
• Serverless Framework
• https://github.com/serverless/serverless
• AWS Serverless Application Model (SAM)
• https://github.com/awslabs/serverless-application-model
• Python Serverless Microframework for AWS
• https://github.com/awslabs/chalice
• Apex
• https://github.com/apex/apex
• Zappa - Serverless Python Web Services
• https://github.com/Miserlou/Zappa
29. 参考情報
• AWS Lambda
• http://docs.aws.amazon.com/ja_jp/lambda/latest/dg/welcome.html
• http://www.slideshare.net/keisuke69/aws-lambda-updates
• Azure Functions
• https://github.com/Azure/Azure-Functions
• https://github.com/Azure/azure-webjobs-sdk/
• Google Cloud Functions
• https://cloud.google.com/functions/docs/
• https://github.com/GoogleCloudPlatform/nodejs-docs-samples/tree/master/functions
• Apache OpenWhisk
• http://openwhisk.org
• Auth0 Webtask
• https://github.com/auth0/webtask-runtime
• IronFunctions
• https://github.com/iron-io/functions