Skip to content
Latchkey

継続的インテグレーション vs デリバリー vs deployment

3つの用語は梯子を成す: 各段が前の段より多く本番までの道のりを自動化する。CI/CDの「CD」は意図的に曖昧だ。

人々は「CI/CD」を一語のように言うが、それはコストと保証が異なる3つの明確なプラクティスを隠している。それぞれがどこで終わるかを知れば、pipelineが実際に何をするのかについての誤解を防げる。

継続的インテグレーション

CIは「検証済み」で止まる。あらゆる変更が共有branchへ頻繁にmergeされ、自動でbuild・テストされる。成果物はコードベースが健全だという信頼であり - リリースではない。

継続的デリバリー

継続的デリバリーはCIを拡張し、合格したあらゆる変更が自動でパッケージ化され、本番のgate直前までdeploy可能だと証明される。本番への最終pushは、意図的な、しばしばワンクリックの、人間の判断だ。

継続的deployment

継続的deploymentは人間のgateを取り除く: pipelineを通過したあらゆる変更が自動で本番へ直行する。手動のチェックポイントがないため、強力なテスト、良好な可観測性、速いrollbackが要求される。

どこで止めるかを選ぶ

  • CI単独は、どのチームも持つべきベースラインだ。
  • 継続的デリバリーは、頻繁なリリースを望むが人間の「go」が欲しいチームに向く。
  • 継続的deploymentは、テストへの高い信頼と即時rollbackを持つ成熟したチームに向く。

重要なポイント

  • CIは「テスト済みで健全」で終わり、リリースではない。
  • 継続的デリバリーは、手動の最終pushを伴いソフトウェアを常にリリース可能に保つ。
  • 継続的deploymentは、合格したあらゆる変更を自動で本番へ出荷する。
  • 適切なレベルは、テストへの信頼度とrollbackの速さに依存する。

関連ガイド