ケーススタディ: IDP をゼロから構築する
このシリーズの最後の記事では、あるコンポーネントの完全な実装について説明します。 社内開発者プラットフォーム 30 人のエンジニアからなるテクノロジー系スタートアップの場合、 典型的な成長問題に対処する: 一貫性のない導入、遅いオンボーディング、 ツールの無秩序な蔓延、標準化の欠如、生産における頻繁な事故。
プロジェクトは次のように構成されています 4段階 4 か月間にわたって、 3 人からなるチーム (シニア プラットフォーム エンジニア 1 人、SRE 1 人、DevOps エンジニア 1 人)。選択肢を見てみましょう アーキテクチャ上の特徴、選択したツール、遭遇した問題、そして何よりも 結果 測定可能な 得られた。
何を学ぶか
- スタートアップ企業での IDP の実装を計画する方法
- フェーズ 1: Kubernetes、Terraform、および基本的な CI/CD
- フェーズ 2: バックステージ、サービス カタログ、ゴールデン パス
- フェーズ 3: 可観測性 DORA、セキュリティおよびフィードバックの収集
- フェーズ 4: 最適化、AI 支援運用、スケーリング
- 前後のメトリクスと ROI 計算
背景: スタートアップとその課題
テックフロー (架空の名前) と 30 人の分散エンジニアを擁する B2B SaaS スタートアップ 5チームのうち。同社は、エンタープライズ企業向けにワークフロー自動化プラットフォームを提供しています。 2 年間の急速な成長の後、技術的およびインフラストラクチャの負債により開発が遅れています。
- 6 つの異なる CI/CD ツール さまざまなチームで使用されています (Jenkins、GitHub Actions、CircleCI、bash スクリプト)
- 手動展開: 3 人が本番環境へのデプロイ方法を知っているため、ボトルネックが発生します
- 3週間のオンボーディング: 新しい開発者が生産性を発揮できるようになるまでに平均 15 営業日かかります
- 月に4件の事故 ステージングと実稼働の間の構成の不一致が原因で発生
- 標準化がない: 各サービスには独自の構造、規約、ドキュメント (存在する場合) があります。
# Situazione iniziale: metriche baseline
baseline-metrics:
dora:
deployment-frequency: "1-2 per settimana"
lead-time: "5-7 giorni"
mttr: "4-6 ore"
change-failure-rate: "28%"
developer-experience:
onboarding-time: "15 giorni lavorativi"
nps-score: 3.2 / 10
tools-used-daily: 11
time-on-non-code: "45%"
operational:
incidents-per-month: 4
manual-deployments: "70%"
services-without-owner: "35%"
services-without-docs: "60%"
team:
total-engineers: 30
platform-team: 0 (part-time DevOps by senior engineers)
teams: 5
services: 22
フェーズ 1 (月 1 ~ 2): 基礎
最初のフェーズでは、プラットフォームの基盤であるクラスターの構築に焦点を当てます。 正しく構成された Kubernetes、Terraform およびパイプラインを使用したコードとしてのインフラストラクチャ 標準化されたCI/CD。
フェーズ 1 の成果物:
- Kubernetes クラスター (EKS): 名前空間の分離、RBAC、および各チームのリソース クォータを備えた運用クラスターとステージング クラスター
- Terraform モジュール: 名前空間、データベース (RDS)、キャッシュ (ElastiCache)、およびネットワーキング用の再利用可能なモジュール
- 標準化された GitHub アクション: ビルド、テスト、セキュリティ スキャン、展開用のワークフロー テンプレート
- アルゴCD: Git からの自動同期を備えた GitOps ベースのデプロイメント
- 基本的なモニタリング: 基本的なサービス メトリクスのダッシュボードを備えた Prometheus + Grafana
# Fase 1: tool stack selezionato
phase-1-stack:
compute:
provider: AWS
service: EKS (Kubernetes 1.29)
nodes: 6 (3 prod, 2 staging, 1 platform)
instance-type: m6i.xlarge
iac:
tool: Terraform 1.7
state: S3 + DynamoDB locking
modules:
- eks-cluster
- namespace-with-rbac
- rds-postgresql
- elasticache-redis
- github-actions-runner
ci-cd:
build: GitHub Actions
deploy: ArgoCD
registry: ECR (Elastic Container Registry)
workflow-template:
stages:
- lint
- unit-test
- build-image
- security-scan (Trivy)
- push-to-ecr
- update-argocd-manifest
monitoring:
metrics: Prometheus (kube-prometheus-stack)
dashboards: Grafana
alerting: Alertmanager -> Slack
logging: Loki (basic)
security:
secrets: AWS Secrets Manager (fase 1)
network: Calico network policies
rbac: Kubernetes RBAC per namespace
timeline:
start: "Week 1"
end: "Week 8"
milestones:
- week-2: "EKS cluster operativo"
- week-4: "Terraform modules validati"
- week-6: "CI/CD template funzionante per 3 servizi pilota"
- week-8: "Tutti i servizi migrati a Kubernetes"
フェーズ 2 (月 2 ~ 3): 開発者ポータルとゴールデン パス
基礎が整ったら、第 2 フェーズでは次のことに重点を置きます。 開発者の経験: 開発者ポータルとしてのバックステージ、主要なサービス タイプとサービス カタログのゴールデン パス サービスの所有権を追跡するため。
フェーズ 2 の成果物:
- バックステージ: ソフトウェア カタログ、TechDocs、および 2 つのソフトウェア テンプレートを使用したインストール
- サービスカタログ: 所有権、依存関係、および SLA を含む 22 の登録済みサービスすべて
- 黄金の道: REST API (NestJS)、Web アプリ (React)、ワーカー (Node.js) のテンプレート
- 技術資料: ポータルに移行されたすべてのサービスの標準化されたドキュメント
- セルフサービス: 開発者はポータルから 15 分で新しいサービスを作成できます
フェーズ 2 の迅速な勝利
転機は、最初の開発者が新しいマイクロサービスを作成したときでした 完了 (CI/CD、モニタリング、ドキュメント) 12分以内に バックステージ経由 テンプレート。チームの反応は「なぜ今までこれをやらなかったのか?」これにより生成された 自然発生的な採用の波。
フェーズ 3 (月 3 ~ 4): 可観測性とセキュリティ
第 3 フェーズでは、高度な可観測性、セキュリティ強化、および 最初のフィードバック収集サイクル:
- DORA ダッシュボード: 4 つの DORA メトリクスが自動的に計算された Grafana ダッシュボード
- 分散トレーシング: クロスサービス トレースのために OpenTelemetry と統合されたテンポ
- 安全: AWS Secrets Manager から Vault への移行、Kyverno ポリシーの適用、ネットワーク ポリシーの完了
- 開発者アンケート: 構造化されたフィードバック収集を伴う初の NPS 調査
- アラートの改善: 誤検知を削減する SLO ベースのアラート
# Fase 3: DORA dashboard Grafana
grafana-dashboard:
title: "Platform DORA Metrics"
panels:
- name: "Deployment Frequency"
type: time-series
query: |
sum(increase(
argocd_app_sync_total{
project="production"
}[24h]
))
target: "> 1 deploy/day per service"
- name: "Lead Time for Changes"
type: gauge
query: |
avg(
github_pr_merge_time_hours{
base_branch="main"
}
) + avg(
argocd_sync_duration_seconds / 3600
)
target: "< 4 hours"
thresholds:
- value: 4
color: green
- value: 24
color: yellow
- value: 168
color: red
- name: "Change Failure Rate"
type: stat
query: |
sum(argocd_app_sync_total{status="failed"}[30d])
/
sum(argocd_app_sync_total[30d])
* 100
target: "< 15%"
- name: "MTTR"
type: gauge
query: |
avg(
pagerduty_incident_resolution_time_minutes
)
target: "< 60 minutes"
結果: 前と後
導入から 4 か月後、顕著で測定可能な結果が得られました。
- 導入頻度: 1~2/週から 3~5/日 (10倍の改善)
- リードタイム: 5-7日から 4~6時間 (20 倍の改善)
- MTTR: 4~6時間 45分 (6 倍の改善)
- 故障率の変更: 28%から 8% (71%削減)
- オンボーディング: 15日から 3日間 (80%削減)
- NPS スコア: 3.2から 7.8 10点中
- 事故: 4/月から 1/月 (75%削減)
# Risultati after 4 months: metriche finali
final-metrics:
dora:
deployment-frequency: "3-5 per giorno (per team)"
lead-time: "4-6 ore"
mttr: "45 minuti"
change-failure-rate: "8%"
classification: "High performer (near Elite)"
developer-experience:
onboarding-time: "3 giorni lavorativi"
nps-score: 7.8 / 10
tools-used-daily: 4 (Backstage, IDE, Git, Slack)
time-on-non-code: "15%"
operational:
incidents-per-month: 1
manual-deployments: "0% (tutto GitOps)"
services-without-owner: "0%"
services-without-docs: "5%"
roi-calculation:
investment:
platform-team-salaries: "3 FTE * 4 mesi"
tooling-costs: "$2,400/mese (Backstage hosting, monitoring)"
total-investment: "~$180,000"
savings:
developer-productivity: "+35% (30 eng * $120k avg * 35% = $1.26M/anno)"
reduced-incidents: "-75% incidents * $15k/incident = $45k/anno"
faster-onboarding: "5 new hires/anno * 12 giorni risparmiati = $36k/anno"
total-annual-savings: "~$1.34M/anno"
roi: "645% nel primo anno"
payback-period: "~2 mesi"
学んだ教訓
すべての実装には課題があります。プロジェクト中に学んだ最も重要な教訓は次のとおりです。
- 小さく始めて、すぐに価値を実証する: 完璧なプラットフォームを構築しようとしないでください。初めて動作するゴールデン パスは、どのプレゼンテーションよりも大きな興奮を引き起こしました
- 早期採用者を巻き込む: ドライバーとして熱心なチームを 2 ~ 3 つ特定します。彼らの成功は懐疑論者を納得させるだろう
- フィードバックは金です: プラットフォーム チームは毎週フィードバックを収集しました。最良の決定は、プラットフォーム チームの意見ではなく、開発者のデータに基づいて決定されました
- ドキュメントは製品の一部です: ドキュメントのないテンプレートと誰も使用しないテンプレート
- 養子縁組を強制しないでください: チームが自発的に選択できるように、プラットフォームを非常に便利なものにします。強制は抵抗を生む
繰り返してはならない間違い
実装中に発生したエラーの透明性:
- 初期段階が複雑すぎる: 私たちは 1 か月目に Istio サービス メッシュを使い始めました。早すぎました。私たちはそれを削除し、チームの準備が整った 5 か月目に再導入しました。
- 移住を過小評価する:22 の既存サービスの Kubernetes への移行には、予想より時間がかかりました。より段階的なアプローチが必要でした
- Backstage プラグインが多すぎる: 起動時には 12 個のプラグインがインストールされていました。開発者たちは困惑していました。 4 つの必須プラグインに戻ります
- ネットワークを無視する: ネットワーク ポリシーの実装が遅れたため、診断が困難な接続問題が発生しました
最も重要な教訓
IDP は終了日のあるプロジェクトではありません。 常に進化する製品。 最初の 4 か月が経過しても、作業は完了したわけではありません。作業は始まったばかりです。プラットフォームチームは継続します フィードバックを収集し、改善の優先順位を付けて反復します。あなたが構築するプラットフォーム 今日の状況は 6 か月後の状況とは異なるでしょう。これはポジティブなことです。
今後のロードマップ
基本的なプラットフォームが稼働すると、今後 6 か月間の計画には次のものが含まれます。
- 5~6ヶ月目: サービス メッシュ (Istio)、マルチ環境プレビュー、コスト ダッシュボードの概要
- 7~8ヶ月目: 異常検出、高度な自動スケーリング、レベル 2 の自己修復のための AIOps
- 月9~10日: カスタム統合用のパブリック API プラットフォーム、内部プラグイン マーケットプレイス
- 11~12月: マルチリージョン展開、自動災害復旧、SOC2 準拠
この 12 記事シリーズでは、プラットフォーム エンジニアリングの基本的な側面をすべてカバーしています。 理論から実際の実装まで、アーキテクチャからセキュリティまで、メトリクスから AIの統合まで。プラットフォーム エンジニアリングは単なる技術トレンドではなく、方法そのものです ここでは、最新のソフトウェア組織が配信機能を構築し、拡張します。 今日から始めて、小さなことから始めて、結果を道標にしましょう。







