Serverless

44
Serverless

Transcript of Serverless

Page 1: Serverless

Serverless

Page 2: Serverless

Serverless

λ

Page 3: Serverless
Page 4: Serverless

.。oO(さっちゃんですよヾ(〃l _ l)ノ゙☆)

Page 5: Serverless

Serverless

Page 6: Serverless

FaaS

Page 7: Serverless

FaaS(Function as a Service)

Page 8: Serverless

FaaS(函數 as a Service)

Page 9: Serverless

例へば AWS LambdaGoogle Cloud Functions

Azure FunctionsIBM OpenWhisk 等

Page 10: Serverless

例へば AWS LambdaGoogle Cloud Functions

Azure FunctionsIBM OpenWhisk 等

Page 11: Serverless

Serverless

PaaS、IaaS、BaaSとは何が違ふの?

Page 12: Serverless

Serverless

Serverless Architectures http://martinfowler.com/articles/serverless.html

Page 13: Serverless

Serverless

FaaSはfull managedでstateless

Page 14: Serverless

Serverless

If your PaaS can efficiently start instances in 20ms that run for half a second, then call it serverless.

https://twitter.com/adrianco/status/736553530689998848

Page 15: Serverless

Serverless

0.02秒でインスタンスを起動し0.5秒だけ動作するなら、そのPaaSはserverless。

Page 16: Serverless

Serverless

(Erlangっぽいよね)

Page 17: Serverless

AWS Lambda

対応⾔語は Python 2Node.jsJava 8

Page 18: Serverless

AWS Lambda

λを呼び出せるイベントはLambdaのHTTP API、AWS IoT、API Gateway、CloudWatch

Schedule、CloudWatch Logs、CognitoのSync、DynamoDBの更新、Kinesis、S3の更新AWS SNS

Page 19: Serverless

AWS Lambda

λから使へるリソースはAWSの全部、

AWS外のAPIで呼べるリソースも何でも

Page 20: Serverless

AWS Lambda

バージョン管理 → 函數バージョンにエイリアスを付けるLog → CloudWatchに吐く

監視 → CloudWatchでAPI Gatewayでの認證 → 認證⽤のLambdaを呼ぶ

Page 21: Serverless

AWS Lambda

フレームワークにはServerless

Apex 等

Page 22: Serverless

AWS Lambda

フレームワークにはServerless

Apex 等

Page 23: Serverless

Serverless Framework

https://serverless.com/

Page 24: Serverless

Serverless Framework

Nearly 1.0(1.0.0-beta2)

Page 25: Serverless

Serverless Framework

10,316☆stars on GitHub

Page 26: Serverless

Serverless Framework

pluggable

Page 27: Serverless

Serverless Framework

プロジェクト = 函數とイベントとリソースの集まり

Page 28: Serverless

Serverless Framework

AWS LambdaGoogle Cloud Functions

Azure FunctionsIBM OpenWhisk に対応してゐる

Page 29: Serverless

λとAPI Gatewayとの連携

Page 30: Serverless

λとAPI Gatewayとの連携

Terraformでやる場合

Page 31: Serverless

λとAPI Gatewayとの連携

API GatewayとLambdaの組み合はせでリリースするバージョンを制御する - c4se記:さっちゃんですよ☆ http://c4se.hatenablog.com/entry/2016/07/26/122508

29,238⽂字Terraformのmoduleを書く - c4se記:さっちゃんですよ☆http://c4se.hatenablog.com/entry/2016/08/09/152619

11,198⽂字

Page 32: Serverless

λとAPI Gatewayとの連携

Page 33: Serverless

λとAPI Gatewayとの連携

Page 34: Serverless

λとAPI Gatewayとの連携

Page 35: Serverless

λとAPI Gatewayとの連携

コードのデプロイ⼿順

Page 36: Serverless

λとAPI Gatewayとの連携最初のデプロイ:

1. aws_lambda_alias.prodのfunction_versionを "$LATEST" にしておく。Lambda函數作成前で、publish_versionもしてゐずバージョンが未だ無い爲。

2. LambdaとAPI Gatewayをデプロイ。3. API Gatewayをstagingステージにデプロイ。4. stagingで検証。5. Lambdaをpublish_versionして、Versionをメモする。6. aws_lambda_alias.prodのfunction_versionを 上でメモしたバージョンに書き換へる。7. Lambdaをデプロイ。8. API Gatewayをprodステージにデプロイ。

API Gatewayの設定を更新した場合:1. API Gatewayをデプロイ。2. API Gatewayをstagingステージにデプロイ。3. stagingで検証。4. API Gatewayをprodステージにデプロイ。

Lambdaの設定やコードを変更した場合:1. Lambdaをデプロイ。2. stagingで検証。3. Lambdaをpublish_versionして、Versionをメモする。4. aws_lambda_alias.prodのfunction_versionを 上でメモしたバージョンに書き換へる。5. Lambdaをデプロイ。

Page 37: Serverless

λとAPI Gatewayとの連携

Page 38: Serverless

λとAPI Gatewayとの連携

Page 39: Serverless

λとAPI Gatewayとの連携

Page 40: Serverless

λとAPI Gatewayとの連携

⼀⽅、Serverlessではs-function.json 2628⽂字

Page 41: Serverless

λとAPI Gatewayとの連携

`sls deploy`

Page 42: Serverless

λとAPI Gatewayとの連携

やりましたね!

Page 43: Serverless

Serverless

Page 44: Serverless

Serverless

0.02秒でインスタンスを起動し0.5秒だけ動作するなら、そのPaaSはserverless。