© 2016, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
西谷 圭介 / Keisuke Nishitani (@Keisuke69)
Specialist SA, Amazon Web Services Japan KK
Nov 3rd, 2017
© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Growing up serverless
Who am I
Keisuke Nishitani
Specialist Solutions Architect, Serverless
Amazon Web Service Japan K.K
@Keisuke69 Keisuke69 Keisuke69 Keisuke69Keisuke69x
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 Gateway
Amazon 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ファンクションとその他のア
クティビティを並列もしくはシリアル
に実行
• バリア同期とリトライを実行
• サードパーティのシステムや既存
ワークフローとの簡単なインテグ
レーション
サーバーレスはデリバリを変える
マーケットに対する
スピードアップ
イノベーションのためだけの
時間
デベロッパーの生産性向上 運用の複雑さを解消
サーバーレスジャーニー
サーバーレスによってイノベーションしたカスタマ
事例:株式会社スクウェア・エニックス
• 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/
大規模に利用しているエンタープライズ顧客例
• 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/
サーバーレスはモダンなアプリケーションのコアコンポーネント
EVENTS
エンドポイントへのリクエスト
リソースの状態変化
データの状態変化
FUNCTIONS
DOWNSTREAM
考え方の転換– どのようにアプリケーションを構築するか
 イベントとAPIを通じた
コミュニケーション
 ステートレスでエフェメラルな
関数
 データ、キャッシュおよび
ステートとロジックの分離
• 既存アプリの分解をどうするか
• どのようにコンポーネント群が通信するか?
• サービス境界はどうするか?
• 適切な粒度は?
• サーバー上のローカルにあるステート/ストレージをどうするか
考慮点
Amazon
Kinesis
Amazon API
Gateway
Amazon SNS
Amazon S3
Amazon
DynamoDB
Amazon
SQS
Microservices
to
Functions
Microservices
to
Amazon API
Gateway
Amazon
SQS
Functions
Microservices
to
Amazon API
Gateway
Amazon
Kinesis
Amazon
DynamoDB
Functions
• ご要望の多かったCloudFrontを外せるようになりました
• Reginal とEdge Optimizedの2種類に
• 同一リージョンのEC2などからのレイテンシ改善
• IP制限、WAFなどのためにCloudFrontを2段にすることが不要に
• ご自身のCloudFrontディストリビューションを利用することも可能
New! API GatewayがReginal Endpointをサポート
サーバーレスプラットフォームの構築
アプリケーションモデリングフレームワーク
モノリシック
アプリケーション
マイクロサービス
多くのファンクションを持つ
アプリがあった場合、何が
起きるか?
サーバーレスアプリケーションの作成
AWS SAM
AWS Serverless Application Model (SAM)
AWS上のサーバーレスアプリ
ケーションを表現するための標
準モデル
ファンクション、API、イベント
ソースとデータストア
サーバーレスアプリケーション
のために、デプロイと管理を簡
素化
AWS Serverless Application Model (SAM)
• AWS CloudFormationによるネイ
ティブサポート
• あらゆるファンクションをSAMテンプ
レートとしてエクスポート
• AWS CLIを使ってSAMテンプレート
をパッケージし、デプロイ
• コミュニティ拡張のために
Apache2.0によるオープンな仕様
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 Test
Deploy
to Prod
AWS CodeStar
サーバーレスアプリケーションのトラブルシューティング
複数のファンクションやサービスからなる
分散アプリケーションをどのようにデバッグするか?
ファンクションがどのように実行されているか、
動作しているかについての洞察をどのように得るか?
AWS X-Ray
• 本番環境の分散アプリケーション
に対する分析とデバッグ
• アプリケーションのサービスコール
グラフを可視化
• パフォーマンスボトルネックとエ
ラーの特定
• サービス特有の問題を特定
• アプリのユーザに対する問題の影
響の特定
• ファンクション実行をトレース
X-Rayの使い方
リクエストのトレース トレースの記録 サービスマップの表示 問題の分析
Example
Example
Example
Example
Example
Example
Example
開発者向けツール
コードの
記述
顧客に
デプロイ
ビルドと
テスト
フィード
バックの
受け取り
エコシステム
Chalice
サーバーレスアプリケーション開発のためのフレームワーク
Serverless Java
Container
プレゼンテーション層 ロジック層 データストア層
Webサーバ/アプリサーバブラウザ/モバイル データベース
一般的な3-tier Webアプリ
AWSで作る場合
AP
(EC2)
DB
(RDS)
LB
(ELB)
Web
(EC2)
Static Contents
(S3)
ブラウザ/モバイル
CDN
(CloudFront)
サーバーレススタックによる置き換え
ブラウザ/モバイル API Gateway AWS Lambda DynamoDB etc
S3CloudFront
サーバーレススタックによる置き換え
ブラウザ/モバイル API Gateway AWS Lambda DynamoDB etc
S3CloudFront
AWSによるマネージ
(フルマネージド)
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 テスト
サーバレスはモダンな
アプリケーションの
基本的なコンポーネント
AWS re:Invent Serverless reCap
• AWS re:Inventのサーバーレスにフォーカスしたrecap
• ライブストリーミングもあります
• 2017年12月11日(月)19:00〜
• 申し込みはこちらから
会場参加: https://aws-serverless.connpass.com/event/67579/
• ストリーミング: https://aws-serverless.connpass.com/event/71179/
© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
AWS Developers Meetup 開催します
• 2017/12/07 夜 @ 目黒 AWS オフィス
• 開発者の方向け、セッション形式のイベント
• 内容のイメージ(予定)
• DeveloperのためのライブAWSウォークスルー
• ユースケースから見た実装カタログ 〜AWS逆引きリファレンス〜
• RESTful APIをChaliceで紐解く 〜Python Serverless Microframework for AWS〜
• Happy Hacking on AWS!
• 申し込みはこちら
https://pages.awscloud.com/DeveloperMeetup20171207.html
• 記入したらブースへ
• 未公開の日本語版ホワイトペーパーあげます
• AWS Lambda Tシャツあげます
• オンライン版もあります
• http://bit.ly/scon17awsj
• サービスチームも来ているのでぜひ要望を
アンケートの回答をお願いします
Conclusion
Lambda is a fundamental
component of modern
application architectures
It has a place in everything
from data processing to
simple web apps

Growing up serverless