SlideShare ist ein Scribd-Unternehmen logo
1 von 29
2016.12.11
株式会社セクションナイン 吉田真吾
May the FaaS
be with us
吉田真吾
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)保持
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/
Functions as a Service の台頭
• 特徴
• 実行環境は隠蔽&プラットフォーム
管理で、必要なのはコードのみ
• コンテナベースで調達リードタイム
を短縮
• 分散実行環境による可用性の確保
• 実行時間のみ課金によるコスト低減
• アーキテクチャにおける責務
• Stateful >> Statelessへ
• 永続データ >> 揮発性
• モノリシック >> Microservices
• バッチ処理 >> イベントドリブン
https://aws.amazon.com/jp/about-aws/events/reinvent-report-2014-pt2/
Serverless Compute Manifesto
1. ファンクションはデプロイ単位/拡張可能単位で管理
2. 機器/仮想サーバー/コンテナがプログラミングモデル
から見えてはいけない
3. データを永続化するストレージは他の場所に確保する
4. リクエスト単位にスケールを管理することでユーザー
をキャパシティ管理から解放する
5. 実行時間のみに課金し、アイドル時間に課金してはな
らない
6. どこでも実行できることで、いわんや耐障害性がある
7. コードだけ持ち込めば動作する
8. メトリクス収集やログ取得は必須要件である
• GitHub Pages や S3 でのSPAのホスティングも
現在は「サーバーレス」の中に含む
http://www.slideshare.net/acloudguru/ant-stanley-being-serverless
サーバーレスアーキテクチャ
フルマネージドなアプリ
ケーション実行環境
• Functional
SaaS/mBaaS/PaaSなど
で実現するサーバーレ
ス環境を指すことが多
い
• FaaSよりFunctional
SaaS使うほう
が効果的
コンポーネント同士をつな
ぐアーキテクチャ
• コンポーネントとして、
あるいはコンポーネン
ト自体として中央集権
的なサーバーを廃して
• 例)一部のマイクロ
サービスにFaaSを使う。
マイクロサービス間の
イベントハンドリング
にFaaSを使う
Functions as a Service
FaaS の主要な特徴
• スケーラビリティ
• ユーザーはスケールを気にしなくてもコードの実行に必要なリ
ソースが適宜適量割当てられる
• 可用性
• コンテナベースであるためポータブルで瞬時に動的に実行環境の
割当てが行われる→実行時に健全なリソースが使えるという意味
で可用性が高い(プラットフォーム次第)
• 使った分だけ課金
• 実行したリソース分だけ課金。永続的にプロビジョンするリソー
スはないので合理的。
• 制約
• データの永続化は外部の仕組みが必要(ステートレス)
• 実行環境の言語やバージョンにより利用可能なライブラリに制約
があったりする
FaaS の最近の注目ポイント
• CI/CD パイプラインをどう解決するか
• 自動テスト、自動ビルド、自動デプロイ
• 実行環境の設定含めたコード化、再利用性
• エコシステムフレームワークやIDEとの統合
• Goes Everywhere
• エッジコンピューティングのコンポーネントとか、プ
ラットフォーム自身のバックエンドとか
• エコシステム、開発者ネットワークの構築
• フレームワークツールの増加、コントリビューターの取
り込み
• コアのOSS化
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
AWS Lambda
• タイムアウト 〜300秒
• エラー時のリトライについて
• ストリームベース(Kinesis Streams):データの
有効期限まで自動リトライ
• その他
• 同期呼び出し:呼び出し元で実装すること
• 非同期呼び出し:最大3回実行
それでもダメだったら
デッドレターキューで再実行
という方法も
http://www.slideshare.net/keisuke69/aws-lambda-updates
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
多彩なエコシステムフレームワーク
Chalice
(Python Serverless Microframework for AWS)
AWS Serverless Application Model (SAM)
• サーバーレスアプリケーション全体
を CloudFormation テンプレートで
管理できる
• Lambda、API Gateway、
DynamoDB がサポートされている
• 個人的には今後チーム開発はこれが
もっともやりやすく(Serverless
FrameworkやChaliceより)なるん
じゃないかと想定
https://github.com/awslabs/serverless-application-model
SAM + CircleCI
functions
app-spec
(template)
functions.zip
Lambda
bucket
DynamoDB
stack
CloudFormation
API
Gateway
SAM
http://yoshidashingo.hatenablog.com/entry/2016/12/05/024120
IDEとの統合
Eclipse Visual Studio
https://aws.amazon.com/blogs/developer/aws-toolkit-for-eclipse-serverless-application/
https://aws.amazon.com/blogs/developer/aws-lambda-support-in-visual-studio/
Visual Studio + Lambda C# でローカルデバッグ
• ローカルの.NET Core上で実行ができる
• クラウド上のリモートデバッグには対応していない
• ユーザー側のFunction上の変数の値は見えるが、
Lambdaのコア側の変数は見えない
• シームレスにクラウド上にデプロイしてIDEか
ら直接ソースの修正できる
• 俺Macだから…
• BootCampがあるで
• Visual Studio for Mac は Xamarin やで
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
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/
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
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/
Auth0 Webtask
• 言語サポート:Node.js
• 認証サービスAuth0と連携したトークンの発行〜
Functionをコールするプロセスがシンプル
• またGetting Startedの中で指定されるトークン付きの
API
• 認証後のJWTの内容も自分でカスタマイズできる
• ソースは専用のクラウドIDE (エディタ、実行/停止、
ログ出力など)で編集
• Warm Pool で実行環境のコンテナを暖機するので
Lambdaのように初回遅くないというのが売り
• Dockerベースのコア環境
• Function formatに沿えばどんな言語の実行環境も
載せられる
• 2016/11 αリリース → 2017/3 のGAを目指す
• Lambdaのコードと完全互換をうたっており、
Lambdaのローカル環境として期待できる(か
も)
ソースコードを公開している FaaS
• ソースコードの可視化
• コア/SDK/サンプル など
• コントリビューターや開発者を取り込み開発を促進
• 規模の経済が働くプラットフォーム事業との切り離し
• FaaSデファクトなLambdaとは違うオンプレFaaSのニーズに対応
• オンプレで使う場合リソーススケジューラは自前で実装する必要があ
り課題(将来的に既存のコンテナスケジューラと統合されるといい
な)
MIT Apache License, Version 2.0Apache License, Version 2.0MIT
FaaSを活用するための心構え
• システムをリアクティブに設計する
• マイクロサービスとして、あるいはマイクロサービスごとの
つなぎとして
• 業務システムへの適用が難しいと言われがちだが、
そもそもFaaSのみでシステム構築するアプローチはよくない
• イベントの発火やWebhookなどに対応している周辺のマネー
ジド・サービスとうまくつないでいく
• やっていく気持ち
• 一度トライアルしておくといざ活用する際にハマりどころな
どが判断しやすい
• 弊社では新規事業の検討などでデモを作成することが多いた
めサーバーレスでさっと構築できる環境に事前に慣れておく
ことが多い
参考情報
• 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
参考情報
• 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

Weitere ähnliche Inhalte

Was ist angesagt?

Was ist angesagt? (20)

JAWS DAYS 2017 Mafia Talk
JAWS DAYS 2017 Mafia TalkJAWS DAYS 2017 Mafia Talk
JAWS DAYS 2017 Mafia Talk
 
Anchors Aweigh!! - re:Invent報告@re:Port 2016
Anchors Aweigh!! - re:Invent報告@re:Port 2016Anchors Aweigh!! - re:Invent報告@re:Port 2016
Anchors Aweigh!! - re:Invent報告@re:Port 2016
 
サーバーレスの話
サーバーレスの話サーバーレスの話
サーバーレスの話
 
Serverless Meetup Tokyo #1 オープニング
Serverless Meetup Tokyo #1 オープニングServerless Meetup Tokyo #1 オープニング
Serverless Meetup Tokyo #1 オープニング
 
2016/08/25 JAWS-UG 千葉支部 Vol.6 LT
2016/08/25 JAWS-UG 千葉支部 Vol.6 LT2016/08/25 JAWS-UG 千葉支部 Vol.6 LT
2016/08/25 JAWS-UG 千葉支部 Vol.6 LT
 
VUXデザイナー
VUXデザイナーVUXデザイナー
VUXデザイナー
 
ヘッドレスCMSとサーバーレス
ヘッドレスCMSとサーバーレスヘッドレスCMSとサーバーレス
ヘッドレスCMSとサーバーレス
 
Jaws days2017-ops jaws-2
Jaws days2017-ops jaws-2Jaws days2017-ops jaws-2
Jaws days2017-ops jaws-2
 
What's new with Serverless
What's new with ServerlessWhat's new with Serverless
What's new with Serverless
 
Serverless Framework 使ってる話(node.js)
Serverless Framework 使ってる話(node.js)Serverless Framework 使ってる話(node.js)
Serverless Framework 使ってる話(node.js)
 
Serverless AWS構成でセキュアなSPAを目指す
Serverless AWS構成でセキュアなSPAを目指すServerless AWS構成でセキュアなSPAを目指す
Serverless AWS構成でセキュアなSPAを目指す
 
Serverless Ninja Warriors [panel]
Serverless Ninja Warriors [panel]Serverless Ninja Warriors [panel]
Serverless Ninja Warriors [panel]
 
Alexaスキルを作ろう
Alexaスキルを作ろうAlexaスキルを作ろう
Alexaスキルを作ろう
 
What is Serverless?
What is Serverless?What is Serverless?
What is Serverless?
 
サーバーレスのアーキテクチャパターンとそれぞれの実装・テストの勘所
サーバーレスのアーキテクチャパターンとそれぞれの実装・テストの勘所サーバーレスのアーキテクチャパターンとそれぞれの実装・テストの勘所
サーバーレスのアーキテクチャパターンとそれぞれの実装・テストの勘所
 
de:code行ってきて感じたことをつれづれなるままに話すLT
de:code行ってきて感じたことをつれづれなるままに話すLTde:code行ってきて感じたことをつれづれなるままに話すLT
de:code行ってきて感じたことをつれづれなるままに話すLT
 
MySQL→Aurora移行セミナー
MySQL→Aurora移行セミナーMySQL→Aurora移行セミナー
MySQL→Aurora移行セミナー
 
実践サーバレスアーキテクチャ
実践サーバレスアーキテクチャ実践サーバレスアーキテクチャ
実践サーバレスアーキテクチャ
 
サーバーレスの今とこれから
サーバーレスの今とこれからサーバーレスの今とこれから
サーバーレスの今とこれから
 
Storylineでデザインする心地よい会話体験
Storylineでデザインする心地よい会話体験Storylineでデザインする心地よい会話体験
Storylineでデザインする心地よい会話体験
 

Andere mochten auch

クラウド環境におけるWebアプリケーションの正しい作り方(for Perl users)
クラウド環境におけるWebアプリケーションの正しい作り方(for Perl users)クラウド環境におけるWebアプリケーションの正しい作り方(for Perl users)
クラウド環境におけるWebアプリケーションの正しい作り方(for Perl users)
Terui Masashi
 

Andere mochten auch (10)

JAWS-UG on ASCII.jp とは?
JAWS-UG on ASCII.jp とは?JAWS-UG on ASCII.jp とは?
JAWS-UG on ASCII.jp とは?
 
スタートアップがグローバルなシステムを作るために、積極的にサーバーレスに取り組んでみた話 / Serverless Meetup Sapporo
スタートアップがグローバルなシステムを作るために、積極的にサーバーレスに取り組んでみた話 / Serverless Meetup Sapporoスタートアップがグローバルなシステムを作るために、積極的にサーバーレスに取り組んでみた話 / Serverless Meetup Sapporo
スタートアップがグローバルなシステムを作るために、積極的にサーバーレスに取り組んでみた話 / Serverless Meetup Sapporo
 
CRM分析サービス crm analyzer expressを 支えるサーバレスな色々
CRM分析サービス  crm analyzer expressを 支えるサーバレスな色々CRM分析サービス  crm analyzer expressを 支えるサーバレスな色々
CRM分析サービス crm analyzer expressを 支えるサーバレスな色々
 
Amazon Pinpoint - re:Invent Serverless Follow Up - 20161207
Amazon Pinpoint - re:Invent Serverless Follow Up - 20161207Amazon Pinpoint - re:Invent Serverless Follow Up - 20161207
Amazon Pinpoint - re:Invent Serverless Follow Up - 20161207
 
JAWS-UGアーキテクチャ専門支部 ServerlessConfレポート
JAWS-UGアーキテクチャ専門支部 ServerlessConfレポートJAWS-UGアーキテクチャ専門支部 ServerlessConfレポート
JAWS-UGアーキテクチャ専門支部 ServerlessConfレポート
 
クラウド環境におけるWebアプリケーションの正しい作り方(for Perl users)
クラウド環境におけるWebアプリケーションの正しい作り方(for Perl users)クラウド環境におけるWebアプリケーションの正しい作り方(for Perl users)
クラウド環境におけるWebアプリケーションの正しい作り方(for Perl users)
 
JAWS DAYS 2016 Mafia Talk
JAWS DAYS 2016 Mafia TalkJAWS DAYS 2016 Mafia Talk
JAWS DAYS 2016 Mafia Talk
 
サーバーレスでシステムを開発する時に⼤切な事
サーバーレスでシステムを開発する時に⼤切な事サーバーレスでシステムを開発する時に⼤切な事
サーバーレスでシステムを開発する時に⼤切な事
 
AWSでアプリ開発するなら 知っておくべこと
AWSでアプリ開発するなら 知っておくべことAWSでアプリ開発するなら 知っておくべこと
AWSでアプリ開発するなら 知っておくべこと
 
TEDx Manchester: AI & The Future of Work
TEDx Manchester: AI & The Future of WorkTEDx Manchester: AI & The Future of Work
TEDx Manchester: AI & The Future of Work
 

Ähnlich wie May the FaaS be with us!!

20131210 CM re:Growth - Infrastructure as Code から Full Reproducible Infrastru...
20131210 CM re:Growth - Infrastructure as Code から Full Reproducible Infrastru...20131210 CM re:Growth - Infrastructure as Code から Full Reproducible Infrastru...
20131210 CM re:Growth - Infrastructure as Code から Full Reproducible Infrastru...
都元ダイスケ Miyamoto
 
実践!AWSクラウドデザインパターン
実践!AWSクラウドデザインパターン実践!AWSクラウドデザインパターン
実践!AWSクラウドデザインパターン
Hiroyasu Suzuki
 

Ähnlich wie May the FaaS be with us!! (20)

AWS SAMで始めるサーバーレスアプリケーション開発
AWS SAMで始めるサーバーレスアプリケーション開発AWS SAMで始めるサーバーレスアプリケーション開発
AWS SAMで始めるサーバーレスアプリケーション開発
 
Programming AWS with Perl at YAPC::Asia 2013
Programming AWS with Perl at YAPC::Asia 2013Programming AWS with Perl at YAPC::Asia 2013
Programming AWS with Perl at YAPC::Asia 2013
 
Serverless for VUI
Serverless for VUIServerless for VUI
Serverless for VUI
 
Scala: Mobile Backend on AWS
Scala: Mobile Backend on AWSScala: Mobile Backend on AWS
Scala: Mobile Backend on AWS
 
20201118 AWS Black Belt Online Seminar 形で考えるサーバーレス設計 サーバーレスユースケースパターン解説
20201118 AWS Black Belt Online Seminar 形で考えるサーバーレス設計 サーバーレスユースケースパターン解説20201118 AWS Black Belt Online Seminar 形で考えるサーバーレス設計 サーバーレスユースケースパターン解説
20201118 AWS Black Belt Online Seminar 形で考えるサーバーレス設計 サーバーレスユースケースパターン解説
 
これからのクラウドネイティブアプリケーションの話をしよう
これからのクラウドネイティブアプリケーションの話をしようこれからのクラウドネイティブアプリケーションの話をしよう
これからのクラウドネイティブアプリケーションの話をしよう
 
20131210 CM re:Growth - Infrastructure as Code から Full Reproducible Infrastru...
20131210 CM re:Growth - Infrastructure as Code から Full Reproducible Infrastru...20131210 CM re:Growth - Infrastructure as Code から Full Reproducible Infrastru...
20131210 CM re:Growth - Infrastructure as Code から Full Reproducible Infrastru...
 
AWS & Google Cloudを使ったシステム開発/技術選定のはなし
AWS & Google Cloudを使ったシステム開発/技術選定のはなしAWS & Google Cloudを使ったシステム開発/技術選定のはなし
AWS & Google Cloudを使ったシステム開発/技術選定のはなし
 
Alexaで世界を変えよう
Alexaで世界を変えようAlexaで世界を変えよう
Alexaで世界を変えよう
 
Ecsとlambdaのバッチ処理
Ecsとlambdaのバッチ処理Ecsとlambdaのバッチ処理
Ecsとlambdaのバッチ処理
 
実プロジェクトの経験から学ぶazureサービス適用パターン
実プロジェクトの経験から学ぶazureサービス適用パターン実プロジェクトの経験から学ぶazureサービス適用パターン
実プロジェクトの経験から学ぶazureサービス適用パターン
 
AWSマイスターシリーズReloaded -AWS SDK for .NET-
AWSマイスターシリーズReloaded -AWS SDK for .NET-AWSマイスターシリーズReloaded -AWS SDK for .NET-
AWSマイスターシリーズReloaded -AWS SDK for .NET-
 
AWS と Denodo で実現するデータ活用基盤 - データ民主化を加速するクラウド活用のポイント
AWS と Denodo で実現するデータ活用基盤 - データ民主化を加速するクラウド活用のポイントAWS と Denodo で実現するデータ活用基盤 - データ民主化を加速するクラウド活用のポイント
AWS と Denodo で実現するデータ活用基盤 - データ民主化を加速するクラウド活用のポイント
 
Azureをフル活用したサーバーレスの潮流について
Azureをフル活用したサーバーレスの潮流についてAzureをフル活用したサーバーレスの潮流について
Azureをフル活用したサーバーレスの潮流について
 
Architecting on Alibaba Cloud - 超基礎編 -
Architecting on Alibaba Cloud - 超基礎編 -Architecting on Alibaba Cloud - 超基礎編 -
Architecting on Alibaba Cloud - 超基礎編 -
 
はじめての Bluemix でシングルサインオン ~ 雲間を越えて、つなげたい
はじめての Bluemix でシングルサインオン ~ 雲間を越えて、つなげたいはじめての Bluemix でシングルサインオン ~ 雲間を越えて、つなげたい
はじめての Bluemix でシングルサインオン ~ 雲間を越えて、つなげたい
 
moCloudハンズオン[ベーシック]
moCloudハンズオン[ベーシック]moCloudハンズオン[ベーシック]
moCloudハンズオン[ベーシック]
 
AWS Introduction for Startups
AWS Introduction for StartupsAWS Introduction for Startups
AWS Introduction for Startups
 
はじめての SAP on AWS
はじめての SAP on AWSはじめての SAP on AWS
はじめての SAP on AWS
 
実践!AWSクラウドデザインパターン
実践!AWSクラウドデザインパターン実践!AWSクラウドデザインパターン
実践!AWSクラウドデザインパターン
 

Mehr von 真吾 吉田

CYDASアジャイル開発状況報告LT
CYDASアジャイル開発状況報告LTCYDASアジャイル開発状況報告LT
CYDASアジャイル開発状況報告LT
真吾 吉田
 

Mehr von 真吾 吉田 (20)

SageMakerでもAUTOMATIC1111したい
SageMakerでもAUTOMATIC1111したいSageMakerでもAUTOMATIC1111したい
SageMakerでもAUTOMATIC1111したい
 
JAWSUG_yokohama_10yrs
JAWSUG_yokohama_10yrsJAWSUG_yokohama_10yrs
JAWSUG_yokohama_10yrs
 
アウトプットしよう これはあなたの成長の物語
アウトプットしよう これはあなたの成長の物語アウトプットしよう これはあなたの成長の物語
アウトプットしよう これはあなたの成長の物語
 
ServerlessとNoOps
ServerlessとNoOpsServerlessとNoOps
ServerlessとNoOps
 
コミュニティ型組織でヒーローを育てる
コミュニティ型組織でヒーローを育てるコミュニティ型組織でヒーローを育てる
コミュニティ型組織でヒーローを育てる
 
仮想サーバは、もう不要?!今からIoTやるなら 「サーバレス・コンピューティング」
仮想サーバは、もう不要?!今からIoTやるなら「サーバレス・コンピューティング」仮想サーバは、もう不要?!今からIoTやるなら「サーバレス・コンピューティング」
仮想サーバは、もう不要?!今からIoTやるなら 「サーバレス・コンピューティング」
 
アジャイルな開発組織のOKRベストプラクティス&アンチパターン
アジャイルな開発組織のOKRベストプラクティス&アンチパターンアジャイルな開発組織のOKRベストプラクティス&アンチパターン
アジャイルな開発組織のOKRベストプラクティス&アンチパターン
 
AWS re:Invent 2018 re:Cap
AWS re:Invent 2018 re:CapAWS re:Invent 2018 re:Cap
AWS re:Invent 2018 re:Cap
 
多様性・アジャイル・クラウドで変化に強いIT組織を作る
多様性・アジャイル・クラウドで変化に強いIT組織を作る多様性・アジャイル・クラウドで変化に強いIT組織を作る
多様性・アジャイル・クラウドで変化に強いIT組織を作る
 
宇宙一早い AWS re:Invent 2018 re:cap
宇宙一早い AWS re:Invent 2018 re:cap宇宙一早い AWS re:Invent 2018 re:cap
宇宙一早い AWS re:Invent 2018 re:cap
 
Architecting on Alibaba Cloud - Fundamentals - 2018
Architecting on Alibaba Cloud - Fundamentals - 2018Architecting on Alibaba Cloud - Fundamentals - 2018
Architecting on Alibaba Cloud - Fundamentals - 2018
 
CYDASアジャイル開発状況報告LT
CYDASアジャイル開発状況報告LTCYDASアジャイル開発状況報告LT
CYDASアジャイル開発状況報告LT
 
AWSによるサーバーレスアーキテクチャ
AWSによるサーバーレスアーキテクチャAWSによるサーバーレスアーキテクチャ
AWSによるサーバーレスアーキテクチャ
 
Kubernetesのない世界 すべてがサーバーレスになる
Kubernetesのない世界 すべてがサーバーレスになるKubernetesのない世界 すべてがサーバーレスになる
Kubernetesのない世界 すべてがサーバーレスになる
 
Kubernetes on Alibaba Cloud
Kubernetes on Alibaba CloudKubernetes on Alibaba Cloud
Kubernetes on Alibaba Cloud
 
サーバーレス・アーキテクチャ概要
サーバーレス・アーキテクチャ概要サーバーレス・アーキテクチャ概要
サーバーレス・アーキテクチャ概要
 
サーバー管理よ、サヨウナラ。サーバーレス アーキテクチャの意義と実践
サーバー管理よ、サヨウナラ。サーバーレス アーキテクチャの意義と実践サーバー管理よ、サヨウナラ。サーバーレス アーキテクチャの意義と実践
サーバー管理よ、サヨウナラ。サーバーレス アーキテクチャの意義と実践
 
Alibaba Cloud Serverless
Alibaba Cloud ServerlessAlibaba Cloud Serverless
Alibaba Cloud Serverless
 
Serverless Meetup Tokyo #5 Opening
Serverless Meetup Tokyo #5 OpeningServerless Meetup Tokyo #5 Opening
Serverless Meetup Tokyo #5 Opening
 
Future will be Serverless!! - Serverless Meetup Fukuoka #1 Opening
Future will be Serverless!! - Serverless Meetup Fukuoka #1 OpeningFuture will be Serverless!! - Serverless Meetup Fukuoka #1 Opening
Future will be Serverless!! - Serverless Meetup Fukuoka #1 Opening
 

Kürzlich hochgeladen

Kürzlich hochgeladen (11)

論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 

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)保持
  • 3.
  • 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
  • 8. サーバーレスアーキテクチャ フルマネージドなアプリ ケーション実行環境 • Functional SaaS/mBaaS/PaaSなど で実現するサーバーレ ス環境を指すことが多 い • FaaSよりFunctional SaaS使うほう が効果的 コンポーネント同士をつな ぐアーキテクチャ • コンポーネントとして、 あるいはコンポーネン ト自体として中央集権 的なサーバーを廃して • 例)一部のマイクロ サービスにFaaSを使う。 マイクロサービス間の イベントハンドリング にFaaSを使う
  • 9. Functions as a Service
  • 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
  • 27. FaaSを活用するための心構え • システムをリアクティブに設計する • マイクロサービスとして、あるいはマイクロサービスごとの つなぎとして • 業務システムへの適用が難しいと言われがちだが、 そもそもFaaSのみでシステム構築するアプローチはよくない • イベントの発火やWebhookなどに対応している周辺のマネー ジド・サービスとうまくつないでいく • やっていく気持ち • 一度トライアルしておくといざ活用する際にハマりどころな どが判断しやすい • 弊社では新規事業の検討などでデモを作成することが多いた めサーバーレスでさっと構築できる環境に事前に慣れておく ことが多い
  • 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