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
mi.kobaaaa
December 15, 2023
Programming
1.6k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
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.8k
Other Decks in Programming
See All in Programming
改善しないと、タスクが回らない。 “てんこ盛りポジション” を引き継いだ情シスの、入社3ヶ月の業務改善録
krm963
0
120
数百円から始めるRuby電子工作
tarosay
0
100
act1-costs.pdf
sumedhbala
0
240
なぜ関数型プログラミングで「型」と「証明」が語られるのか #fp_matsuri
kajitack
3
1k
はてなアカウント基盤 State of the Union
cockscomb
1
1.3k
えっ!!コードを読まずに開発を!?
hananouchi
0
230
霧の中の代数的エフェクト
funnyycat
1
420
GitHubCopilotCLIのスラッシュコマンドを自作してみる
htkym
0
100
AI時代の仕事技芸論〜ソフトウェア開発で「遊ぶように働く」職人的熟達のすすめ(スクフェス仙台 2026バージョン)
kuranuki
0
710
PHPだって関数型したい 〜できること、できないこと〜 / fp-in-php
jsoizo
1
240
『コードを書く以外の』エンジニアリング〜課金基盤移行プロジェクト推進のためのTips4選
yuriko1211
0
540
AWS CDK を「作」ってみた 〜フルスクラッチで見えた CDK の裏側〜 / aws-cdk-from-scratch
gotok365
3
500
Featured
See All Featured
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.8k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
2.5k
How GitHub (no longer) Works
holman
316
150k
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
0
450
Building the Perfect Custom Keyboard
takai
2
820
[RailsConf 2023] Rails as a piece of cake
palkan
59
6.8k
Crafting Experiences
bethany
1
230
Reality Check: Gamification 10 Years Later
codingconduct
0
2.2k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.8k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
55k
Primal Persuasion: How to Engage the Brain for Learning That Lasts
tmiket
0
390
What’s in a name? Adding method to the madness
productmarketing
PRO
24
4.1k
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. ご清聴ありがとうございました!