これらの用語を一緒に聞いて、違いは何ですか?それらは継続的なビルドと継続的なデプロイメントとどのように関連していますか?
継続的インテグレーション /継続的ビルドとは、開発者がソースコードリポジトリにコードをほとんどまたは頻繁にコミットしないようにすることです(そして、リポジトリから最新バージョンを取得するため、変更は他の開発者の最近の変更に基づいています)。 。これにより、この場合はマージが容易になるため、マージの解決に費やされる時間を削減できます。
プロセスは、任意の単体テストも実行できるビルドサーバーを使用して自動化するのが最適です。ビルド/テストが失敗した場合、開発者にフィードバックが提供されるため、問題をすばやく修正できます。
継続的デプロイメントには、ビルドプロセスからのテストアーティファクトのテスト環境および本番環境への自動デプロイメントが含まれます。これに伴うリスクを軽減するために、多くの場合 機能の切り替え を使用してリリースと展開を(制御された方法で)分離します。
継続的デリバリーは、テクノロジーについてではなく、ソフトウェアデリバリーへの組織のアプローチについてです(ただし、自動化を多用しています)。
DevOpsは、開発者と運用チームの間の障壁を打破し、それらが組み合わされたスキルから利益を得る方法でコラボレーションするようにすることを一般的に強調するはるかに大きな領域です。環境のプロビジョニング、ビルドの展開、監視(および問題とスケーラビリティへの自動対応)の自動化、および場合によっては、ソフトウェア定義のネットワークが企業内でさらに自動化されます。一部の組織では、専用のDevOpsチームが作成されています。
Continuous Delivery(CD)は、ThoughtWorksのJez HumbleとDavid Farleyが共著した2010年の本で最初に説明された概念です。
継続的インテグレーションと継続的デリバリーは互いに混同されることがよくありますが、いくつかの重要な違いがあります。
これが Martin Fowler からの引用です:
「継続的インテグレーションは、チームのメンバーが頻繁に作業を統合するソフトウェア開発プラクティスです。通常、各人が少なくとも毎日統合し、1日に複数のインテグレーションが発生します。各インテグレーションは、自動ビルド(テストを含む)によって検証され、統合エラーを検出します。多くのチームは、このアプローチによって統合の問題が大幅に減少し、チームが一貫したソフトウェアをより迅速に開発できるようになることを発見しています。」
継続的デリバリーと継続的デプロイメントの主な違いは自動化です。デプロイメント側を自動化します。これは、1日に複数回本番環境に移行する場合、またはその他のさまざまな理由でうまく機能します。
DevOpsに関しては、それはまったく別のワックスのボールです。人々はDevOpsを役割またはツールであると考えることがよくありますが、それは実際には文化です。 DevOpsを「行う」ことはありません。これは私がかなり好きだとマイク・ケイビスからの引用です:
「DevOpsはカルチャーシフトまたはムーブメントであり、優れたコミュニケーションとコラボレーション(別名チームワーク)を促進して、より信頼性の高い、より迅速に高品質のソフトウェアの構築を促進します。」
継続的なxxxフレーズがさまざまな人々によってどのように使用されるかには、おそらくいくつかのあいまいさが存在しますが、このブログの投稿は、かなりよく要約していると思います。
DevOpsは特定のプラクティスというよりも包括的なアイデアであり、アジャイルがアイデアのようであり、ユニットテストはプラクティスです。