Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
WEAR のワークフロー実行基盤コストを何とかしたい
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
mi.kobaaaa
December 15, 2023
Programming
1.5k
0
Share
WEAR のワークフロー実行基盤コストを何とかしたい
ZOZO Kubernetes Night 登壇資料
https://zozotech-inc.connpass.com/event/299357/
mi.kobaaaa
December 15, 2023
More Decks by mi.kobaaaa
See All by mi.kobaaaa
WEARのEKSコストを救いたい
mikobaaaaa0920
1
3.7k
Other Decks in Programming
See All in Programming
安いハードウェアでVulkan
fadis
1
930
年間50登壇、単著出版、雑誌寄稿、Podcast出演、YouTube、CM、カンファレンス主催……全部やってみたので面白さ等を比較してみよう / I’ve tried them all, so let’s compare how interesting they are.
nrslib
4
720
メッセージングを利用して時間的結合を分離しよう #phperkaigi
kajitack
3
570
Offline should be the norm: building local-first apps with CRDTs & Kotlin Multiplatform
renaudmathieu
0
160
「接続」—パフォーマンスチューニングの最後の一手 〜点と点を結ぶ、その一瞬のために〜
kentaroutakeda
5
2.5k
Strategy for Finding a Problem for OSS: With Real Examples
kibitan
0
140
飯MCP
yusukebe
0
490
Running Swift without an OS
kishikawakatsumi
0
680
2026-03-27 #terminalnight 変数展開とコマンド展開でターミナル作業をスマートにする方法
masasuzu
0
310
ドメインイベントでビジネスロジックを解きほぐす #phpcon_odawara
kajitack
2
120
おれのAgentic Coding 2026/03
tsukasagr
1
140
一度始めたらやめられない開発効率向上術 / Findy あなたのdotfilesを教えて!
k0kubun
4
2.9k
Featured
See All Featured
Into the Great Unknown - MozCon
thekraken
40
2.3k
Practical Orchestrator
shlominoach
191
11k
Mind Mapping
helmedeiros
PRO
1
150
Building Applications with DynamoDB
mza
96
7k
Conquering PDFs: document understanding beyond plain text
inesmontani
PRO
4
2.6k
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
0
190
Jess Joyce - The Pitfalls of Following Frameworks
techseoconnect
PRO
1
130
Marketing Yourself as an Engineer | Alaka | Gurzu
gurzu
0
170
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
49
9.9k
Visualization
eitanlees
150
17k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
16k
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
0
200
Transcript
WEAR のワークフロー実行基盤コストを何とかしたい 株式会社ZOZO ブランドソリューション開発本部 WEARバックエンド部 SREブロック 小林 未来 Copyright ©
ZOZO, Inc. ZOZO Kubernetes Night
© ZOZO, Inc. 本日お話しすること 自己紹介
© ZOZO, Inc. 株式会社ZOZO ブランドソリューション開発本部 WEARバックエンド部 SREブロック 小林 未来 •
@mirai_kobaaaaaa • ゆるふわ系SRE • 最近シェル芸にハマる
© ZOZO, Inc. 本日お話しすること 本日お話しすること
© ZOZO, Inc. 本日お話しすること • WEAR ワークフロー実行基盤のリプレイスについて ◦ 課題解決へのアプローチ ◦
ワークフロー実行基盤の課題 ◦ WEAR のワークフロー ◦ リプレイス後の効果 本日お話ししないこと • EKS (Amazon Elastic Kubernetes Service) の細かな仕様 • Kubernetes の概要、詳細 • Digdag についての概要、詳細
© ZOZO, Inc. WEAR のワークフロー
© ZOZO, Inc. WEAR のワークフロー ワークフローで処理している主な内容 • 各種ユーザー情報の登録、更新 • ユーザーコーディネート情報の更新
• 各種アイテム情報の連携、状態の更新 • ランキング関連情報の更新 • ショップ様情報の更新
© ZOZO, Inc. WEAR のワークフロー WEAR ワークフロー実行基盤の主要コンポーネント ワークフロー自体を実行する EKS Cluster
ワークフローエンジン ワークフローエンジン用のデータベース
© ZOZO, Inc. WEAR のワークフロー
© ZOZO, Inc. WEAR のワークフロー
© ZOZO, Inc. WEAR のワークフロー
© ZOZO, Inc. WEAR のワークフロー
© ZOZO, Inc. WEAR のワークフロー 今回お話しする範囲
© ZOZO, Inc. ワークフロー実行基盤の課題
© ZOZO, Inc. ワークフロー実行基盤の課題 サービス拡大と共にワークフロー数が飛躍的に増加
© ZOZO, Inc. ワークフロー実行基盤の課題 サービス拡大と共にワークフロー数が飛躍的に増加 Job の増加と比例し Fargate Node が大量に起動
© ZOZO, Inc. ワークフロー実行基盤の課題 サービス拡大と共にワークフロー数が飛躍的に増加 Job の増加と比例し Fargate Node が大量に起動
コスト効率性が課題に
© ZOZO, Inc. 課題解決へのアプローチ
© ZOZO, Inc. 課題解決へのアプローチ • 実測値に基づくリソース設定の見直し • ワークフロー実行基盤に適した基盤構成への変更
© ZOZO, Inc. 課題解決へのアプローチ 実測値に基づくリソース設定の見直し
© ZOZO, Inc. 課題解決へのアプローチ 実測値に基づくリソース設定の見直し • Datadog Metrics から直近数ヶ月の推移を確認
© ZOZO, Inc. 課題解決へのアプローチ 実測値に基づくリソース設定の見直し • 計測したデータを元に必要リソースを再計算 • 全ての Kubernetes
Manifest に反映し設定を更新
© ZOZO, Inc. 課題解決へのアプローチ ワークフロー実行基盤に適した基盤構成への変更
© ZOZO, Inc. 課題解決へのアプローチ ワークフロー実行基盤に適した基盤構成への変更 EKS
© ZOZO, Inc. 課題解決へのアプローチ ワークフロー実行基盤に適した基盤構成への変更 ➕ EKS Fargate
© ZOZO, Inc. 課題解決へのアプローチ ワークフロー実行基盤に適した基盤構成への変更 ➕ 今の WEAR では本当に最適なのか? EKS
Fargate
© ZOZO, Inc. 課題解決へのアプローチ ワークフロー実行基盤に適した基盤構成への変更 • ワークフロー実行の流れを再考
© ZOZO, Inc. 課題解決へのアプローチ ワークフロー実行基盤に適した基盤構成への変更 • ワークフロー実行の流れを再考 複数の workflow 実行中
© ZOZO, Inc. 課題解決へのアプローチ ワークフロー実行基盤に適した基盤構成への変更 • ワークフロー実行の流れを再考 workflow2,4 が完了
© ZOZO, Inc. 課題解決へのアプローチ ワークフロー実行基盤に適した基盤構成への変更 • ワークフロー実行の流れを再考 workflow5 が完了 workflow6
が開始
© ZOZO, Inc. 課題解決へのアプローチ ワークフロー実行基盤に適した基盤構成への変更 • ワークフロー毎に起動する Pod タイミングはばらばら ◦
実は同時実行 Pod 数は多くない • Node が Job 毎に作成されている ◦ Fargate で Node = Pod 数で作成される ◦ Fargate は 1Node(Pod) 毎に課金が発生する EC2 に複数 Pod をまとめればコストを最適化できるのでは?
© ZOZO, Inc. 課題解決へのアプローチ ワークフロー実行基盤に適した基盤構成への変更 • EKS on EC2 への変更懸念点
◦ 運用負荷が上がるのでは? ◦ Job Node のオートスケールはどうする?
© ZOZO, Inc. 課題解決へのアプローチ ワークフロー実行基盤に適した基盤構成への変更 • 運用負荷抑制へのアプローチ
© ZOZO, Inc. 課題解決へのアプローチ ワークフロー実行基盤に適した基盤構成への変更 • 運用負荷抑制へのアプローチ ◦ EC2 Node
はどのようにプロビジョニングする? ◦ EC2 起動テンプレートの管理はどうする? ◦ EKS バージョンアップ時の挙動制御は?
© ZOZO, Inc. 課題解決へのアプローチ ワークフロー実行基盤に適した基盤構成への変更 • 運用負荷抑制へのアプローチ ◦ EC2 Node
はどのようにプロビジョニングする? ◦ EC2 起動テンプレートの管理はどうする? ◦ EKS バージョンアップ時の挙動制御は? ▪ Fargate はスケール時に自動でプロビジョニング
© ZOZO, Inc. 課題解決へのアプローチ ワークフロー実行基盤に適した基盤構成への変更 • 運用負荷抑制へのアプローチ ◦ EC2 Node
はどのようにプロビジョニングする? ◦ EC2 起動テンプレートの管理はどうする? ◦ EKS バージョンアップ時の挙動制御は? ▪ Fargate はスケール時に自動でプロビジョニング ▪ 自前でゴールデンイメージを作るのは大変
© ZOZO, Inc. 課題解決へのアプローチ ワークフロー実行基盤に適した基盤構成への変更 • 運用負荷抑制へのアプローチ ◦ EC2 Node
はどのようにプロビジョニングする? ◦ EC2 起動テンプレートの管理はどうする? ◦ EKS バージョンアップ時の挙動制御は? ▪ Fargate はスケール時に自動でプロビジョニング ▪ 自前でゴールデンイメージを作るのは大変 ▪ Fargate は次起動時に新バージョン準拠になる
© ZOZO, Inc. 課題解決へのアプローチ ワークフロー実行基盤に適した基盤構成への変更 • 運用負荷抑制へのアプローチ ◦ Managed Node
Group を採用
© ZOZO, Inc. 課題解決へのアプローチ ワークフロー実行基盤に適した基盤構成への変更 • 運用負荷抑制へのアプローチ ◦ Managed Node
Group を採用 起動テンプレートを AWS 側で自動的に用意
© ZOZO, Inc. 課題解決へのアプローチ ワークフロー実行基盤に適した基盤構成への変更 • 運用負荷抑制へのアプローチ ◦ Managed Node
Group を採用 EKS バージョンアップ時に自 動で B/G アップデート
© ZOZO, Inc. 課題解決へのアプローチ ワークフロー実行基盤に適した基盤構成への変更 • Job Node のオートスケール
© ZOZO, Inc. 課題解決へのアプローチ ワークフロー実行基盤に適した基盤構成への変更 • Job Node のオートスケール ◦
Job Node のスケールイン / アウトはどうする? ◦ Node レベルのスケールアウトに時間がかかるのでは?
© ZOZO, Inc. 課題解決へのアプローチ ワークフロー実行基盤に適した基盤構成への変更 • Job Node のオートスケール ◦
Job Node のスケールイン / アウトはどうする? ◦ Node レベルのスケールアウトに時間がかかるのでは? ▪ Fargate は Pod スケール時に自動でプロビジョニング
© ZOZO, Inc. 課題解決へのアプローチ ワークフロー実行基盤に適した基盤構成への変更 • Job Node のオートスケール ◦
Job Node のスケールイン / アウトはどうする? ◦ Node レベルのスケールアウトに時間がかかるのでは? ▪ Fargate は Pod スケール時に自動でプロビジョニング ▪ Fargate と EC2 で時間の違いが発生する?
© ZOZO, Inc. 課題解決へのアプローチ ワークフロー実行基盤に適した基盤構成への変更 • Job Node のオートスケール ◦
Karpenter を採用 https://karpenter.sh/より引用
© ZOZO, Inc. 課題解決へのアプローチ ワークフロー実行基盤に適した基盤構成への変更 • Job Node のオートスケール ◦
Karpenter を採用 https://karpenter.sh/より引用 空き容量を計算して Node に Pod を配置
© ZOZO, Inc. 課題解決へのアプローチ ワークフロー実行基盤に適した基盤構成への変更 • Job Node のオートスケール ◦
Karpenter を採用 https://karpenter.sh/より引用 Node に空きがない時は 必要な Node を追加起動
© ZOZO, Inc. 課題解決へのアプローチ ワークフロー実行基盤に適した基盤構成への変更 • Job Node のオートスケール ◦
Karpenter を採用 https://karpenter.sh/より引用 Fargate とほぼ同等の Node スケール速度
© ZOZO, Inc. 課題解決へのアプローチ ワークフロー実行基盤に適した基盤構成への変更 • 最終的な EKS on EC2
構成
© ZOZO, Inc. 課題解決へのアプローチ ワークフロー実行基盤に適した基盤構成への変更 • 最終的な EKS on EC2
構成
© ZOZO, Inc. 課題解決へのアプローチ ワークフロー実行基盤に適した基盤構成への変更 • 最終的な EKS on EC2
構成 役割ごとに Node Group を作成
© ZOZO, Inc. 課題解決へのアプローチ ワークフロー実行基盤に適した基盤構成への変更 • 最終的な EKS on EC2
構成
© ZOZO, Inc. 課題解決へのアプローチ ワークフロー実行基盤に適した基盤構成への変更 • 最終的な EKS on EC2
構成 空き Node に Job を配置
© ZOZO, Inc. 課題解決へのアプローチ ワークフロー実行基盤に適した基盤構成への変更 • 最終的な EKS on EC2
構成
© ZOZO, Inc. 課題解決へのアプローチ ワークフロー実行基盤に適した基盤構成への変更 • 最終的な EKS on EC2
構成 Node 容量が足りない場合 新規 Node を追加
© ZOZO, Inc. 課題解決へのアプローチ ワークフロー実行基盤に適した基盤構成への変更 • 最終的な EKS on EC2
構成
© ZOZO, Inc. 課題解決へのアプローチ ワークフロー実行基盤に適した基盤構成への変更 • 最終的な EKS on EC2
構成 DaemonSet 以外の Pod が無い時は終了
© ZOZO, Inc. リプレイス後の効果
© ZOZO, Inc. リプレイス後の効果 リプレイス前とリプレイス後のコスト比較 30%程のコスト削減に成功
© ZOZO, Inc. リプレイス後の効果 パフォーマンスの変化 • ワークフロー実行自体が平均 20% 高速化 ◦
連続して実行される Job の起動が速くなっていた ◦ EC2 変更によるイメージキャッシュ影響が大きい
© ZOZO, Inc. まとめ
© ZOZO, Inc. まとめ • コスト効率性はとても大事 • リソースを最適化し続けるのも大事 • 「今」のサービスにとって最適か?を考え続けるのも大事
© ZOZO, Inc. まとめ 本日お話しした内容を Tech Blog でも公開しています。 詳しい設定や Terraform
コードなども記載していますので是非ご一読ください! ワークフロー実行基盤をFargateからEC2へ変更したらコストもパフォーマンスも改善できて幸せになった話
© ZOZO, Inc. We are hiring!
© ZOZO, Inc. ご清聴ありがとうございました!