Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Serverless Frameworkを本番環境に投入するために

Serverless Frameworkを本番環境に投入するために

Serverless Frameworkを本番環境に投入するために

さっちゃん

November 17, 2016
Tweet

More Decks by さっちゃん

Other Decks in Programming

Transcript

  1. 常駐 Process Client 狀態 Client Client Client Client Client Client

    Client Client Client Client 常駐 Process 常駐 Process 狀態 狀態
  2. 常駐 Process Client 狀態 Client Client Client Client Client Client

    Client Client Client Client 常駐 Process 常駐 Process 狀態 狀態 管理
  3. 常駐 Process Client 狀態 Client Client Client Client Client Client

    Client Client Client Client 常駐 Process 常駐 Process 狀態 狀態 管理
  4. Client Client Client Client Client Client Client Client Client Client

    Client 狀態 サーバーレスアーキテクチャ 管理 Fun Fun Fun Fun Fun Fun
  5. Event source 狀態 Function Event source Event source Function Function

    Function Function Function Function Event Eventと Functionが 1對1
  6. FaaSで管理すべき事 ↓ Eventの振り分け (Load balancing) 処理能⼒の割り當て (Scale up)→設定する Process數の増減 (Scale

    out) 死活監視→Log監視 Ver.更新→⾃然なBlue-Green ♪(*>ω<)o∀*∀o(>ω<*)♪カンパーイ
  7. Terraformで剥き出しのAWS resourceを管理する例 API GatewayとLambdaの組み合はせでリリースするバージョンを制御する - c4se記:さっちゃんですよ☆ http://c4se.hatenablog.com/entry/2016/07/26/122508 管理するもの ↓ aws_lambda_function/aws_lambda_alias/aws_lambda_alias/aws_lam

    bda_permission/aws_lambda_permission/aws_api_gateway_rest_api/ aws_api_gateway_deployment/aws_api_gateway_deployment/aws_ap i_gateway_resource/aws_api_gateway_resource/aws_api_gateway_m ethod/aws_api_gateway_method/aws_api_gateway_integration/aws_ api_gateway_integration/aws_api_gateway_method_response/aws_ap i_gateway_method_response/aws_api_gateway_method_response/aw s_api_gateway_method_response/aws_api_gateway_method_respons e/aws_api_gateway_method_response/aws_api_gateway_integration_ response/aws_api_gateway_integration_response/aws_api_gateway_i ntegration_response/aws_api_gateway_integration_response/aws_api _gateway_integration_response/aws_api_gateway_integration_respon se
  8. Terraformで剥き出しのAWS resourceを管理する例 API GatewayとLambdaの組み合はせでリリースするバージョンを制御する - c4se記:さっちゃんですよ☆ http://c4se.hatenablog.com/entry/2016/07/26/122508 deploy⼿順 ↓ 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ステージにデプロイ。
  9. Terraformで剥き出しのAWS resourceを管理する例 API GatewayとLambdaの組み合はせでリリースするバージョンを制御する - c4se記:さっちゃんですよ☆ http://c4se.hatenablog.com/entry/2016/07/26/122508 deploy⼿順 ↓ 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ステージにデプロイ。 (╯°□°)╯︵ ┻━┻
  10. Terraformで剥き出しのAWS resourceを管理する例 API GatewayとLambdaの組み合はせでリリースするバージョンを制御する - c4se記:さっちゃんですよ☆ http://c4se.hatenablog.com/entry/2016/07/26/122508 deploy⼿順 ↓ 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ステージにデプロイ。 Event sourceの管理とEvent sourceとFunctionの 對應の管理には、温かみの在る⾮⼈間的な作業が ⼀杯!
  11. Serverless Frameworkで管理する例 ↓ provider: stage: staging functions: example: handler: handler.handler

    events: - http: path: "example/example” method: get integration: lambda - http: path: "example/example” method: put integration: lambda
  12. RDSが1時 間毎に作る slowquery log RDSが1時 間毎に作る slowquery log RDSが1時間 毎に作る

    slowquery log CloudWatch Schedule Lambda Chat room 1回/1 hour 取得 投稿
  13. service: xxx-export-slow-query provider: name: aws region: ap-northeast-1 stage: prod runtime:

    python2.7 iamRoleStatements: - Effect: Allow Action: - rds:DescribeDBLogFiles - rds:DownloadDBLogFilePortion Resource: - arn:aws:rds:* package: exclude: - tasks.py - tests functions: exportToChat: handler: handler.export_to_chat memorySize: 512 timeout: 6 events: - schedule: rate(1 hour)
  14. 舊Lambda API Gateway custome domain 舊API Gateway resource 舊Lambda API

    Gateway custome domain 舊API Gateway resource 新Lambda 新API Gateway resource API Gateway custome domain 新Lambda 新API Gateway resource