Upload
others
View
0
Download
0
Embed Size (px)
Citation preview
© 2016, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
岡嵜 禎 / Tadashi Okazaki
Head of Japan Solution Architect, Amazon Web Services Japan KK
Aug 08, 2017
© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Growing up serverless
Agenda
サーバーレスとは?
サーバーを気にすることのない、アプリケーションの構築と実行
コンピューティングの進化
データセンタ内の物理サーバ
データセンタ内の仮想サーバ
クラウド上の仮想サーバ
それぞれの進化は良いものでした
データセンタ内の
物理サーバ
データセンタ内の
仮想サーバ• 高い使用率
• より速いプロビジョニング速度
• 改善されたアップタイム
• ディザスターリカバリ
• ハードウェアの独立性
• 運用コストと投資コストのトレード
• よりスケール
• 弾力性のあるリソース
• より速いスピードと俊敏性
• メンテナンスの削減
• より良い可用性と耐障害性
クラウド上の仮想サーバー
しかし、まだ制限があります
Physical servers
data centers
Virtual servers
data centers
• 投資コストと運用コストのトレード
• よりスケール
• 弾力性のあるリソース
• より速いスピードと俊敏性
• メンテナンスの削減
• より良い可用性と耐障害性
• 仮想マシンの管理が必要
• キャパシティや利用率の管理が必要
• ワークロードのサイズを変更が必要
• 可用性や耐障害性を管理する必要
• 断続的なジョブを実行するには高コスト
クラウド上の仮想サーバー
サーバーレスへの進化
サーバーレス
クラウド上の
仮想サーバー
データセンター内の物理サーバー
データセンター内の仮想サーバー
サーバーは管理しないほうが簡単
こういったすべての責任はなくなります
プロビジョニングと利用
可用性と耐障害性
スケーリング
運用と管理
サーバーレスはよりセキュア
• パッチが適用されていないサーバーは存在しない
• SSH不要
• すべてのリクエストは認可され、監査可能
• ファンクションは短命
イベントドリブン 連続したスケーリング 利用量に応じた支払い
オンデマンドの提供、アイドル時の支払い一切なし
コンピュートの選択肢
デプロイ可能な単位のサイズ
ファンクションAppコンテナ仮想マシン
IaaS Docker
PaaS
責任
クラウドプロバイダ
お客様
シェアード
Function as a Service (FaaS)
コンピュートの選択肢
Amazon EC2 Amazon ECS
AWS Elastic
Beanstalk
Function as a Service (FaaS)
責任
クラウドプロバイダ
お客様
シェアード
デプロイ可能な単位のサイズ
ファンクションAppコンテナ仮想マシン
FaaSはオペレーションの責務が異なる
FaaS
FaaS
Function as a Service (FaaS)
FaaS
Amazon EC2 Amazon ECS
AWS Elastic
Beanstalk
責任
クラウドプロバイダ
お客様
シェアード
デプロイ可能な単位のサイズ
ファンクションAppコンテナ仮想マシン
サーバーレスは管理業務がないことを意味する
FaaS
FaaS
Function as a Service (FaaS)
Serverless
Amazon EC2 Amazon ECS
AWS Elastic
Beanstalk
責任
クラウドプロバイダ
お客様
シェアード
デプロイ可能な単位のサイズ
ファンクションAppコンテナ仮想マシン
サーバーレスは管理業務がないことを意味する
FaaS
FaaS
Function as a Service (FaaS)
Amazon EC2 Amazon ECS
AWS Elastic
Beanstalk
責任
クラウドプロバイダ
お客様
シェアード
デプロイ可能な単位のサイズ
ファンクションAppコンテナ仮想マシン
サーバーレスアプリケーションのビルディングブロック
AWS Lambda Amazon DynamoDB
Amazon SNS
Amazon API GatewayAmazon SQS
Amazon Kinesis
Amazon S3
Orchestration and State Management
API Proxy Messaging and Queues Analytics
Monitoring and Debugging
Compute Storage Database
AWS X-RayAWS Step Functions
Edge Compute
AWS Greengrass
Lambda@Edge
サーバーレスアプリケーションのビルディングブロック
Orchestration and State Management
AWS Step Functions
• Lambdaファンクションとその他のアクティビティを並列もしくはシリアルに実行
• バリア同期とリトライを実行
• サードパーティのシステムや既存ワークフローとの簡単なインテグレーション
サーバレスはどうデリバリするかを変える
マーケットに対する
スピードアップ
イノベーションのためだけの時間
デベロッパーの生産性向上 運用の複雑さを解消
サーバーレスジャーニー
AWS Lambdaによってイノベーションしたカスタマ
事例:株式会社スクウェア・エニックス
• 1分あたり200〜300イメージを処理
• ピークで1分あたり6000イメージを処理
• 処理時間が数時間から10 数秒に
• オンプレミスと比べ 20 分の 1
程度までコスト削減
事例:凸版印刷株式会社
• 商品のライフサイクル管理や真贋判定をすることができる ID 利活用プラットフォーム
• LambdaやAPI Gateway、Cognitoといったサービスを活用することで新事業への初期投資コストを最小限に
https://aws.amazon.com/jp/solutions/case-studies/toppan-printing/
事例:株式会社日本経済新聞社
• 日経電子版の紙面ビューアー
• 紙面画像のリサイズ、JPEG変換、分割などをLambdaで処理
• 18000 invoke/分を処理
• Amazon EC2での同等な構成と比較すると、コストは10分の1程度
https://aws.amazon.com/jp/solutions/case-studies/nikkei/
事例:THOMSON REUTERS
• プロダクトの利用量データのためのビジネス分析ソリューション
• 秒間4000リクエストを処理
• スモールチームにより、たった2.5ヶ月でソリューションを構築
• 通常の2倍の負荷でスパイクを処理
AWS Lambdaを大規模に利用しているエンタープライズ顧客例
• FINRA: 日々の株式取引の検証のために1日あたり5000万件を処理
• Hearst: メディアアナリティクスパイプラインへのデータ取込と処理の時間を97%削減
• Vevo: 通常時の80倍のスパイクトラフィックを処理
• Expedia: 1月あたり12億リクエストをLambdaで処理
サーバーレスのコンプライアンス
ISO PCI SOC HIPAA
API Gateway ◯ ◯ ◯
Lambda ◯ ◯
Step Functions
Cognito ◯ ◯
DynamoDB ◯ ◯ ◯ ◯
Kinesis ◯
S3 ◯ ◯ ◯
https://aws.amazon.com/jp/compliance/services-in-scope/
Chatbots
• チャットボットのロジック
• Amazon Echo用Alexa Skill
ユースケース
Web
アプリケーション
• 静的Webサイト
• 動的Webアプリ
• FlaskとExpress
のためのパッケージ
Backends
• アプリとサービス
• モバイル
• IoT
</></>
Media & Log
Processing
• リアルタイムデータ
• ストリーミングデータ
Big Data
• MapReduce
• バッチ
Big Data
• MapReduce
• Batch
Big data
Map Phase Reduce PhaseInputs Results
サーバーレスのMap / Reduceフレームワーク
https://github.com/awslabs/lambda-refarch-mapreduce
PyWren: Lambda用大規模データフレームワーク
• Lambdaを使ったオープンソースのMapReduceフレームワーク
• 25 TFLOPS
• S3に対して読み取り60GB/秒、書き込み50GB/秒
https://github.com/pywren/pywren
http://pywren.io/
http://ericjonas.com/
ベンダーはどのように差別化しているのか
• イノベーティブな機能
• インテグレーションの幅広さ
• スケールする能力• 真にサーバーレス(プロビジョニングやコールドコンテナ不要)
• フレキシブルなコントロール
サーバーレスはモダンなアプリケーションのコアコンポーネント
サーバーレスプラットフォームの構築
サーバーレスプラットフォームの機能
アプリケーションモデリングフレームワーク
モノリシックアプリケーション
マイクロサービス
しかし、多くのファンクションからなる大きなアプリケーションを持っている場合、何が起こるのか?
サーバーレスアプリケーションの作成
SAMのご紹介
AWS Serverless Application Model (SAM)
AWS上のサーバーレスアプリケーションを表現するための標準モデル
ファンクション、API、イベントソースとデータストア
サーバーレスアプリケーションのために、デプロイと管理を簡素化
AWS Serverless Application Model (SAM)
• AWS CloudFormationによるネイティブサポート
• あらゆるファンクションをSAMテンプレートとしてエクスポート
• AWS CLIを使ってSAMテンプレートをパッケージし、デプロイ
• コミュニティ拡張のためにApache2.0によるオープンな仕様
NEW
AWS Serverless Application Model (SAM)
新機能
• インラインでのSwaggerサポート
• 組み込み関数
Q: “モノリスは管理しやすくないですか?”
A: “すべてのemailを1つの大きいファイルに入れて読みますか?”
数多く、小さく、単一目的のファンクションは項目数を増やします。しかし、
• 境界におけるよりリッチなメタデータの提供
• インデックス化や検索は解決済の問題である(タグの利用)
• レガシーなモノリスの管理と維持は…
しかし、DevOpsについては…?
Source Build Test Deploy Monitor
Source Build Test Deploy Monitor
サーバーベースのDevOps
Code
Fleet
Source Build Test Deploy Monitor
サーバーレスなDevOps
Code
Source Build Test Deploy Monitor
Fleet
サーバーレスアプリケーションのCI/CD
</>
AWS CodePipeline + SAM
GitHub
Amazon S3
AWS CodeCommit
AWS CodeBuild AWS CodeBuild
Third-party tools
AWS CloudFormation
Commit Build TestDeploy
to Prod
AWS CodeStar New!
サーバーレスアプリケーションのトラブルシューティング
複数のファンクションやサービスからなる
分散アプリケーションをどのようにデバッグするか?
ファンクションがどのように実行されているか、
動作しているかについての洞察をどのように得るか?
AWS X-Ray
• 本番環境の分散アプリケーションに対する分析とデバッグ
• アプリケーションのサービスコールグラフを可視化
• パフォーマンスボトルネックとエラーの特定
• サービス特有の問題を特定
• アプリのユーザに対する問題の影響の特定
• ファンクション実行をトレース
X-Rayの使い方
リクエストのトレース トレースの記録 サービスマップの表示 問題の分析
Example
Example
Example
Example
Example
Example
Example
開発者向けツール
コードの記述
顧客にデプロイ
ビルドとテスト
フィードバックの受け取り
エコシステム
Chalice
サーバーレスアプリケーション開発のためのフレームワーク
Serverless JavaContainer
FaaSはマシンの境界からコードを抽象化すること
それなら、別の場所にファンクションを持っていくことも?
Lambda Everywhere
Devices: AWS Greengrass
• Lambdaファンクションをデバイスへと拡張
• 低レイテンシ、ニアリアルタイム
Storage: AWS Snowball Edge
• コンピュートとストレージを内蔵したペタバイトスケールのハイブリッドデバイス
• AWS LambdaのコードをSnowball
Edgeにデプロイ
• 独自の圧縮、マニフェストの生成、セキュリティ監査…
PoPs: Lambda@Edge
Lambda@EdgeはCloudFrontのエッジロケーションすべてで利用可能
• 低レイテンシ、リクエストとレスポンスのカスタマイズ
• ビューアーとオリジンのイベントをサポート
CloudFrontがLambda@Edgeのファンクションを呼び出し
Origin
server
End user CloudFront
cache
Viewer response Origin response
Viewer request Origin request
Lambda@Edge ユースケース
コンテンツのカスタマイズ
来訪者の検証 A/B テスト
見ているトレンド
• 多くのエンタープライズでの採用
• より完全なツールと機能
• 成長するエコシステム• 既存フレームワークと開発者に対するブリッジ
• 幅広く、深い他サービスとのインテグレーション
• より密度の高いコンピュートとより高いスケール
• サーバーレスビッグデータ
• ファンクションはあらゆる場所へ
サーバーレスの成長!
より多くの…
プロジェクト
顧客
選択(と少しのサーバー)