Skip to content
Latchkey

継続的デプロイメントとは?

継続的デプロイメントは、pipelineを通過したすべての変更を、手動の承認ステップなしで直接本番へ自動的にreleaseします。

継続的デプロイメントは、CI/CDのはしごの中で最も自動化された段です。継続的デリバリーをもう一歩進めます。人間がreleaseのタイミングを決める代わりに、自動チェックの全セットを生き延びた変更は自分自身で公開されます。

決定的な特徴

本番の前に手動のゲートはありません。pipelineがゲートです。build、テスト、その他のチェックが通れば、変更は自動的にdeployされ、多くの場合マージから数分以内です。これは、自動チェックが人間の判断の代わりを務められるほど信頼されている場合にのみ機能します。

仕組み

  • 変更がmainブランチにマージされます。
  • pipelineがbuildし、テストスイート全体を実行します。
  • 追加のゲートが実行されます: 統合テスト、セキュリティスキャン、smoke test。
  • 成功すると、変更が自動的に本番へdeployされます。
  • モニタリングと自動ロールバックが、すり抜けたものを捕捉します。

実例

ある開発者が午後2時に小さなUI修正をマージします。午後2時6分までにpipelineはそれをbuildし、何千ものテストを実行し、canaryの背後でdeployし、数分間エラー率を観察し、全ユーザーへ展開します。マージ後は人間がループに入ることはありません。

必要となる安全策

人間のゲートを取り除くことは、他のすべての水準を引き上げます。継続的デプロイメントは、包括的な自動テスト、canary deploymentのような段階的ロールアウト戦略、強力なモニタリング、そして速い自動ロールバックに大きく依存します。feature flagにより、リスクの高い変更を隠したまま出荷し、別途有効化できます。

適する場面

継続的デプロイメントは、ロールバックが安価でロールアウトが段階的なWebサービスで真価を発揮します。firmwareや一部の規制対象システムのように、releaseの取り消しが難しい場合には向きません。多くのチームは一部のサービスにこれを採用し、他のサービスには手動ゲートを残します。

重要なポイント

  • 継続的デプロイメントは、通過したすべての変更を自動的に出荷します。
  • 強力なテスト、モニタリング、そして速いロールバックを必要とします。
  • ロールアウトが段階的でロールバックが安価なサービスに適しています。

関連ガイド