ストーリー
5つの設計原則
組織全体のパイプラインを設計する際に守るべき5つの原則を定義します。
原則1: Pipeline as Code
パイプラインの定義をコードとしてバージョン管理します。
| 側面 | 説明 |
|---|---|
| 何を | パイプラインの全ステージ、環境変数、シークレット参照、トリガー条件 |
| なぜ | 変更履歴の追跡、レビューによる品質担保、再現性の確保 |
| どこに | アプリケーションリポジトリ内(.github/workflows/等) |
| 例外 | シークレットの値自体はコードに含めない |
# GitHub Actions: Pipeline as Code の例
name: Standard Pipeline
on:
push:
branches: [main, develop]
pull_request:
branches: [main]
jobs:
build:
uses: org/shared-workflows/.github/workflows/build.yml@v2
with:
language: "typescript"
node-version: "20"
test:
needs: build
uses: org/shared-workflows/.github/workflows/test.yml@v2
security:
needs: build
uses: org/shared-workflows/.github/workflows/security-scan.yml@v2
原則2: 不変性(Immutability)
一度ビルドされたアーティファクトは変更せず、同じアーティファクトを全環境にデプロイします。
| アンチパターン | 正しいアプローチ |
|---|---|
| 環境ごとにビルドし直す | 一度ビルドして全環境で同じアーティファクトを使用 |
| デプロイ時にコードを変更 | 環境差分は設定(環境変数)で吸収 |
| 手動でファイルを編集 | すべての変更はパイプラインを通す |
原則3: 高速フィードバック
パイプラインは可能な限り高速にフィードバックを返します。
理想的なフィードバック時間:
コミット → ビルド完了: < 5分
コミット → ユニットテスト完了: < 10分
コミット → セキュリティスキャン: < 10分
コミット → 統合テスト完了: < 20分
コミット → デプロイ可能: < 30分
高速化のテクニック:
- テストの並列実行
- 差分ビルド(変更されたモジュールのみ)
- レイヤーキャッシュ(Docker、依存パッケージ)
- テスト影響分析(変更に関連するテストのみ実行)
原則4: 自己文書化
パイプラインの構成と動作が、パイプライン自体から理解できるようにします。
| 実践 | 効果 |
|---|---|
| ステージに明確な名前をつける | 何が実行されているか一目でわかる |
| 失敗時のエラーメッセージを充実させる | 問題の特定と修正が速くなる |
| パイプラインの実行ログを構造化する | 後からの分析と改善が容易になる |
| READMEにパイプラインの説明を含める | 新メンバーのオンボーディングが速くなる |
原則5: 漸進的な展開(Progressive Delivery)
変更は段階的にリリースし、問題があれば即座にロールバックできるようにします。
漸進的な展開のステージ:
1. ビルド & テスト(全PR)
2. ステージング環境デプロイ
3. カナリアリリース(5%のトラフィック)
4. 段階的ロールアウト(25% → 50% → 100%)
5. 自動ロールバック(エラー率閾値超過時)
共通化と自律性の線引き
組織全体のパイプライン設計で最も難しい判断が、「共通化すべきもの」と「チームに委ねるもの」の線引きです。
| 共通化すべきもの | チームに委ねるもの |
|---|---|
| セキュリティスキャンのステージ | テストの種類と実行方法 |
| アーティファクトの署名と検証 | ビルドツールの選択 |
| デプロイの承認プロセス | デプロイのタイミング |
| ログとメトリクスの収集 | カスタムメトリクスの定義 |
| シークレット管理の方法 | 開発ワークフロー |
| コンプライアンスゲート | テストカバレッジの閾値 |
「チームの自律性を尊重しつつ、組織として譲れない基準を守る。このバランスが取れたとき、基盤は本当に機能する」 — 田中VPoE
まとめ
| ポイント | 内容 |
|---|---|
| 5つの原則 | Pipeline as Code、不変性、高速フィードバック、自己文書化、漸進的展開 |
| 共通化 | セキュリティ、コンプライアンス、監査は組織共通 |
| 自律性 | テスト戦略、ビルドツール、開発ワークフローはチーム裁量 |
チェックリスト
- パイプライン設計の5つの原則を理解した
- 不変性(Immutability)の重要性を理解した
- 共通化と自律性の線引きの考え方を理解した
次のステップへ
次は「ビルド・テスト・デプロイの標準化」です。設計原則を具体的なパイプラインステージに落とし込んでいきましょう。
推定読了時間: 30分