Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Compotable Platform Shift ~AWS全面移設におけるプラットフォームエ...

Avatar for Drumato Drumato
March 26, 2026
64

Compotable Platform Shift ~AWS全面移設におけるプラットフォームエンジニアリングの実践~

コンテナ基盤リアルトーク〜コンテナ運用のつらみ大集合〜 https://wealthnavi.connpass.com/event/383661/ で発表した資料です。

Avatar for Drumato

Drumato

March 26, 2026
Tweet

Transcript

  1. 2 ⾃⼰紹介 技術部 技術基盤グループ シニアエンジニア 2024年 中途⼊社 Drumato Yamato Sugawara

    ECサイト構築構築サービス「カラーミーショップ by GMOペパボ」をメインに、事業横断で信頼性向上・ プラットフォームエンジニアリングに従事。 サービスのあらゆる課題に対し、インフラとソフト ウェアエンジニアリングの専⾨性を発揮して貢献す ることをミッションに。
  2. 事例~バッチロール移設プロジェクト~ 12 • 様々なVM, コードベースで分散しているバッチロールを移設するプロジェクト • 7ロールの異なるコードベースで動くバッチが160本程度ある • ほとんどは素朴なphpスクリプトをCapistranoでデプロイ •

    ⼀部RubyのThor/Rakeベースのものがある • また、⼀部はRundeckで管理されてキックされる • プロジェクトリーダーかつプラットフォーム推進: 1名(発表者) • アプリケーション開発者: 4名
  3. 事例~バッチロール移設プロジェクト~ 14 • 結論: Argo Workflowsを採⽤ • Argo Workflows •

    argoproj主体で開発されているKubernetesネイティブなワークフローエンジン • OSSであり、シンプルさと拡張性を兼ね備えている • クラウドネイティブコミュニティでも多くの事例がある • 主な理由 • 実⾏主体がコンテナであり、ワークロードのコンテナ化⾃体の資産を他に流⽤しやすい • AWS EKSを中⼼に設計していたので、そこにも統合しやすい • Kubernetes Operatorに代表される拡張パターンに対する知⾒があった
  4. 事例~バッチロール移設プロジェクト~ 15 • それぞれのバッチタスク(cron)⼀つ⼀つが、 CronWorkflowリソースに対応 • 失敗による再実⾏は、Submit APIを実⾏する • CronWorkflowはIntegrationとProductionでさらに分かれている

    • 可観測性はArgo Workflows ControllerのBuilt-in Metrics+ Workflow Custom Metricsで担保 • prometheus-operatorのPrometheusRuleで監視ルール設定、PagerDutyにルーティング • kube-prometheus-stack同梱のGrafanaでモニタリングダッシュボードを⽤意
  5. トライアンドエラー 17 • 移設における第⼀の壁: 「タスクの多さ」 • 全体として160本のバッチタスクをすべて移設しきる必要があった • 多いものでは1ロール約60本ものタスクが存在 •

    それぞれのタスクの内部実装と懸念点を、Claude Codeなどを活⽤して⾼速に調査 • ⽣じた問題: 「マニフェスト管理の煩雑さ」 • cronベースのバッチロールではVM全体で共有化されていた設定や依存が、CronWorkflow マニフェスト間で重複して存在することになる • プロジェクトメンバーがバッチタスクを⼀つ⼀つ移設する中で、CronWorkflowを書いて レビューするのは現実的ではない
  6. トライアンドエラー 18 • 対策: CronWorkflowを複製するCLIの実装 • https://github.com/drumato/cron-workflow-replicator • 思想: ほとんどは同じでちょっとフィールドが違うマニフェストがたくさんほしい

    だけ • アーキテクチャ: base manifestにvalueをoverrideして実際のYAMLを⽣成する • なぜカスタムコントローラではなかったのか? • マニフェストを⼤量⽣成するCLI→いつでも引き剥がせる • base manifestとCLI設定を消して、コピペ運⽤にすぐできる • resource createを⾏うコントローラ→引き剥がすのにコスト
  7. トライアンドエラー 21 • 移設における第⼆の壁: 「移設スピードとコスト最適化のバランシング」 • 具体例の⼀つ: Karpenterのspot NodePoolを利⽤することによる失敗率の増加 •

    AWS EKS構築時に、移設コストを最⼩限に押さえるために、固定のRI Node Group + spot NodePoolを⽤意 • バッチタスクがRI NodeGroupに乗り切らず、Spot Instanceにスケジュール • 削除猶予の2分間に処理が終了しきらず、失敗率が増加 • 急ぎKarpenterのNodePoolにon-demandの設定を低いweightで追加 • バッチタスクのスケジューリングポリシーで requiredDuringSchedulingIgnoredDuringExecution を指定することで解消
  8. まとめ 23 • ⽅針1: Composableなソフトウェア・仕組みを実装・構築して課題を解決する • 単なるマニフェスト複製CLIであるcron-workflow-replicator • AWS NLBにプライベートクラウドのK8sノードをつなげる

    drumato/targetgroup-senpai • KubernetesクラスタがProduction ReadyになるまでをブートストラップするTazuna(近 ⽇公開) • 要件と責務が明確なソフトウェアや仕組みは、Coding Agentによる⾼速な開発でリ プレイスしやすい • ⼤きく複雑な仕組みを作るよりも、⼩さくシンプルなしくみを作ったほうが全体として速 を出せる