1 AWS Serverless Ways 2016.12.06 Akihiro Tsukada
1
AWS Serverless Ways2016.12.06 Akihiro Tsukada
2
Who am I
塚⽥ 朗弘 – Akihiro TsukadaSolutions Architect
Startupsモバイルニンジャ
髪型は尖っているが発⾔が尖っていない
3
About this session
AWSが考えるサーバレスとは何かを理解するためのセッションですAPI Gatewayを使った具体的な設計ノウハウとかTipsなどではありません
4
Agenda
Serverless IntroductionServerless is & isnʼtSupported by AWSServerless 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
AllYou 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
AmazonDynamoDB
AWS IoT
AmazonCognito
AmazonSQS
AWSLambda
Amazon Machine Learning
AmazonS3
Amazon Mobile Analytics
Amazon Elastic Transcoder
AWS Step Functions
AWS CodeBuild
Amazon Athena
AmazonPinpoint
21
Amazon Cognitoの例
認証と認可を司るモバイル/ブラウザアプリ向けサービスCognito User Poolsは数億ユーザ規模までスケールする管理不要なユーザデータベース
ユーザの管理基盤のみが、拡張可能なマイクロサービスとして提供されている
Federated Identities, Syncも強⼒
22
mobile client
Amazon Cognitoの例
Cognito 以前のユーザサインイン
Userstable
Elastic Load Balancing
instances
23
mobile client
Amazon Cognitoの例
Cognito の利⽤
AmazonCognito
24
Amazon Pinpointの例
re:Invent 2016で発表モバイルプッシュ通知の送信先を動的にセグメンテーション可能送信後の開封率や各種解析データを取得可能
25
Amazon Pinpointの例
Pinpoint以前のセグメントプッシュ通知
AmazonSNS 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以前の状態管理
AmazonDynamoDB
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
AllYou Need
Is Code
33
Supported by AWS
34
Chalice
Python Serverless Microframework for AWShttps://github.com/awslabs/chalice
$ pip install chalice $ chalice new-project helloworld && cd helloworld$ vim app.pyfrom 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::FunctionAWS::Serverless::SimpleTableAWS::Serverless::API
詳しくはhttp://docs.aws.amazon.com/ja_jp/lambda/latest/dg/deploying-lambda-apps.htmlhttps://github.com/awslabs/serverless-application-model
36
Solutions Architect(SA)
実は我々もサービスの⼀つ各種専⾨技術の⽀援可能
37
AWS Technical Support彼らもサービスの⼀b(rySAだけでは(セキュリティ上)調査不可能なことまで対応可能、その他もろもろ価値ある対応猛者なエンジニア揃い
サポートエンジニアによる連載「 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