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

リリース作業をCI/CDで自動化するまで / What We Did for Automating Release Processes

リリース作業をCI/CDで自動化するまで / What We Did for Automating Release Processes

Jun 22, 2023 - CI/CD最前線〜今開発現場が直面している課題とは?Lunch LT
https://findy.connpass.com/event/285883/

Hiroki Koketsu

June 29, 2023
Tweet

Other Decks in Programming

Transcript

  1. リリース作業をCI/CDで自動化するま
    で

    株式会社ZOZO

    計測プラットフォーム開発本部 SRE

    纐纈 宏樹
    Copyright © ZOZO, Inc.
    1

    View Slide

  2. © ZOZO, Inc.
    株式会社ZOZO

    計測プラットフォーム開発本部 計測システム部 SRE
    纐纈 宏樹

    2022年ZOZOに入社。計測に関わるサービス開発や既存シ
    ステムの運用に関わっています。

    2

    View Slide

  3. © ZOZO, Inc.
    https://zozo.jp/

    3
    ● ファッションEC

    ● 1,500以上のショップ、8,400以上のブランドの取り扱い

    ● 常時95万点以上の商品アイテム数と毎日平均2,900点以上の新着 商品
    を掲載(2023年3月末時点)

    ● ブランド古着のファッションゾーン「ZOZOUSED」や

    コスメ専門モール「ZOZOCOSME」、靴の専門モール

    「ZOZOSHOES」、ラグジュアリー&デザイナーズゾーン

    「ZOZOVILLA」を展開

    ● 即日配送サービス

    ● ギフトラッピングサービス

    ● ツケ払い など


    View Slide

  4. © ZOZO, Inc.
    4
    https://zozo.jp/zozomat/


    ● 自宅にいながら簡単に高精度な足の3D計測ができる計測マット

    ● 計測したデータをもとに、自分の足型と靴の“相性度” を表示

    ● NIKEやCONVERSEなど5,587型以上のアイテムに対応

    (2022年12月末時点)


    View Slide

  5. © ZOZO, Inc.
    5
    https://zozo.jp/zozoglass/

    ● 自宅で簡単・高精度にご自身の顔の肌の色を計測できる
    フェイスカラー計測ツール

    ● ECにおけるコスメ購入時の課題であった「色選び」に関する
    不安や悩みを解消

    ● 肌の色を構成する成分、ヘモグロビン量とメラニン量を画像
    から推定

    ● コスメ専門モール「ZOZOCOSME」で取り扱うベースメイクの
    一部に対応

    ● 計測者数128万人を突破(2022年12月末時点)


    View Slide

  6. © ZOZO, Inc.
    今日の内容

    6
    ● リリース作業を自動化するまでの取り組みをまとめて紹介

    ● 詳細はテックブログを読んでいただけると幸いです!


    View Slide

  7. © ZOZO, Inc.
    目次

    ● 弊部署が担当しているシステムの特徴

    ● CI/CD改善前と改善後の比較

    ● リリース自動化までの取り組み紹介

    ○ Warmup

    ○ Argo CD, Argo Rollouts

    ○ Gatling

    ○ Auto Merge

    7

    View Slide

  8. © ZOZO, Inc.
    部署の特徴

    ● 異なる開発フェーズのプロダクトを複数担当している

    ○ 保守運用 x 2

    ○ 新機能追加 x 1

    ○ 新規構築 x 1

    ● AWS、K8s (EKS)、Scala

    8

    View Slide

  9. © ZOZO, Inc.
    リリースフロー改善前

    9

    View Slide

  10. © ZOZO, Inc.
    CI/CD改善前の課題

    ● プロダクトごとにリリース方法が統一されていない

    ○ → 手順書のメンテやオンボーディングも大変

    ● 手作業があるので、ヒューマンエラーが起きる可能性あり

    ● リリース頻度が低く、障害が起きても原因の切り分けが難しい

    10

    View Slide

  11. © ZOZO, Inc.
    リリースフロー改善後の現在

    11

    View Slide

  12. © ZOZO, Inc.
    リリースフロー改善後の現在

    12

    View Slide

  13. © ZOZO, Inc.
    改善効果

    13
    改善前 改善後
    作業時間 2~3h x 2人/週 0h
    頻度 2~3週間に1回 PRごと
    安全性 ● 他チームに実機での動作確認を依頼
    ● リリース担当者がメトリクスを目視で確認
    ● 自動動作確認
    ● 自動負荷試験
    ● 自動メトリクスチェック
    ● 段階的リリース
    ● 自動ロールバック

    View Slide

  14. © ZOZO, Inc.
    CI/CDの改善がもたらすメリット

    14
    ● 人間がリリース作業に費やす時間を減らせる

    ○ → 開発に集中できる

    ● 開発サイクルを早められる

    ○ → 利益に直結する機能追加などを促進できる

    ● リリースによる障害を減らせる

    ○ → ユーザー体験の悪化や損失を防ぐことができる


    View Slide

  15. © ZOZO, Inc.
    CI/CDの改善がもたらすデメリット

    15
    ● インフラコストは増加してしまう

    ○ リリースに必要なリソースがどうしても増えるので、仕方がない

    ○ もたらされるメリットは非常に大きいので、コストを比較して判断


    View Slide

  16. © ZOZO, Inc.
    16
    リリース自動化までの取り組み紹介

    ● 自動動作確認

    ● GitOps化

    ● カナリアリリース

    ● 自動負荷試験

    ● PRの自動マージ

    16

    View Slide

  17. © ZOZO, Inc.
    17
    Warmup

    ● JIT(Just In Time)コンパイラーの暖機運転

    ○ 擬似的なリクエストを送り、動的コンパイルを事前に完了させる

    ○ 起動直後のパフォーマンスを上げることができる

    ● これを使って、動作確認で使っていたAPIを一通り実行す る

    ● 暖機運転終了後に、PodへのアクセスをReadiness Probeで許可

    17

    View Slide

  18. © ZOZO, Inc.
    18
    Argo CD

    ● 開発環境

    ○ Image Updaterを使い、常に最新のイメージタグをPullしている

    ○ GitHub Actionsでブランチを指定して、ECRにイメージをPushすると、開発環
    境の検証ができる

    18

    View Slide

  19. © ZOZO, Inc.
    19
    Argo CD

    19

    View Slide

  20. © ZOZO, Inc.
    20
    Argo CD

    ● ステージング&本番環境

    ○ Image Updaterで最新のイメージの変更を検知した後、K8sリポジトリにイメー
    ジタグの変更を通知

    → GitHub Actionsでイメージタグ変更のPRを作成

    → main/releaseブランチにマージすると、stg/prdにリリース

    20

    View Slide

  21. © ZOZO, Inc.
    21
    Argo Rollouts

    21
    ● カナリアリリースを導入

    ○ Datadogメトリクスを参照の上、自動ロールバックが可能

    ○ 徐々にリリース比率を上げられるので、ユーザー影響を減らせる


    View Slide

  22. © ZOZO, Inc.
    22
    Gatling

    ● Argo CDのリソースフックを使って、ステージング環境のPodが入れ替わる際に、
    自動で負荷試験を行なっている

    ● 負荷試験結果は、S3にアップロードしてSlackに通知

    22

    View Slide

  23. © ZOZO, Inc.
    23
    Gatling

    23

    View Slide

  24. © ZOZO, Inc.
    24
    Auto Merge

    ● 保守メインのプロダクトのライブラリ更新はPRのマージまで自動化したい

    ○ ステージング環境

    ■ UnitテストやインテグレーションテストのCIが通れば、OK

    ■ → GitHubのAuto MergeをGitHub Actionsから有効化

    ○ 本番環境

    ■ ステージング環境の負荷試験が通れば、OK

    ■ → Gatling完了時にスクリプトを実行して、PRを承認&マージ

    24

    View Slide

  25. © ZOZO, Inc.
    25
    25

    View Slide

  26. View Slide