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. ご清聴ありがとうございました!