Serverless

Post on 11-Jan-2017

85 views 3 download

Transcript of Serverless

Serverless

Serverless

λ

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

Serverless

FaaS

FaaS(Function as a Service)

FaaS(函數 as a Service)

例へば AWS LambdaGoogle Cloud Functions

Azure FunctionsIBM OpenWhisk 等

例へば AWS LambdaGoogle Cloud Functions

Azure FunctionsIBM OpenWhisk 等

Serverless

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

Serverless

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

Serverless

FaaSはfull managedでstateless

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

Serverless

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

Serverless

(Erlangっぽいよね)

AWS Lambda

対応⾔語は Python 2Node.jsJava 8

AWS Lambda

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

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

AWS Lambda

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

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

AWS Lambda

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

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

AWS Lambda

フレームワークにはServerless

Apex 等

AWS Lambda

フレームワークにはServerless

Apex 等

Serverless Framework

https://serverless.com/

Serverless Framework

Nearly 1.0(1.0.0-beta2)

Serverless Framework

10,316☆stars on GitHub

Serverless Framework

pluggable

Serverless Framework

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

Serverless Framework

AWS LambdaGoogle Cloud Functions

Azure FunctionsIBM OpenWhisk に対応してゐる

λとAPI Gatewayとの連携

λとAPI Gatewayとの連携

Terraformでやる場合

λと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⽂字

λとAPI Gatewayとの連携

λとAPI Gatewayとの連携

λとAPI Gatewayとの連携

λとAPI Gatewayとの連携

コードのデプロイ⼿順

λと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をデプロイ。

λとAPI Gatewayとの連携

λとAPI Gatewayとの連携

λとAPI Gatewayとの連携

λとAPI Gatewayとの連携

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

λとAPI Gatewayとの連携

`sls deploy`

λとAPI Gatewayとの連携

やりましたね!

Serverless

Serverless

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