WEAR のワークフロー実行基盤コストを何とかしたい
by
mi.kobaaaa
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
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. ご清聴ありがとうございました!