WEAR のワークフロー実行基盤コストを何とかしたい
by
mi.kobaaaa
×
Copy
Open
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Slide 1
Slide 1 text
WEAR のワークフロー実行基盤コストを何とかしたい 株式会社ZOZO ブランドソリューション開発本部 WEARバックエンド部 SREブロック 小林 未来 Copyright © ZOZO, Inc. ZOZO Kubernetes Night
Slide 2
Slide 2 text
© ZOZO, Inc. 本日お話しすること 自己紹介
Slide 3
Slide 3 text
© ZOZO, Inc. 株式会社ZOZO ブランドソリューション開発本部 WEARバックエンド部 SREブロック 小林 未来 ● @mirai_kobaaaaaa ● ゆるふわ系SRE ● 最近シェル芸にハマる
Slide 4
Slide 4 text
© ZOZO, Inc. 本日お話しすること 本日お話しすること
Slide 5
Slide 5 text
© ZOZO, Inc. 本日お話しすること ● WEAR ワークフロー実行基盤のリプレイスについて ○ 課題解決へのアプローチ ○ ワークフロー実行基盤の課題 ○ WEAR のワークフロー ○ リプレイス後の効果 本日お話ししないこと ● EKS (Amazon Elastic Kubernetes Service) の細かな仕様 ● Kubernetes の概要、詳細 ● Digdag についての概要、詳細
Slide 6
Slide 6 text
© ZOZO, Inc. WEAR のワークフロー
Slide 7
Slide 7 text
© ZOZO, Inc. WEAR のワークフロー ワークフローで処理している主な内容 ● 各種ユーザー情報の登録、更新 ● ユーザーコーディネート情報の更新 ● 各種アイテム情報の連携、状態の更新 ● ランキング関連情報の更新 ● ショップ様情報の更新
Slide 8
Slide 8 text
© ZOZO, Inc. WEAR のワークフロー WEAR ワークフロー実行基盤の主要コンポーネント ワークフロー自体を実行する EKS Cluster ワークフローエンジン ワークフローエンジン用のデータベース
Slide 9
Slide 9 text
© ZOZO, Inc. WEAR のワークフロー
Slide 10
Slide 10 text
© ZOZO, Inc. WEAR のワークフロー
Slide 11
Slide 11 text
© ZOZO, Inc. WEAR のワークフロー
Slide 12
Slide 12 text
© ZOZO, Inc. WEAR のワークフロー
Slide 13
Slide 13 text
© ZOZO, Inc. WEAR のワークフロー 今回お話しする範囲
Slide 14
Slide 14 text
© ZOZO, Inc. ワークフロー実行基盤の課題
Slide 15
Slide 15 text
© ZOZO, Inc. ワークフロー実行基盤の課題 サービス拡大と共にワークフロー数が飛躍的に増加
Slide 16
Slide 16 text
© ZOZO, Inc. ワークフロー実行基盤の課題 サービス拡大と共にワークフロー数が飛躍的に増加 Job の増加と比例し Fargate Node が大量に起動
Slide 17
Slide 17 text
© ZOZO, Inc. ワークフロー実行基盤の課題 サービス拡大と共にワークフロー数が飛躍的に増加 Job の増加と比例し Fargate Node が大量に起動 コスト効率性が課題に
Slide 18
Slide 18 text
© ZOZO, Inc. 課題解決へのアプローチ
Slide 19
Slide 19 text
© ZOZO, Inc. 課題解決へのアプローチ ● 実測値に基づくリソース設定の見直し ● ワークフロー実行基盤に適した基盤構成への変更
Slide 20
Slide 20 text
© ZOZO, Inc. 課題解決へのアプローチ 実測値に基づくリソース設定の見直し
Slide 21
Slide 21 text
© ZOZO, Inc. 課題解決へのアプローチ 実測値に基づくリソース設定の見直し ● Datadog Metrics から直近数ヶ月の推移を確認
Slide 22
Slide 22 text
© ZOZO, Inc. 課題解決へのアプローチ 実測値に基づくリソース設定の見直し ● 計測したデータを元に必要リソースを再計算 ● 全ての Kubernetes Manifest に反映し設定を更新
Slide 23
Slide 23 text
© ZOZO, Inc. 課題解決へのアプローチ ワークフロー実行基盤に適した基盤構成への変更
Slide 24
Slide 24 text
© ZOZO, Inc. 課題解決へのアプローチ ワークフロー実行基盤に適した基盤構成への変更 EKS
Slide 25
Slide 25 text
© ZOZO, Inc. 課題解決へのアプローチ ワークフロー実行基盤に適した基盤構成への変更 ➕ EKS Fargate
Slide 26
Slide 26 text
© ZOZO, Inc. 課題解決へのアプローチ ワークフロー実行基盤に適した基盤構成への変更 ➕ 今の WEAR では本当に最適なのか? EKS Fargate
Slide 27
Slide 27 text
© ZOZO, Inc. 課題解決へのアプローチ ワークフロー実行基盤に適した基盤構成への変更 ● ワークフロー実行の流れを再考
Slide 28
Slide 28 text
© ZOZO, Inc. 課題解決へのアプローチ ワークフロー実行基盤に適した基盤構成への変更 ● ワークフロー実行の流れを再考 複数の workflow 実行中
Slide 29
Slide 29 text
© ZOZO, Inc. 課題解決へのアプローチ ワークフロー実行基盤に適した基盤構成への変更 ● ワークフロー実行の流れを再考 workflow2,4 が完了
Slide 30
Slide 30 text
© ZOZO, Inc. 課題解決へのアプローチ ワークフロー実行基盤に適した基盤構成への変更 ● ワークフロー実行の流れを再考 workflow5 が完了 workflow6 が開始
Slide 31
Slide 31 text
© ZOZO, Inc. 課題解決へのアプローチ ワークフロー実行基盤に適した基盤構成への変更 ● ワークフロー毎に起動する Pod タイミングはばらばら ○ 実は同時実行 Pod 数は多くない ● Node が Job 毎に作成されている ○ Fargate で Node = Pod 数で作成される ○ Fargate は 1Node(Pod) 毎に課金が発生する EC2 に複数 Pod をまとめればコストを最適化できるのでは?
Slide 32
Slide 32 text
© ZOZO, Inc. 課題解決へのアプローチ ワークフロー実行基盤に適した基盤構成への変更 ● EKS on EC2 への変更懸念点 ○ 運用負荷が上がるのでは? ○ Job Node のオートスケールはどうする?
Slide 33
Slide 33 text
© ZOZO, Inc. 課題解決へのアプローチ ワークフロー実行基盤に適した基盤構成への変更 ● 運用負荷抑制へのアプローチ
Slide 34
Slide 34 text
© ZOZO, Inc. 課題解決へのアプローチ ワークフロー実行基盤に適した基盤構成への変更 ● 運用負荷抑制へのアプローチ ○ EC2 Node はどのようにプロビジョニングする? ○ EC2 起動テンプレートの管理はどうする? ○ EKS バージョンアップ時の挙動制御は?
Slide 35
Slide 35 text
© ZOZO, Inc. 課題解決へのアプローチ ワークフロー実行基盤に適した基盤構成への変更 ● 運用負荷抑制へのアプローチ ○ EC2 Node はどのようにプロビジョニングする? ○ EC2 起動テンプレートの管理はどうする? ○ EKS バージョンアップ時の挙動制御は? ■ Fargate はスケール時に自動でプロビジョニング
Slide 36
Slide 36 text
© ZOZO, Inc. 課題解決へのアプローチ ワークフロー実行基盤に適した基盤構成への変更 ● 運用負荷抑制へのアプローチ ○ EC2 Node はどのようにプロビジョニングする? ○ EC2 起動テンプレートの管理はどうする? ○ EKS バージョンアップ時の挙動制御は? ■ Fargate はスケール時に自動でプロビジョニング ■ 自前でゴールデンイメージを作るのは大変
Slide 37
Slide 37 text
© ZOZO, Inc. 課題解決へのアプローチ ワークフロー実行基盤に適した基盤構成への変更 ● 運用負荷抑制へのアプローチ ○ EC2 Node はどのようにプロビジョニングする? ○ EC2 起動テンプレートの管理はどうする? ○ EKS バージョンアップ時の挙動制御は? ■ Fargate はスケール時に自動でプロビジョニング ■ 自前でゴールデンイメージを作るのは大変 ■ Fargate は次起動時に新バージョン準拠になる
Slide 38
Slide 38 text
© ZOZO, Inc. 課題解決へのアプローチ ワークフロー実行基盤に適した基盤構成への変更 ● 運用負荷抑制へのアプローチ ○ Managed Node Group を採用
Slide 39
Slide 39 text
© ZOZO, Inc. 課題解決へのアプローチ ワークフロー実行基盤に適した基盤構成への変更 ● 運用負荷抑制へのアプローチ ○ Managed Node Group を採用 起動テンプレートを AWS 側で自動的に用意
Slide 40
Slide 40 text
© ZOZO, Inc. 課題解決へのアプローチ ワークフロー実行基盤に適した基盤構成への変更 ● 運用負荷抑制へのアプローチ ○ Managed Node Group を採用 EKS バージョンアップ時に自 動で B/G アップデート
Slide 41
Slide 41 text
© ZOZO, Inc. 課題解決へのアプローチ ワークフロー実行基盤に適した基盤構成への変更 ● Job Node のオートスケール
Slide 42
Slide 42 text
© ZOZO, Inc. 課題解決へのアプローチ ワークフロー実行基盤に適した基盤構成への変更 ● Job Node のオートスケール ○ Job Node のスケールイン / アウトはどうする? ○ Node レベルのスケールアウトに時間がかかるのでは?
Slide 43
Slide 43 text
© ZOZO, Inc. 課題解決へのアプローチ ワークフロー実行基盤に適した基盤構成への変更 ● Job Node のオートスケール ○ Job Node のスケールイン / アウトはどうする? ○ Node レベルのスケールアウトに時間がかかるのでは? ■ Fargate は Pod スケール時に自動でプロビジョニング
Slide 44
Slide 44 text
© ZOZO, Inc. 課題解決へのアプローチ ワークフロー実行基盤に適した基盤構成への変更 ● Job Node のオートスケール ○ Job Node のスケールイン / アウトはどうする? ○ Node レベルのスケールアウトに時間がかかるのでは? ■ Fargate は Pod スケール時に自動でプロビジョニング ■ Fargate と EC2 で時間の違いが発生する?
Slide 45
Slide 45 text
© ZOZO, Inc. 課題解決へのアプローチ ワークフロー実行基盤に適した基盤構成への変更 ● Job Node のオートスケール ○ Karpenter を採用 https://karpenter.sh/より引用
Slide 46
Slide 46 text
© ZOZO, Inc. 課題解決へのアプローチ ワークフロー実行基盤に適した基盤構成への変更 ● Job Node のオートスケール ○ Karpenter を採用 https://karpenter.sh/より引用 空き容量を計算して Node に Pod を配置
Slide 47
Slide 47 text
© ZOZO, Inc. 課題解決へのアプローチ ワークフロー実行基盤に適した基盤構成への変更 ● Job Node のオートスケール ○ Karpenter を採用 https://karpenter.sh/より引用 Node に空きがない時は 必要な Node を追加起動
Slide 48
Slide 48 text
© ZOZO, Inc. 課題解決へのアプローチ ワークフロー実行基盤に適した基盤構成への変更 ● Job Node のオートスケール ○ Karpenter を採用 https://karpenter.sh/より引用 Fargate とほぼ同等の Node スケール速度
Slide 49
Slide 49 text
© ZOZO, Inc. 課題解決へのアプローチ ワークフロー実行基盤に適した基盤構成への変更 ● 最終的な EKS on EC2 構成
Slide 50
Slide 50 text
© ZOZO, Inc. 課題解決へのアプローチ ワークフロー実行基盤に適した基盤構成への変更 ● 最終的な EKS on EC2 構成
Slide 51
Slide 51 text
© ZOZO, Inc. 課題解決へのアプローチ ワークフロー実行基盤に適した基盤構成への変更 ● 最終的な EKS on EC2 構成 役割ごとに Node Group を作成
Slide 52
Slide 52 text
© ZOZO, Inc. 課題解決へのアプローチ ワークフロー実行基盤に適した基盤構成への変更 ● 最終的な EKS on EC2 構成
Slide 53
Slide 53 text
© ZOZO, Inc. 課題解決へのアプローチ ワークフロー実行基盤に適した基盤構成への変更 ● 最終的な EKS on EC2 構成 空き Node に Job を配置
Slide 54
Slide 54 text
© ZOZO, Inc. 課題解決へのアプローチ ワークフロー実行基盤に適した基盤構成への変更 ● 最終的な EKS on EC2 構成
Slide 55
Slide 55 text
© ZOZO, Inc. 課題解決へのアプローチ ワークフロー実行基盤に適した基盤構成への変更 ● 最終的な EKS on EC2 構成 Node 容量が足りない場合 新規 Node を追加
Slide 56
Slide 56 text
© ZOZO, Inc. 課題解決へのアプローチ ワークフロー実行基盤に適した基盤構成への変更 ● 最終的な EKS on EC2 構成
Slide 57
Slide 57 text
© ZOZO, Inc. 課題解決へのアプローチ ワークフロー実行基盤に適した基盤構成への変更 ● 最終的な EKS on EC2 構成 DaemonSet 以外の Pod が無い時は終了
Slide 58
Slide 58 text
© ZOZO, Inc. リプレイス後の効果
Slide 59
Slide 59 text
© ZOZO, Inc. リプレイス後の効果 リプレイス前とリプレイス後のコスト比較 30%程のコスト削減に成功
Slide 60
Slide 60 text
© ZOZO, Inc. リプレイス後の効果 パフォーマンスの変化 ● ワークフロー実行自体が平均 20% 高速化 ○ 連続して実行される Job の起動が速くなっていた ○ EC2 変更によるイメージキャッシュ影響が大きい
Slide 61
Slide 61 text
© ZOZO, Inc. まとめ
Slide 62
Slide 62 text
© ZOZO, Inc. まとめ ● コスト効率性はとても大事 ● リソースを最適化し続けるのも大事 ● 「今」のサービスにとって最適か?を考え続けるのも大事
Slide 63
Slide 63 text
© ZOZO, Inc. まとめ 本日お話しした内容を Tech Blog でも公開しています。 詳しい設定や Terraform コードなども記載していますので是非ご一読ください! ワークフロー実行基盤をFargateからEC2へ変更したらコストもパフォーマンスも改善できて幸せになった話
Slide 64
Slide 64 text
© ZOZO, Inc. We are hiring!
Slide 65
Slide 65 text
© ZOZO, Inc. ご清聴ありがとうございました!