Morning Session - AWS Serverless Ways

Preview:

Citation preview

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