44
1 AWS Serverless Ways 2016.12.06 Akihiro Tsukada

Morning Session - AWS Serverless Ways

Embed Size (px)

Citation preview

Page 1: Morning Session - AWS Serverless Ways

1

AWS Serverless Ways2016.12.06 Akihiro Tsukada

Page 2: Morning Session - AWS Serverless Ways

2

Who am I

塚⽥ 朗弘 – Akihiro TsukadaSolutions Architect

Startupsモバイルニンジャ

髪型は尖っているが発⾔が尖っていない

Page 3: Morning Session - AWS Serverless Ways

3

About this session

AWSが考えるサーバレスとは何かを理解するためのセッションですAPI Gatewayを使った具体的な設計ノウハウとかTipsなどではありません

Page 4: Morning Session - AWS Serverless Ways

4

Agenda

Serverless IntroductionServerless is & isnʼtSupported by AWSServerless Anti-Patterns

Page 5: Morning Session - AWS Serverless Ways

5

Serverless Introduction

Page 6: Morning Session - AWS Serverless Ways

6

3-tier Web App

プレゼンテーション層 ロジック層 データストア層

Webサーバ/アプリサーバブラウザ/モバイル データベース

Page 7: Morning Session - AWS Serverless Ways

7

3-tier on AWS

AP(EC2)

DB(RDS)

LB(ELB)

Web(EC2)

Static Contents(S3)

ブラウザ/モバイル CDN(CloudFront)

Page 8: Morning Session - AWS Serverless Ways

8

3-tier on AWS

AP(EC2)

DB(RDS)

LB(ELB)

Web(EC2)

Static Contents(S3)

ブラウザ/モバイル CDN(CloudFront)

Page 9: Morning Session - AWS Serverless Ways

9

There's a lot of undifferentiated

heavy lifting- Jeff Bezos, 2006

Page 10: Morning Session - AWS Serverless Ways

10

付加価値を⽣まない重労働

Page 11: Morning Session - AWS Serverless Ways

11

サーバレススタックによる置き換え

ブラウザ/モバイル API Gateway AWS Lambda DynamoDB etc

S3CloudFront

Page 12: Morning Session - AWS Serverless Ways

12

サーバレススタックによる置き換え

ブラウザ/モバイル API Gateway AWS Lambda DynamoDB etc

S3CloudFront

AWSによるマネージ(フルマネージド)

Page 13: Morning Session - AWS Serverless Ways

13

“マネージドサービス”

電源・ネットワークラッキング

HWメンテナンス

OSパッチ

ミドルウェアパッチ定形運⽤設計

スケールアウト設計

ミドルウェア導⼊

OS導⼊

アプリケーション作成

オンプレミス 独⾃構築 on EC2 AWSマネージドサービス

お客様が担当する作業 AWSが提供するマネージド機能

電源・ネットワークラッキング

HWメンテナンス

OSパッチ

ミドルウェアパッチ定形運⽤設計

スケールアウト設計

ミドルウェア導⼊

OS導⼊

アプリケーション作成

電源・ネットワークラッキング

HWメンテナンス

OSパッチ

ミドルウェアパッチ定形運⽤設計

スケールアウト設計

ミドルウェア導⼊

OS導⼊

アプリケーション作成

Page 14: Morning Session - AWS Serverless Ways

14

AllYou Need

Is Code

Page 15: Morning Session - AWS Serverless Ways

15

Serverless is & isn’t

Page 16: Morning Session - AWS Serverless Ways

16

サーバレススタック

ブラウザ/モバイル API Gateway AWS Lambda DynamoDB etc

S3CloudFront

AWSによるマネージ(フルマネージド)

Page 17: Morning Session - AWS Serverless Ways

17

Serverless

=

API Gateway / Lambda?

Page 18: Morning Session - AWS Serverless Ways

18

Serverless

is not only

API Gateway / Lambda

Page 19: Morning Session - AWS Serverless Ways

19

Serverless

=

No servers to manage and scale

Page 20: Morning Session - AWS Serverless Ways

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

Page 21: Morning Session - AWS Serverless Ways

21

Amazon Cognitoの例

認証と認可を司るモバイル/ブラウザアプリ向けサービスCognito User Poolsは数億ユーザ規模までスケールする管理不要なユーザデータベース

ユーザの管理基盤のみが、拡張可能なマイクロサービスとして提供されている

Federated Identities, Syncも強⼒

Page 22: Morning Session - AWS Serverless Ways

22

mobile client

Amazon Cognitoの例

Cognito 以前のユーザサインイン

Userstable

Elastic Load Balancing

instances

Page 23: Morning Session - AWS Serverless Ways

23

mobile client

Amazon Cognitoの例

Cognito の利⽤

AmazonCognito

Page 24: Morning Session - AWS Serverless Ways

24

Amazon Pinpointの例

re:Invent 2016で発表モバイルプッシュ通知の送信先を動的にセグメンテーション可能送信後の開封率や各種解析データを取得可能

Page 25: Morning Session - AWS Serverless Ways

25

Amazon Pinpointの例

Pinpoint以前のセグメントプッシュ通知

AmazonSNS mobile

client

instances

queue

RDS DB instance

instance

Page 26: Morning Session - AWS Serverless Ways

26

Amazon Pinpointの例

Pinpointの利⽤

mobile client

instance

Page 27: Morning Session - AWS Serverless Ways

27

AWS Step Functionsの例

re:Invent 2016で発表複数のLambdaファンクションによる処理のステップを管理するためのフルマネージドサービスJSONでステートマシンを定義

Page 28: Morning Session - AWS Serverless Ways

28

AWS Step Functionsの例

Step Functions以前の状態管理

AmazonDynamoDB

AWS Lambda

queue

queue

AWS Lambda

AWS Lambda queue

AWS Lambda

Page 29: Morning Session - AWS Serverless Ways

29

AWS Step Functionsの例{

"Comment": "An example.","StartAt": "FirstState","States": {

"FirstState": {"Type": "Task","Resource":"arn:aws:lambda…","Next": "ChoiceState"

},"ChoiceState": {

"Type" : "Choice",…

Page 30: Morning Session - AWS Serverless Ways

30

Serverless=

No servers to manage and scale

Page 31: Morning Session - AWS Serverless Ways

31

There's a lot of undifferentiated

heavy lifting- Jeff Bezos, 2006

Page 32: Morning Session - AWS Serverless Ways

32

AllYou Need

Is Code

Page 33: Morning Session - AWS Serverless Ways

33

Supported by AWS

Page 34: Morning Session - AWS Serverless Ways

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

Page 35: Morning Session - AWS Serverless Ways

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

Page 36: Morning Session - AWS Serverless Ways

36

Solutions Architect(SA)

実は我々もサービスの⼀つ各種専⾨技術の⽀援可能

Page 37: Morning Session - AWS Serverless Ways

37

AWS Technical Support彼らもサービスの⼀b(rySAだけでは(セキュリティ上)調査不可能なことまで対応可能、その他もろもろ価値ある対応猛者なエンジニア揃い

サポートエンジニアによる連載「 AWSのリージョンとアベイラビリティーゾーンとは? 〜 AWSのバックボーンネットワークに関するDeepな話 」は必⾒https://codezine.jp/article/corner/685

Page 38: Morning Session - AWS Serverless Ways

38

Serverless Anti-Patterns

Page 39: Morning Session - AWS Serverless Ways

39

Serverlessに夢を⾒すぎる全てをサーバレスにする必要はない

サーバレスにすることが⽬的ではない単純にサーバの代わりとは考えない

従来の箱としてのサーバとは別物。同じように扱おうとすると失敗する

コストへの過剰な期待はやめるコストの効率がいいのは事実だが、絶対的にコストが安いというわけではないコストだけに着⽬すると思ったような効果は得られず、失敗する

Page 40: Morning Session - AWS Serverless Ways

40

API Gateway + Lambdaに囚われすぎる

API GatewayとLambdaはサーバレスの中⼼的なサービスではあるが、逆に⾔えばサーバレスアセットの⼀つでしかない今やろうとしていること、本当にKinesisでなくAPI Gatewayが必要でしょうか?バックエンドはELB+EC2でなくLambdaが必要でしょうか?API GatewayをDynamoDBのProxyにすれば済みませんか?

Page 41: Morning Session - AWS Serverless Ways

41

Microservicesと混同しすぎる、あるいは夢⾒すぎ

API Gateway + Lambdaをベースに機能を開発すると、⾃然とMicroservicesに近づきやすいのは事実しかしServerless == MicroservicesではないしMicroservicesもまた銀の弾丸ではないServerlessの⽬的とメリット、Microservicesの⽬的とメリットは分けて考えるMicroservicesは組織ぐるみで取り組むべき問題

Page 42: Morning Session - AWS Serverless Ways

42

事例にこだわりすぎる

最新技術に事例があるはずがない。まずはやってみよう、少なくとも試そう

例:ELBのログを取っているなら今すぐAthenaでクエリできる

積極的に⾶び込むことで先⾏者利益を得る先進性、メディア露出、ブランディングAWSとも⾊々な連携ができたり(プライベートベータなど)

Page 43: Morning Session - AWS Serverless Ways

43

Any QUESTIONS?

Page 44: Morning Session - AWS Serverless Ways

44

Thank you