シフトレフト

テスト、セキュリティ、品質チェックを開発プロセスの早い段階に移動させるアプローチ

DevOps品質

シフトレフトとは

シフトレフト (Shift Left) は、テスト、セキュリティ、品質チェックを開発プロセスの早い段階 (左側) に移動させるアプローチである。問題を早期に発見するほど修正コストが低い。

従来 vs シフトレフト

従来:
  設計 → 実装 → テスト → セキュリティ → デプロイ
                          ↑ ここで問題発見 (修正コスト高い)

シフトレフト:
  設計 → 実装 → テスト → セキュリティ → デプロイ
  ↑ ここで問題発見 (修正コスト低い)

修正コストの増加

発見フェーズ 相対コスト
設計時 1x
実装時 5x
テスト時 10x
本番リリース後 100x

シフトレフトの実践

領域 従来 シフトレフト
テスト QA チームが手動テスト 開発者が自動テストを書く
セキュリティ リリース前にペネトレーションテスト コミット時に SAST/DAST
コード品質 コードレビューで指摘 ESLint + Prettier で自動修正
インフラ 手動構築後に検証 IaC + テスト

具体的なツールチェーン

コーディング時:
  TypeScript (型チェック) + ESLint (静的解析) + Prettier (フォーマット)
  ↓
コミット時:
  Husky + lint-staged (Git フック)
  ↓
プッシュ時:
  GitHub Actions (CI: テスト + ビルド + セキュリティスキャン)
  ↓
マージ時:
  コードレビュー + 自動テスト通過必須
  ↓
デプロイ時:
  自動デプロイ + スモークテスト

セキュリティのシフトレフト (DevSecOps)

チェック ツール タイミング
依存パッケージの脆弱性 Dependabot, Snyk PR 作成時
シークレットの検出 git-secrets, TruffleHog コミット時
SAST (静的解析) CodeQL, Semgrep CI
コンテナイメージスキャン ECR スキャン, Trivy ビルド時
IAM ポリシーの検証 IAM Access Analyzer デプロイ前

シフトレフトの限界

シフトレフトは万能ではない。本番環境でしか発見できない問題 (パフォーマンス、スケーラビリティ) もある。シフトレフトとシフトライト (本番モニタリング) を組み合わせる。

シフトレフトを扱う関連書籍も多い。

関連用語