$30 off During Our Annual Pro Sale. View Details »
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
WEAR のワークフロー実行基盤コストを何とかしたい
Search
mi.kobaaaa
December 15, 2023
Programming
0
1.4k
WEAR のワークフロー実行基盤コストを何とかしたい
ZOZO Kubernetes Night 登壇資料
https://zozotech-inc.connpass.com/event/299357/
mi.kobaaaa
December 15, 2023
Tweet
Share
More Decks by mi.kobaaaa
See All by mi.kobaaaa
WEARのEKSコストを救いたい
mikobaaaaa0920
1
3.6k
Other Decks in Programming
See All in Programming
モデル駆動設計をやってみよう Modeling Forum2025ワークショップ/Let’s Try Model-Driven Design
haru860
0
220
全員アーキテクトで挑む、 巨大で高密度なドメインの紐解き方
agatan
8
17k
「文字列→日付」の落とし穴 〜Ruby Date.parseの意外な挙動〜
sg4k0
0
350
DSPy Meetup Tokyo #1 - はじめてのDSPy
masahiro_nishimi
1
130
Google Antigravity and Vibe Coding: Agentic Development Guide
mickey_kubo
2
120
宅宅自以為的浪漫:跟 AI 一起為自己辦的研討會寫一個售票系統
eddie
0
440
Evolving NEWT’s TypeScript Backend for the AI-Driven Era
xpromx
0
250
配送計画の均等化機能を提供する取り組みについて(⽩⾦鉱業 Meetup Vol.21@六本⽊(数理最適化編))
izu_nori
0
120
Microservices rules: What good looks like
cer
PRO
0
360
AI時代もSEOを頑張っている話
shirahama_x
0
210
エディターってAIで操作できるんだぜ
kis9a
0
570
競馬で学ぶ機械学習の基本と実践 / Machine Learning with Horse Racing
shoheimitani
14
14k
Featured
See All Featured
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
9.8k
Testing 201, or: Great Expectations
jmmastey
46
7.8k
Making the Leap to Tech Lead
cromwellryan
135
9.6k
Java REST API Framework Comparison - PWX 2021
mraible
34
9k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.1k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
36
6.2k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
9
1k
Large-scale JavaScript Application Architecture
addyosmani
514
110k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
46
7.8k
How to Think Like a Performance Engineer
csswizardry
28
2.3k
Rails Girls Zürich Keynote
gr2m
95
14k
Documentation Writing (for coders)
carmenintech
76
5.2k
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. ご清聴ありがとうございました!