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

【解説】第7章 はじめての本番デプロイ / zozotechbook1-ch07-deploypipeline

【解説】第7章 はじめての本番デプロイ / zozotechbook1-ch07-deploypipeline

Title
【解説】第7章 はじめての本番デプロイ

Speaker
光野 達朗 Tatsuro Mitsuno (技術開発本部 SRE部 テックリード)

2020/04/28 【オンライン】#技術書典 頒布本「ZOZO TECH BOOK」解説会 Vol.1
https://zozotech-inc.connpass.com/event/173309/
#zozotech

Tatsuro Mitsuno

April 28, 2020
Tweet

More Decks by Tatsuro Mitsuno

Other Decks in Technology

Transcript

  1. 【解説】第7章

    はじめての本番デプロイ

    
#技術書典 頒布本「ZOZO TECH BOOK」解説会 Vol.1


    株式会社ZOZOテクノロジーズ

    技術開発本部 SRE部 テックリード

    光野達朗
    Copyright © ZOZO Technologies, Inc.

    View Slide

  2. © ZOZO Technologies, Inc.
    株式会社ZOZOテクノロジーズ

    技術開発本部 SRE部

    テックリード


    光野 達朗

    2012年ヤフー株式会社にサーバサイドエンジニアとして入
    社。2016年4月からは株式会社VASILYでインフラエンジニ
    ア。2018年4月から現職。現在はAWSを専門とするSREテッ
    クリードとして、クラウドアーキテクチャの構築と信頼性向上
    に従事。

    ウィスキーと葉巻が好き。愛してる。

    
 2

    View Slide

  3. © ZOZO Technologies, Inc.
    本章の概要

    ● 本章では、AWS上に作られる本番環境への自動デプロイについて具体的な手法
    を説明しています。

    ● 状況設定

    ○ デプロイするアプリケーションはWebAPI

    ○ 本番環境は、複数のサーバから構成されユーザトラフィックが常に発生

    ● デプロイを自動化する際に考慮すべき部分を挙げ、AWSのサービスを用いて具体
    的な対策を行います。

    ● なお、テスト(アプリケーションの動作を保証する行為全般)については取り扱いま
    せん。

    3

    View Slide

  4. © ZOZO Technologies, Inc.
    本文と発表内容の対応

    章構成

    ● 7.1 はじめに

    ○ 導入部分、デプロイ大事


    ● 7.2 デプロイしましょ

    ○ 環境構築について


    ● 7.3 本番デプロイのために考慮すべき課題たち

    ○ 3つの課題について


    ● 7.4 おわりに

    ○ 内容の要約、素敵なデプロイライフを!

    4

    View Slide

  5. © ZOZO Technologies, Inc.
    本文と発表内容の対応

    章構成

    ● 7.1 はじめに

    ○ 導入部分、デプロイ大事


    ● 7.2 デプロイしましょ

    ○ 環境構築について


    ● 7.3 本番デプロイのために考慮すべき課題たち

    ○ 3つの課題について


    ● 7.4 おわりに

    ○ 内容の要約、素敵なデプロイライフを!

    5
    本文に載っていない話をします。

    デプロイ自動化の動機部分を補足します

    環境構築が中心なので、

    本発表では取り上げません。完成図だけ。

    内容を要約して説明します。

    CodeDeployはいいぞ

    おわりに


    View Slide

  6. © ZOZO Technologies, Inc.
    6
    デプロイを自動化するモチベーション

    Icons made by Smashicons from www.flaticon.com
    エンジニア ユーザ
    アプリケーション
    本番環境
    利用
    開発 デプロイ
    デプロイ:アプリケーションを本番環境に配置する行為全般

    デプロイしないと、ユーザに新しい価値を提供できない


    View Slide

  7. © ZOZO Technologies, Inc.
    7
    デプロイを自動化するモチベーション


    Icons made by Smashicons from www.flaticon.com
    エンジニア ユーザ
    アプリケーション
    利用
    開発 デプロイ
    手動でも良い

    $ zip ; scp ; mv ; unzip ; ...

    デプロイ先

    View Slide

  8. © ZOZO Technologies, Inc.
    8
    デプロイを自動化するモチベーション


    Icons made by Smashicons from www.flaticon.com
    エンジニア ユーザ
    アプリケーション
    利用
    開発 デプロイ
    サーバが10台、100台だったら・・・?


    View Slide

  9. © ZOZO Technologies, Inc.
    9
    デプロイを自動化するモチベーション


    Icons made by Smashicons from www.flaticon.com
    Aさん
    ユーザ
    利用
    デプロイ
    AさんとBさんのデプロイ作業は同じ?

    開発
    Bさん
    デプロイ
    開発 デプロイ先

    View Slide

  10. © ZOZO Technologies, Inc.
    10
    デプロイを自動化するモチベーション


    Icons made by Smashicons from www.flaticon.com
    Aさん
    ユーザ
    利用
    デプロイ
    一番集中したいのはここ

    開発
    Bさん
    デプロイ
    開発 デプロイ先

    View Slide

  11. © ZOZO Technologies, Inc.
    11
    デプロイを自動化するモチベーション


    Icons made by Smashicons from www.flaticon.com
    Aさん
    ユーザ
    利用
    開発
    Bさん
    開発 デプロイ
    素敵な
    仕組み
    本番環境へのデプロイを自動化するモチベーション

    作業効率を高める / 作業品質を維持する / 開発に集中する


    View Slide

  12. © ZOZO Technologies, Inc.
    デプロイを自動化すモチベーション

    12
    ● 開発したアプリケーションは、デプロイしてユーザへ届ける必要がある

    ○ デプロイ:アプリケーションを本番環境に配置する行為全般

    ● デプロイは、手動でもできる

    ○ zipで固めたアプリケーションを、サーバにscpして、unzipして、mv

    ● 1台ならまだなんとかなるが、デプロイ先が10台100台と増えると破綻する

    ● 仮に1台であったとしても、手作業は常に作業ミスと隣り合わせ

    ○ Aさんの作業品質と、Bさんの作業品質が同じかはわからない

    ○ 反映するだけのために、

    ● 複数台に対して、安心安全にアプリケーションを反映する仕組みがあることで、エ
    ンジニアは開発に集中できる


    View Slide

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

    13

    View Slide

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

    14
    環境再現用の
    CloudFormation
    テンプレートあり〼
    https://github.com/st-tech/zozotechbook1-ch07-deploypipeline/

    View Slide

  15. © ZOZO Technologies, Inc.
    本番デプロイのために考慮すべき課題たち

    1. 複数の反映対象を管理すること


    2. 反映前後で処理を安全に継続すること


    3. 失敗を検知しロールバックすること

    15

    View Slide

  16. © ZOZO Technologies, Inc.
    本番デプロイのために考慮すべき課題たち

    1. 複数の反映対象を管理すること


    2. 反映前後で処理を安全に継続すること


    3. 失敗を検知しロールバックすること

    16
    全てCodeDeployを使って解決が可能で、
    本文ではCodeDeploy中のどの設定が対応するかを説明している

    View Slide

  17. © ZOZO Technologies, Inc.
    課題その1. 複数の反映対象を管理すること


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

    View Slide

  18. © ZOZO Technologies, Inc.
    課題その2. 反映前後で処理を安全に継続すること



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

    View Slide

  19. © ZOZO Technologies, Inc.
    課題その3. 失敗を検知しロールバックすること



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

    View Slide

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


    View Slide

  21. © ZOZO Technologies, Inc.
    おわりに

    21
    ● ZOZO TECH BOOK VOL.1 第7章では、

    本番環境への自動化されたデプロイについて説明しました

    ● 自動化することで、作業効率を高め作業品質を維持し開発に集中できます

    ● 安全なサービスリリースのために、

    デプロイパイプライン構築を計画してください

    ● ネットワークとデプロイパイプラインのサンプルコードあり〼

    https://github.com/st-tech/zozotechbook1-ch07-deploypipeline/

    View Slide

  22. View Slide