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
© DMM.com で実現する 〜サーバレスで デプロイする仕組みと工夫点〜 2018/11/23 JAWS-UG金沢 #36
Slide 2
Slide 2 text
© DMM.com 自己紹介 : 業界2年目 元認証基盤チーム 現カスタマーサービスサポートチーム バックエンドエンジニア 好きな サービス:
Slide 3
Slide 3 text
© DMM.com アジェンダ
Slide 4
Slide 4 text
© DMM.com 話すこと ・認証基盤チームのデプロイ/リリース方法 ・ の構成 ・工夫した点
Slide 5
Slide 5 text
© DMM.com 話さないこと ・ とはなにか? ・各種 リソースの説明
Slide 6
Slide 6 text
© DMM.com 目次 ・ 導入前 ・デプロイ/リリースの流れ ・ 導入後 ・ コマンドの仕組み ・工夫ポイント ・まとめ
Slide 7
Slide 7 text
© DMM.com 導入前
Slide 8
Slide 8 text
© DMM.com 導入前 ・ デプロイでデプロイ作業を実施 ・リリース作業はすべて コンソールで手動操作 ・総作業時間(検証含め)約4時間 ・ 〜2週に1回リリース
Slide 9
Slide 9 text
© DMM.com デプロイ/リリースの流れ
Slide 10
Slide 10 text
© DMM.com Auto Scaling group デプロイ 本番用 instances Auto Scaling group instances
Slide 11
Slide 11 text
© DMM.com Auto Scaling group 検証 本番用 instances Auto Scaling group instances 検証用
Slide 12
Slide 12 text
© DMM.com Auto Scaling group リリース 本番用 instances Auto Scaling group instances
Slide 13
Slide 13 text
© DMM.com のデプロイ方式は インプレースデプロイと デプロイ の2通り 検証時の 切り替えや、 インスタンス破棄のタイミングを コントロールしたかったので、 インプレースデプロイを選択 なぜインプレースデプロイを使うか?
Slide 14
Slide 14 text
© DMM.com リリース作業リスト 1.待機系 の起動 2. によるデプロイ 3. のインスタンス台数を増やす 4.検証用 に切り替え 5.本番用 に切り替え (リリース) 6.待機系 の縮退
Slide 15
Slide 15 text
© DMM.com 手動操作の問題点 ・操作の再現性がなくなりがち ・操作履歴を追いづらい ・ミスしやすい ・作業に時間がかかる ・作業状況が見えづらい
Slide 16
Slide 16 text
© DMM.com 導入後
Slide 17
Slide 17 text
© DMM.com デプロイ
Slide 18
Slide 18 text
© DMM.com リリース
Slide 19
Slide 19 text
© DMM.com 導入後の変化 1〜6の作業をすべて に変更 ・各作業は用意された コマンドを一度打つだけ ・操作履歴が で一覧できるようになった ・バリデーションを入れることでミスしづらくなった ・総作業時間1時間程度になった ・作業状況が で一覧できるようになった ・週1回リリース
Slide 20
Slide 20 text
© DMM.com コマンドの仕組み
Slide 21
Slide 21 text
© DMM.com VPC コマンドの裏側 production development AWS resources VPC AWS resources
Slide 22
Slide 22 text
© DMM.com コマンド引数で異なる環境に対し操作する
Slide 23
Slide 23 text
© DMM.com VPC 具体的な構成例 デプロイ VPC リリース
Slide 24
Slide 24 text
© DMM.com 工夫ポイント
Slide 25
Slide 25 text
© DMM.com ・デプロイ/リリース操作のバリデーション ・ コマンドのタイムアウト対策 ・デプロイの失敗通知 工夫ポイント
Slide 26
Slide 26 text
© DMM.com デプロイ/リリース操作のバリデーション 前段の で共通のバリデーション処理 ・許可した ユーザ名のみ ・許可した チャンネル名のみ ・実行するチャンネル名とコマンドの引数の比較 (実行コマンドの打ち間違いを防ぐ)
Slide 27
Slide 27 text
© DMM.com VPC production development AWS resources VPC AWS resources
Slide 28
Slide 28 text
© DMM.com ・許可した チャンネルでのみ実行可 チャンネル名によるバリデーション
Slide 29
Slide 29 text
© DMM.com ・実行するチャンネルとコマンドの環境の比較 (実行コマンドの打ち間違いを防ぐ) コマンド引数によるバリデーション
Slide 30
Slide 30 text
© DMM.com コマンドのタイムアウト対策 ・前段の は コマンドの受付完了レスポンスを返す ( 以内にレスポンスを返さないと タイムアウトする) https://api.slack.com/slash-commands#responding_basic_receipt ・後段の は リソースの処理結果を返す
Slide 31
Slide 31 text
© DMM.com VPC を二段構えにして コマンドのタイムアウトを防ぐ コマンド実行 Slash Commands コマンドの実行結果 response_url コマンドの受付通知 callback
Slide 32
Slide 32 text
© DMM.com コマンドの受付通知
Slide 33
Slide 33 text
© DMM.com コマンドの実行結果
Slide 34
Slide 34 text
© DMM.com デプロイの失敗を検知できるようにする 問題点 アプリケーションの挙動がおかしいので調べてみるとデプ ロイに失敗していた。 デプロイに失敗しているのに誰も気づかない。
Slide 35
Slide 35 text
© DMM.com デプロイの失敗を検知できるようにする 解決策 デプロイの失敗を 通知する。
Slide 36
Slide 36 text
© DMM.com デプロイの失敗通知のようす
Slide 37
Slide 37 text
© DMM.com デプロイ失敗通知の仕組み
Slide 38
Slide 38 text
© DMM.com デプロイの失敗通知 イベントのトリガーを設定する
Slide 39
Slide 39 text
© DMM.com デプロイの失敗通知 トリガー先の と を連携させる
Slide 40
Slide 40 text
© DMM.com まとめ
Slide 41
Slide 41 text
© DMM.com VPC を活用して でリリースすることができた production development AWS resources VPC AWS resources
Slide 42
Slide 42 text
© DMM.com ・ミスしにくい バリデーション機能をもたせる ・再現性が高い からコマンドを打つだけ ・操作履歴がわかりやすい で実行したコマンドが一覧できる リリース作業を 化したメリット
Slide 43
Slide 43 text
© DMM.com ・作業時間の短縮 コンソールを操作する必要がない ・作業状況がオープンに 誰がどの作業をしているかすぐにわかる リリース作業を 化したメリット
Slide 44
Slide 44 text
© DMM.com ・サーバ管理の必要がない ・ リソース間の連携が簡単 や など ・構成をコード化して残せる ・タイムアウトの工夫が必要 の応答時間、 コマンドの応答時間 を利用した サーバレス構成の特徴
Slide 45
Slide 45 text
© DMM.com ありがとうございました