Member-only story
Understanding the Difference Between CI and CD-Part2
CIとCDの違い(第二章)
今回も引き続き、CIとCDの違いの違いについての記事をご紹介いたします。長い記事なので2つに分けてお送りしています。今回は第二回です。継続的なデリバリーについて書いています。
Adding the “Continuous” to Delivery
継続的デリバリーは、ソフトウェアを可能な限り頻繁にパッケージ化および準備する(本番稼働に送信されるかのように)方法です。 そして、その最終的な方法として、すべての機能をマージします。
したがって、CDはCIをさらに一歩進めます。 各機能がメインラインブランチにマージされた後、アプリケーションの正当性がテストされるだけでなく、テスト環境(理想的には本番環境に一致したもの)にパッケージ化されてデプロイされます。 これらはすべて完全に自動化されています。 前の図に人間の絵(手動手順を表す)がないことに注意してください。
また、それぞれの新しい機能は本番環境への潜在的な候補であることに注意してください。 すべての候補者が実際に本番に送られるわけではありません。 組織によっては、本番稼働にデプロイする決定には人が関わってきます。人は、リリースがプロダクションに行くかどうかを決定するだけです(しかし、リリース自体の準備はしません)。 このリリースは既にテスト環境でパッケージ化、テスト、デプロイされています。
継続的デリバリーは、継続的インテグレーションよりも導入が少し難しいです。 これは、すべてのリリース候補が潜在的に本番環境に送ることができるため、ライフサイクル全体を自動化する必要があるためです。
- ビルドは、リピート可能であるべきだし、決定性が必要です。
- すべてのリリース手順を自動化する必要があります(これは思ったより難しいです)。
- すべてのコンフィグレーションファイルと関連ファイルは、(ソースコントロールの中だけでなく)ソース管理にも存在する必要があります。
- 各機能/リリースは、独自のテスト環境でテストされる必要があります(ダイナミックな方法で作成および破棄されるのが理想的です)。
- すべてのテストスイートは自動化されるべきであり、比較的高速である必要があります(こちらも、予想以上に難しい)。
クラウドはこれらのすべての要件に対して役立つことは確実ですが、継続的デリバリーを本当の意味で導入していくには、ソフトウェアチーム(開発者と運用の両方)に一定のルールが必要です。