×
Copy
Open
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
Slackからデプロイ Hiroto Fukui @bary822
Slide 2
Slide 2 text
self self.name => Hiroto Fukui self.sns => @bary822 self.titles => [‘app engineer’, ‘data engineer’] self.companies => [‘rakuten’, ‘grooves’] self.likes => [‘dog’, ‘camping’,’SUP‘, ruby’]
Slide 3
Slide 3 text
Osaka Tokyo
Slide 4
Slide 4 text
No content
Slide 5
Slide 5 text
Slackからデプロイしたい
Slide 6
Slide 6 text
?
Slide 7
Slide 7 text
前提 - サービスの静的サイト - Ruby製 - https://www.crowd-agent.com/agent/ - コードはGitHub - S3でホスティング - bundle exec middleman s3_sync -e=production でデプロイ
Slide 8
Slide 8 text
? S3
Slide 9
Slide 9 text
1. /deploy production する 2. 任意のURLにPOSTリクエストを発行 3. レスポンスに応じてメッセージを表示
Slide 10
Slide 10 text
? S3
Slide 11
Slide 11 text
AWS Lambda FaaS(Function as a Service) 1. Lambda関数がリクエストを受け付ける 2. GitHubからコードをダウンロード 3. コマンド実行 4. S3 APIを呼び出してsync(デプロイ)
Slide 12
Slide 12 text
? S3
Slide 13
Slide 13 text
API Gateway Lambda S3
Slide 14
Slide 14 text
API Gateway Lambda S3
Slide 15
Slide 15 text
No content
Slide 16
Slide 16 text
API Gateway Lambda CircleCI S3
Slide 17
Slide 17 text
API Gateway Lambda CircleCI S3
Slide 18
Slide 18 text
3秒ルール - Slashコマンドは3秒以内に何らかのメッセージを返す必要がある - それを超えるとエラーメッセージが表示される リクエストを受け取ると とりあえず何かを返すのが吉
Slide 19
Slide 19 text
API Gateway Lambda 1st CircleCI Lambda 2nd S3
Slide 20
Slide 20 text
リクエストがLambdaに届いた時にとりあえず返す CircleCI APIから200が返ってきた時に返す
Slide 21
Slide 21 text
よくあるかもしれない質問
Slide 22
Slide 22 text
Slashコマンドが呼ぶAPIの認証方法 - Slashコマンド毎にユニークなトークンがヘッダーに入ってPOSTされる - API Gatewayでそれを検証
Slide 23
Slide 23 text
Lambdaの無料枠内で収まるのでは - 多分収まる - デプロイするのは開発者ではない - マーケティングの人 - デプロイ回数をコントロールできない前提があった
Slide 24
Slide 24 text
CIに入れるとpushする度にデプロイされるのでは - DEPLOY という環境変数を見るようにした - Lambdaから呼び出す時のみ DEPLOY=true を設定 - CircleCI APIではジョブ実行時の環境変数をパラメーターに指定できる