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

Kubernetesを活用した開発者体験向上の取り組み

ymktmk
January 24, 2024
3.2k

 Kubernetesを活用した開発者体験向上の取り組み

ymktmk

January 24, 2024
Tweet

Transcript

  1. © ZOZO, Inc. 株式会社ZOZO
 ブランドソリューション開発本部 WEARバックエンド部
 SREブロック
 山岡 朋樹
 •

    2023年4月 新卒入社
 • WEARやFAANSのクラウド運用、リプレイスに従事
 • Developer Experience向上が好き
 • X / GitHub: ymktmk
 3
  2. © ZOZO, Inc. https://zozo.jp/ • ファッションEC • 1,500以上のショップ、8,900以上のブランドの取り扱い • 常時95万点以上の商品アイテム数と毎日平均2,900点以上の新着

    商品を掲載(2023年9月末時点) • ブランド古着のファッションゾーン「ZOZOUSED」や コスメ専門モール「ZOZOCOSME」、靴の専門モール 「ZOZOSHOES」、ラグジュアリー&デザイナーズゾーン 「ZOZOVILLA」を展開 • 即日配送サービス • ギフトラッピングサービス • ツケ払い など
  3. © ZOZO, Inc. https://wear.jp/ • ファッションコーディネートアプリ • 1,600万ダウンロード突破、コーディネート投稿総数は1,400万 件以上(2023年9月末時点) •

    ピックアップタグから最新のトレンドをチェック • コーディネート着用アイテムを公式サイトで購入可能 • WEAR公認の人気ユーザーをWEARISTAと認定。モデル・タレン ト・デザイナー・インフルエンサーといった各界著名人も参加
  4. © ZOZO, Inc. 9 お話しすること
 • Kubernetes Operatorを活用した開発者体験向上の取り組み事例
 ◦ 負荷試験基盤


    ◦ Pull Request毎のPreview環境
 お話ししないこと
 • Kubernetesの概要・詳細
 • Platform周辺技術の詳細
 WEARにおけるKubernetesネイティブな負荷試験基盤の導入とその効果 : https://techblog.zozo.com/entry/wear-kubernetes-load-test-platform WEARにおけるPull Request毎のPreview環境導入とその効果 : https://speakerdeck.com/ymktmk/wearhurontoendoniokerupull-requestmei-nopreviewhuan-jing-dao-ru-tosonoxiao-guo
  5. © ZOZO, Inc. 11 開発者にとって確立された負荷試験方法がない
 
 • どの負荷試験ツールを使うのか
 ◦ Locust、K6、Gatling

    etc.
 
 • どの基盤上で実施するのか 
 ◦ 単一マシンで想定負荷をかけることができるのか
 
 • そもそもどうやって実施するのか
 ◦ 負荷試験が初めてでやり方がわからない 
 負荷試験で起きていた課題

  6. © ZOZO, Inc. 12 • どの負荷試験ツールを使うのか
 ◦ JavaScriptで書きやすいK6を負荷試験ツールとして統一
 
 •

    どの基盤上で実施するのか
 ◦ k6-operatorを用いて複数Podで負荷試験できるように
 
 • そもそもどうやって実施するのか
 ◦ GitHub ActionsのWeb UIを介して容易に実施できるように
 分散負荷試験基盤で課題解決
 k6 Document: https://k6.io/ k6-operator GitHub: https://github.com/grafana/k6
  7. © ZOZO, Inc. 14 • 負荷試験を手軽に実施できるように
 • 単一マシン以上の大きな負荷で負荷試験が実施できるように
 分散負荷試験基盤の導入後
 •

    GitHubでテストシナリオを管理
 ◦ 過去のシナリオを再利用できるように
 ◦ 負荷試験のレビューを行えるように
 +αの効果

  8. © ZOZO, Inc. 16 • Webフロントエンドのリプレイスで旧環境のUIと比較しながらレビュー
 ◦ UIレビューの負担がかかる
 ◦ UIレビュー中はProduction環境までリリースできない


    
 • VercelやHerokuのようなモダンなPaaSに備わっているPull Request毎のPreview機能 が欲しい
 Pull Request毎のPreview環境導入の背景

  9. © ZOZO, Inc. 17 Pull Request毎のPreview環境の実現方法
 • pr100.preview.wear.jpにアクセスするとPR100のPreview環境へ
 ◦ ワイルドカードドメインとする(*.preview.wear.jp)


    ◦ Istio VirtualServiceのホストアドレスルーティング
 
 • Pull Requestを検知してKubernetesへデプロイ
 ◦ Argo CD Pull Request Generator
 ◦ Helm TemplateでVirtualService、Service、Deploymentを管理
 Istio VirtualService Document: https://istio.io/latest/docs/reference/config/networking/virtual-service/ Argo CD Pull Request Generator Document: https://argo-cd.readthedocs.io/en/stable/operator-manual/applicationset/Generators-Pull-Request/
  10. © ZOZO, Inc. 22 まとめ
 • Kubernetesは高い拡張性を活かして様々な機能開発ができる
 
 • 弊チームでは、k6-operatorで分散負荷試験基盤、Argo

    CD Pull Request Generator でPull Request毎のPreview環境を実現
 
 • Kubernetesと「開発者体験向上」は相性が良い
 
 ☞ 運用において発生した課題を解決するツールの導入や開発がオススメ

  11. © ZOZO, Inc. 2022 2023 • EKSの導入 • Argo CDでGitOps

    • 負荷試験基盤 • Preview環境 2024 現在 • QA環境 より開発者に優しい基盤作りと さらなる運用自動化を目指す! 今後の展望
 WEARにおけるKubernetes導入と改善の歩み: https://techblog.zozo.com/entry/wear-kubernetes-introduction-and-improvement ワークフロー実行基盤を FargateからEC2に移行したらコストもパフォーマンス改善できて幸せになった話 : https://techblog.zozo.com/entry/reconfigure-eks-workflow-infrastructure