1
AWS Serverless Ways
2016.12.06 Akihiro Tsukada
2
Who am I
塚⽥ 朗弘 – Akihiro Tsukada
Solutions Architect
Startups
モバイルニンジャ
髪型は尖っているが
発⾔が尖っていない
3
About this session
AWSが考えるサーバレスとは何かを理解するための
セッションです
API Gatewayを使った具体的な設計ノウハウとか
Tipsなどではありません
4
Agenda
Serverless Introduction
Serverless is & isnʼt
Supported by AWS
Serverless Anti-Patterns
5
Serverless Introduction
6
3-tier Web App
プレゼンテーション層 ロジック層 データストア層
Webサーバ/アプリサーバブラウザ/モバイル データベース
7
3-tier on AWS
AP
(EC2)
DB
(RDS)
LB
(ELB)
Web
(EC2)
Static Contents
(S3)
ブラウザ/モバイル
CDN
(CloudFront)
8
3-tier on AWS
AP
(EC2)
DB
(RDS)
LB
(ELB)
Web
(EC2)
Static Contents
(S3)
ブラウザ/モバイル
CDN
(CloudFront)
9
There's a lot of
undifferentiated
heavy lifting
- Jeff Bezos, 2006
10
付加価値を
⽣まない重労働
11
サーバレススタックによる置き換え
ブラウザ/モバイル API Gateway AWS Lambda DynamoDB etc
S3CloudFront
12
サーバレススタックによる置き換え
ブラウザ/モバイル API Gateway AWS Lambda DynamoDB etc
S3CloudFront
AWSによるマネージ
(フルマネージド)
13
“マネージドサービス”
電源・ネットワーク
ラッキング
HWメンテナンス
OSパッチ
ミドルウェアパッチ
定形運⽤設計
スケールアウト設計
ミドルウェア導⼊
OS導⼊
アプリケーション作成
オンプレミス 独⾃構築 on EC2 AWSマネージドサービス
お客様が担当する作業 AWSが提供するマネージド機能
電源・ネットワーク
ラッキング
HWメンテナンス
OSパッチ
ミドルウェアパッチ
定形運⽤設計
スケールアウト設計
ミドルウェア導⼊
OS導⼊
アプリケーション作成
電源・ネットワーク
ラッキング
HWメンテナンス
OSパッチ
ミドルウェアパッチ
定形運⽤設計
スケールアウト設計
ミドルウェア導⼊
OS導⼊
アプリケーション作成
14
All
You Need
Is
Code
15
Serverless is & isn’t
16
サーバレススタック
ブラウザ/モバイル API Gateway AWS Lambda DynamoDB etc
S3CloudFront
AWSによるマネージ
(フルマネージド)
17
Serverless
=
API Gateway / Lambda?
18
Serverless
is not only
API Gateway / Lambda
19
Serverless
=
No servers to manage and scale
20
Some of the serverless offerings by AWS
Amazon
Kinesis
Amazon
CloudWatch
Amazon API
Gateway
Amazon
DynamoDB
AWS IoT
Amazon
Cognito
Amazon
SQS
AWS
Lambda
Amazon Machine
Learning
Amazon
S3
Amazon
Mobile Analytics
Amazon Elastic
Transcoder
AWS Step
Functions
AWS CodeBuild
Amazon
Athena
Amazon
Pinpoint
21
Amazon Cognitoの例
認証と認可を司るモバイル/ブラウザアプリ向け
サービス
Cognito User Poolsは数億ユーザ規模までスケールする
管理不要なユーザデータベース
ユーザの管理基盤のみが、拡張可能なマイクロサービスとして
提供されている
Federated Identities, Syncも強⼒
22
mobile
client
Amazon Cognitoの例
Cognito 以前のユーザサインイン
Users
table
Elastic Load
Balancing
instances
23
mobile
client
Amazon Cognitoの例
Cognito の利⽤
Amazon
Cognito
24
Amazon Pinpointの例
re:Invent 2016で発表
モバイルプッシュ通知の送信先を動的にセグメンテー
ション可能
送信後の開封率や各種解析データを取得可能
25
Amazon Pinpointの例
Pinpoint以前の
セグメントプッシュ通知
Amazon
SNS mobile
client
instances
queue
RDS DB
instance
instance
26
Amazon Pinpointの例
Pinpointの利⽤
mobile
client
instance
27
AWS Step Functionsの例
re:Invent 2016で発表
複数のLambdaファンクションによる処理のステップを
管理するためのフルマネージドサービス
JSONでステートマシンを定義
28
AWS Step Functionsの例
Step Functions以前の状態管理
Amazon
DynamoDB
AWS Lambda
queue
queue
AWS Lambda
AWS Lambda queue
AWS Lambda
29
AWS Step Functionsの例
{
"Comment": "An example.",
"StartAt": "FirstState",
"States": {
"FirstState": {
"Type": "Task",
"Resource":"arn:aws:lambda…",
"Next": "ChoiceState"
},
"ChoiceState": {
"Type" : "Choice",
…
30
Serverless
=
No servers to manage and scale
31
There's a lot of
undifferentiated
heavy lifting
- Jeff Bezos, 2006
32
All
You Need
Is
Code
33
Supported by AWS
34
Chalice
Python Serverless Microframework for AWS
https://github.com/awslabs/chalice
$ pip install chalice
$ chalice new-project helloworld && cd helloworld
$ vim app.py
from chalice import Chalice
app = Chalice(app_name="helloworld")
@app.route("/")
def index():
return {"hello": "world"}
$ chalice deploy
API Gateway AWS Lambda
35
SAM (Serverless Application Model)
CloudFormationの新しいリソース 2016.11.18アナウンス
3つのリソースを使いServerlessなアプリケーションをプロビジョ
ニング可能
AWS::Serverless::Function
AWS::Serverless::SimpleTable
AWS::Serverless::API
詳しくは
http://docs.aws.amazon.com/ja_jp/lambda/latest/dg/deploy
ing-lambda-apps.html
https://github.com/awslabs/serverless-application-model
36
Solutions Architect(SA)
実は我々もサービスの⼀つ
各種専⾨技術の⽀援可能
37
AWS Technical Support
彼らもサービスの⼀b(ry
SAだけでは(セキュリティ上)調査不可能なことまで
対応可能、その他もろもろ価値ある対応
猛者なエンジニア揃い
サポートエンジニアによる連載「 AWSのリージョンとアベイラ
ビリティーゾーンとは? 〜 AWSのバックボーンネットワーク
に関するDeepな話 」は必⾒
https://codezine.jp/article/corner/685
38
Serverless Anti-Patterns
39
Serverlessに夢を⾒すぎる
全てをサーバレスにする必要はない
サーバレスにすることが⽬的ではない
単純にサーバの代わりとは考えない
従来の箱としてのサーバとは別物。同じように扱おうとすると失敗す
る
コストへの過剰な期待はやめる
コストの効率がいいのは事実だが、絶対的にコストが安いというわけ
ではない
コストだけに着⽬すると思ったような効果は得られず、失敗する
40
API Gateway + Lambdaに囚われすぎる
API GatewayとLambdaはサーバレスの中⼼的なサービ
スではあるが、逆に⾔えばサーバレスアセットの⼀つで
しかない
今やろうとしていること、本当にKinesisでなくAPI
Gatewayが必要でしょうか?バックエンドはELB+EC2
でなくLambdaが必要でしょうか?API Gatewayを
DynamoDBのProxyにすれば済みませんか?
41
Microservicesと混同しすぎる、あるいは夢⾒すぎ
API Gateway + Lambdaをベースに機能を開発すると、
⾃然とMicroservicesに近づきやすいのは事実
しかしServerless == Microservicesではないし
Microservicesもまた銀の弾丸ではない
Serverlessの⽬的とメリット、Microservicesの⽬的とメ
リットは分けて考える
Microservicesは組織ぐるみで取り組むべき問題
42
事例にこだわりすぎる
最新技術に事例があるはずがない。まずはやってみよう、
少なくとも試そう
例:ELBのログを取っているなら今すぐAthenaでクエリできる
積極的に⾶び込むことで先⾏者利益を得る
先進性、メディア露出、ブランディング
AWSとも⾊々な連携ができたり(プライベートベータなど)
43
Any QUESTIONS?
44
Thank you

Morning Session - AWS Serverless Ways