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

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

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
Avatar for ymktmk ymktmk
January 24, 2024
5k

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

Avatar for ymktmk

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