シフトレフト

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

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)

セキュリティのシフトレフト (DevSecOps) を以下にまとめる。

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

シフトレフトの限界

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

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

この記事は役に立ちましたか?

関連用語

関連する記事