Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥

サービスカタログに基づくTerraform/K8sコードの自動生成

Avatar for endo endo
November 25, 2025
170

 サービスカタログに基づくTerraform/K8sコードの自動生成

2025年アーキテクチャカンファレンスにて発表した資料になります

Avatar for endo

endo

November 25, 2025
Tweet

Transcript

  1. 自己紹介 写真をここに配置 遠藤 雅彰 株式会社enechain Platform Engineering Desk プリンシパルエンジニア 略歴 2022年

    - 現在 株式会社enechain 2020年 - freee株式会社 2 2016年 - 株式会社メルカリ 2012年 - グリー株式会社 2008年 - Speee株式会社 2004年 - ガイオテクノロジー株式会社
  2. 実装フェーズと移行計画 フェーズ1(Instant Universe V1) 新規プロダクトでテンプレートを使用する 標準化の策定を行い プロジェクト個別の設定を制限す る generatorでプロジェクト全体のボイラープレートを生成す る

    フェーズ2(Instant Universe V2) 既存プロダクトのサービスカタログへの移行 開発者がTemplateを選んで生成できるようにする CIを整備してGit Opsで運用できるようにする 実行計画フロー フェーズ 1 テンプレート導入・標準化の実施 実施計画 STEP 1 新規プロダクトに導入 フェーズ 2 カタログモデル・自動化の実装 実施計画 STEP 2 既存プロダクトの移行を実施 12
  3. Instant Universe V1 V1 2024/05 リリース 標準化の定義 予測可能な設定と一貫性のある構成を実現 簡易的なシェルスクリプトでのテンプレート生成 開発効率と一貫性の向上を実現

    新規作成時は最新のテンプレートから生成 常に最新の標準に準拠した環境構築を保証 詳しくは弊社のブログで紹介しているので気になる方はQRコードの記事参照 13
  4. Datadog vs Backstage Datadog 運用監視に特化したサービスカタログ 既存サービスの「監視・運用・パフォーマンス 管理」が主目的 リアルタイム性、自動検出、統合監視が強み 開発者ポータル機能(テンプレート、ドキュメ ント、ワークフロー)は提供しない

    Backstage 開発者ポータルとしてのサービスカタログ 「サービス管理+開発者エクスペリエンス向 上」が主目的 プロジェクト生成、ドキュメント、ツール統 合、カスタマイズが強み リアルタイム監視機能は外部ツール連携に 依存 16
  5. 内製ツールとDatadogの併用の方向に決定 Datadogの利点 サービスカタログやプロダクト担当者は Datadogでも管理 できる Datadogは実際のAPIリクエストからサービスマップを表 示してくれる DatadogにてPagerDurty相当のアラート対応が可能 Datadogに足りない機能へのアプローチ 足りないところ(Scaffolderなど)は内製ツールに持たせ

    る Datadogのサービスカタログへの登録は内製ツールで 行う 内製ツールと Datadogの併用 内製ツール Scaffolder テンプレート ★ 自動化機能 テンプレートからカタログ登録 Datadog サービスマップ カタログ管理 ★ アラート機能 GitOpsとDatadogの連携による運用 18
  6. 内製ツールpedcliの概要 コマンド pedcli 統一コマンドラインインターフェース サブコマンド呼び出し サブコマンド init プロジェクト初期化 入力: 設定

    出力: 初期データ テンプレート依存関係の設定 カタログファイルの初期構成生成 edit パラメータ編集&バリデーション 入力: YAML/JSON 出力: 検証済設定 YAML編集 設定バリデーション generate 自動コード生成と最適化 入力: Template, Parameter 出力: ソースコード/PR テンプレート変換 PR自動生成 docs ドキュメント自動生成 入力: Parameter 出力: マークダウン/HTML API文書生成 依存関係図表自動作成 22
  7. pedcliの運用フロー ローカル開発フェーズ CI/CD自動化フェーズ 1 initコマンド 新規プロジェクト作成 2 editコマンド パラメータをカスタマ イズ

    3 docsコマンド ドキュメント生成・プ レビュー 4 GitHubにpush 変更をリポジトリに反映 5 CI自動実行 generateコマンドで PR作成 6 PRレビュー& マージ メインブランチへ反映 ローカル開発ではカタログファイルのYAMLの操作がメイン作業 実際にTemplateから生成するのはGitHub Actionsを使って行う 23
  8. プロダクトカタログからの生成物 生成される成果物は、プレフィックスによって運用方法を明確に区別する 自動生成ファイル gen_プレフィックスが付いているものは 自動生成 される 例: gen_deployment.yamlファイル, gen_service.yamlファイル gen_がついているファイルは

    すべて再生成 の対象になるため、ユーザー側で更新しない運用にする 手動運用ファイル プレフィックスなしのファイルは標準テンプレートでサポートできない部分に対して 手作業で運用 例: deployment.tamlファイル, service.yamlファイル プレフィックスなしのファイルは 自動生成の対象外 であり、ユーザーの運用に任せる 26
  9. ドキュメントの生成 enechain / services-dependencies.md Enechain Services Services Dependencies This document

    outlines the dependencies between various Enechain services: • eSquare: Depends on eAuth for authentication • eCloud: Depends on eAuth for authentication • eBilling: Depends on eAuth for authentication • eAuth: Core authentication service Dependency Graph 設定したプロダクトカタログからはメタデータや依存関係のグラフを自動生成 生成物はGitHub上で下記のように見ることができる 29
  10. 既存プロダクトの移行手順 1. 移行用スクリプト or AIで移行を行う 移行スクリプト 標準構成に準拠していてシンプルなもの (Terraformなど) AIで移行 プロダクト固有の設定があり複雑度が高いもの

    (Kubernetes manifestsなど) 2. スクリプトで移行の場合 スクリプト実行後、手順4に進む 3. AIでの移行の場合 AIでの移行は専用のpromptを提供する 標準化で対応できないケースもサポートする 4. CI上とArgoCDやTerraformで差分確認後に適用 CI上とArgoCD/Terraformで差分が問題ないことを確認したら適用する 31
  11. AIによるmanifest移行の流れ 1 Phase 1: catalog 入力 既存マニフェスト(v1) 出力 プロダクトカタログ 2

    Phase 2: generate 入力 プロダクトカタログ 出力 v2マニフェスト ※移行作業時はCI/CDで生成 3 Phase 3: diff 入力 v1マニフェスト & v2マニフェスト 出力 差分レポート 4 Phase 4: overlay 入力 差分レポート 出力 kustomize patches 5 Phase 5: verify 入力 v1マニフェスト & v2マニフェスト+patches 出力 kustomize build結果 判定: 差分の検証 差分がない結果 (想定される差分だけ )になればPRを作成 enechainではmanifest管理に Kustomizeを使っているので 固有の設定はパッチを作成 33
  12. AIによる自動生成の結果 実行結果として想定通り下記のようなmanifestが出力され、移行を完了できた kustomization.yamlは予約名なのでprefixを付与していない運用にした products application backend overlays dev configs gen_backend.env

    gen_deployment-patch.yaml gen_hpa.yaml gen_label-transformer.yaml gen_service-patch.yaml kustomization.yaml google workload_identity overlays dev gen_workload-identities.yaml kustomization.yaml 40
  13. 振り返ってみて 1ヶ月目 基盤構築フェーズ CLIの開発 CI/CDの整備 2ヶ月目 環境整備フェーズ テンプレート作成 3ヶ月目 移行フェーズ

    テンプレートの完成 移行手順整備 約三ヶ月で Instant Universe V2を開発から移行まで完了できたのは良かった Templateの作成と移行の準備に時間はかかったが初期コスト分は回収できそう 移行作業 44 Kubernetes manifestの移行が一番大変で Terraformは移行しやすい