Slide 1

Slide 1 text

【解説】第7章
 はじめての本番デプロイ
 
#技術書典 頒布本「ZOZO TECH BOOK」解説会 Vol.1
 
 株式会社ZOZOテクノロジーズ
 技術開発本部 SRE部 テックリード
 光野達朗 Copyright © ZOZO Technologies, Inc.

Slide 2

Slide 2 text

© ZOZO Technologies, Inc. 株式会社ZOZOテクノロジーズ
 技術開発本部 SRE部
 テックリード
 
 光野 達朗
 2012年ヤフー株式会社にサーバサイドエンジニアとして入 社。2016年4月からは株式会社VASILYでインフラエンジニ ア。2018年4月から現職。現在はAWSを専門とするSREテッ クリードとして、クラウドアーキテクチャの構築と信頼性向上 に従事。
 ウィスキーと葉巻が好き。愛してる。
 
 2

Slide 3

Slide 3 text

© ZOZO Technologies, Inc. 本章の概要
 ● 本章では、AWS上に作られる本番環境への自動デプロイについて具体的な手法 を説明しています。
 ● 状況設定
 ○ デプロイするアプリケーションはWebAPI
 ○ 本番環境は、複数のサーバから構成されユーザトラフィックが常に発生
 ● デプロイを自動化する際に考慮すべき部分を挙げ、AWSのサービスを用いて具体 的な対策を行います。
 ● なお、テスト(アプリケーションの動作を保証する行為全般)については取り扱いま せん。
 3

Slide 4

Slide 4 text

© ZOZO Technologies, Inc. 本文と発表内容の対応
 章構成
 ● 7.1 はじめに
 ○ 導入部分、デプロイ大事
 
 ● 7.2 デプロイしましょ
 ○ 環境構築について
 
 ● 7.3 本番デプロイのために考慮すべき課題たち
 ○ 3つの課題について
 
 ● 7.4 おわりに
 ○ 内容の要約、素敵なデプロイライフを!
 4

Slide 5

Slide 5 text

© ZOZO Technologies, Inc. 本文と発表内容の対応
 章構成
 ● 7.1 はじめに
 ○ 導入部分、デプロイ大事
 
 ● 7.2 デプロイしましょ
 ○ 環境構築について
 
 ● 7.3 本番デプロイのために考慮すべき課題たち
 ○ 3つの課題について
 
 ● 7.4 おわりに
 ○ 内容の要約、素敵なデプロイライフを!
 5 本文に載っていない話をします。
 デプロイ自動化の動機部分を補足します
 環境構築が中心なので、
 本発表では取り上げません。完成図だけ。
 内容を要約して説明します。
 CodeDeployはいいぞ
 おわりに


Slide 6

Slide 6 text

© ZOZO Technologies, Inc. 6 デプロイを自動化するモチベーション
 Icons made by Smashicons from www.flaticon.com エンジニア ユーザ アプリケーション 本番環境 利用 開発 デプロイ デプロイ:アプリケーションを本番環境に配置する行為全般
 デプロイしないと、ユーザに新しい価値を提供できない


Slide 7

Slide 7 text

© ZOZO Technologies, Inc. 7 デプロイを自動化するモチベーション
 
 Icons made by Smashicons from www.flaticon.com エンジニア ユーザ アプリケーション 利用 開発 デプロイ 手動でも良い
 $ zip ; scp ; mv ; unzip ; ...
 デプロイ先

Slide 8

Slide 8 text

© ZOZO Technologies, Inc. 8 デプロイを自動化するモチベーション
 
 Icons made by Smashicons from www.flaticon.com エンジニア ユーザ アプリケーション 利用 開発 デプロイ サーバが10台、100台だったら・・・?


Slide 9

Slide 9 text

© ZOZO Technologies, Inc. 9 デプロイを自動化するモチベーション
 
 Icons made by Smashicons from www.flaticon.com Aさん ユーザ 利用 デプロイ AさんとBさんのデプロイ作業は同じ?
 開発 Bさん デプロイ 開発 デプロイ先

Slide 10

Slide 10 text

© ZOZO Technologies, Inc. 10 デプロイを自動化するモチベーション
 
 Icons made by Smashicons from www.flaticon.com Aさん ユーザ 利用 デプロイ 一番集中したいのはここ
 開発 Bさん デプロイ 開発 デプロイ先

Slide 11

Slide 11 text

© ZOZO Technologies, Inc. 11 デプロイを自動化するモチベーション
 
 Icons made by Smashicons from www.flaticon.com Aさん ユーザ 利用 開発 Bさん 開発 デプロイ 素敵な 仕組み 本番環境へのデプロイを自動化するモチベーション
 作業効率を高める / 作業品質を維持する / 開発に集中する


Slide 12

Slide 12 text

© ZOZO Technologies, Inc. デプロイを自動化すモチベーション
 12 ● 開発したアプリケーションは、デプロイしてユーザへ届ける必要がある
 ○ デプロイ:アプリケーションを本番環境に配置する行為全般
 ● デプロイは、手動でもできる
 ○ zipで固めたアプリケーションを、サーバにscpして、unzipして、mv
 ● 1台ならまだなんとかなるが、デプロイ先が10台100台と増えると破綻する
 ● 仮に1台であったとしても、手作業は常に作業ミスと隣り合わせ
 ○ Aさんの作業品質と、Bさんの作業品質が同じかはわからない
 ○ 反映するだけのために、
 ● 複数台に対して、安心安全にアプリケーションを反映する仕組みがあることで、エ ンジニアは開発に集中できる


Slide 13

Slide 13 text

© ZOZO Technologies, Inc. 本章で構築するネットワーク
 13

Slide 14

Slide 14 text

© ZOZO Technologies, Inc. 本章で構築するネットワーク
 14 環境再現用の CloudFormation テンプレートあり〼 https://github.com/st-tech/zozotechbook1-ch07-deploypipeline/

Slide 15

Slide 15 text

© ZOZO Technologies, Inc. 本番デプロイのために考慮すべき課題たち
 1. 複数の反映対象を管理すること
 
 2. 反映前後で処理を安全に継続すること
 
 3. 失敗を検知しロールバックすること
 15

Slide 16

Slide 16 text

© ZOZO Technologies, Inc. 本番デプロイのために考慮すべき課題たち
 1. 複数の反映対象を管理すること
 
 2. 反映前後で処理を安全に継続すること
 
 3. 失敗を検知しロールバックすること
 16 全てCodeDeployを使って解決が可能で、 本文ではCodeDeploy中のどの設定が対応するかを説明している

Slide 17

Slide 17 text

© ZOZO Technologies, Inc. 課題その1. 複数の反映対象を管理すること
 
 17 Icons made by Smashicons from www.flaticon.com アプリケーション グループA グループB ● アプリケーションは、 グループAにだけデプロイしたい ● サーバは、トラブルやAutoScalingで 入れ替わるかもしれない ◯必要なもの デプロイ先を賢く絞り込む仕組み ◯CodeDeployでは... タグ or AutoScalingGroupで デプロイ先を指定できるため、 サーバ1つ1つを特別視しなくて良い

Slide 18

Slide 18 text

© ZOZO Technologies, Inc. 課題その2. 反映前後で処理を安全に継続すること
 
 
 18 ● アプリケーションの更新には、 プロセスの更新を伴う事が多い ● ユーザトラフィックを受けたまま更新 するとエラーとなる ◯必要なもの プロセス切り替えの瞬間を ユーザに気づかせない仕組み ◯CodeDeployでは... トラフィックが無い状態を作る。 LBデタッチ / デプロイ / LBアタッチ ミドルウェアがGracefull restartに対応 していればなお良し アプリケーション Icons made by Smashicons from www.flaticon.com LB(ロードバランサ) ユーザトラフィック

Slide 19

Slide 19 text

© ZOZO Technologies, Inc. 課題その3. 失敗を検知しロールバックすること
 
 
 19 ● トラブルは、 デプロイ起因の場合が多い ● 本番にデプロイして発生する問題を ゼロにするのは難しい ◯必要なもの 異常検知とロールバックする仕組み ◯CodeDeployでは... 1. デプロイスクリプトの処理結果 (exit code) 2. CloudWatch Alarm の2パターンでロールバックが可能 Icons made by Smashicons from www.flaticon.com アプリケーション 正常動作 不具合発生 本番環境

Slide 20

Slide 20 text

© ZOZO Technologies, Inc. 20 CodeDeployをしっかり使えば 多くの課題を解決可能 要約すると


Slide 21

Slide 21 text

© ZOZO Technologies, Inc. おわりに
 21 ● ZOZO TECH BOOK VOL.1 第7章では、
 本番環境への自動化されたデプロイについて説明しました
 ● 自動化することで、作業効率を高め作業品質を維持し開発に集中できます
 ● 安全なサービスリリースのために、
 デプロイパイプライン構築を計画してください
 ● ネットワークとデプロイパイプラインのサンプルコードあり〼
 https://github.com/st-tech/zozotechbook1-ch07-deploypipeline/ 


Slide 22

Slide 22 text

No content