「継続的」、「継続的デリバリー」、「継続的統合」の「継続的」とはどういう意味ですか?
それは何に反対ですか?
「継続的」は、「展開」、「配信」、および「統合」に、「継続的」なしの場合よりも多くのことをさせますか?
従来、継続的インテグレーション、継続的ビルド、継続的デプロイメント、継続的テストなどの前に、システムはモジュールに分割され、これらのモジュールはあまり相互作用しない独立したチームによって開発されていました。
「統合」という用語は、それらの個別に開発されたモジュールが完全なシステムに一緒に組み立てられたイベントを指します。 (これも「統合テスト」という用語の由来です。)これは通常1回限りのイベントでした。つまりシステム全体が、時には年のために完全なシステムとして機能したことがない場合なしで完全に分離して開発されました。次に、最後にモジュールを組み立て(「統合」)、構築、テスト、および配備しました。これはつまり、基本的に初めてeverシステム全体が実行されていたことは、配達日の直前でした。
もちろん、ほとんどの場合を除いて、それはされなかった実行されます。そして、複雑なモジュール間の複雑な相互作用を持つ複雑なシステムで問題を突き止める必要がありました。そして、統合は非常に骨の折れる出来事だったので、それは苦痛で高価なものと見なされていました。
継続的インテグレーションのアイデアは、これを頭に入れています:インテグレーションを最後までプッシュしてhuge痛みを伴う1回限りのイベントにする代わりにalways =、-anyモジュールに変更があるたびに。そうすれば、それを行うのが上手になります(1年に1回だけ行うのではなく、1日に数回行うため、より多くの練習ができるため)およびはるかに簡単になります(もし変更ごとに統合し、統合の問題を早期に発見しますand問題はその単一の変更)にあることがわかります。
つまり、そこから継続的なXYZのアイデアが生まれました。実際に何かを変更するには遅すぎるため、XYZを最後まで押し込むのではなく、一度だけ実行する場合は、できるだけ早く、頻繁に実行します。
この継続性を促進するために、通常、プロセスは大幅に自動化されており、Continuous Build Servers、Continuous Integration Serversなどのアイデアが生まれました。
これは、ペアプログラミング( "継続的なコードレビュー"と見なすことができる)と同じ考え方であり、小さなコミットを頻繁に行うなどの点に注意してください。
継続的インテグレーション(CI)は、変更をメインコードベースに頻繁にインテグレートする実践です。 CIを行うには、おそらく、CIサーバーがコミットごとにコードベースで自動テストを実行し、統合が成功したことを確認する必要があります。コードベースにプッシュする開発者は、コミットを小さく保ち、プル/プッシュの変更を頻繁に行う必要があります。
継続的な展開は、手動で(ボタンを押す以外の)作業なしで、ソフトウェアをいつでも本番環境に展開する機能です。通常、これはデプロイメントパイプラインとテストの自動化によって実現されます。
継続的デリバリーは、任意の時点でソフトウェアをデリバリーする機能です。リリースの準備ができている機能のセットがある場合、企業は、リリースする機能を個別に個別に決定できます。 deploymentからreleaseを分離する必要があります。
デプロイと配信の違いは、コードが本番環境でアクティブかどうかにあります。
Deployedは、コードが本番サーバーに到達したことを意味します。それはアクティブかもしれないし、アクティブでないかもしれない。たとえば、すでに展開された後のソフトウェアの配信を制御する機能トグルがあるとします。トグルの機能がわからない場合は、実行時に操作/トグルできるifブランチと考えることができます。
Deliveredは、コードが製品化されただけでなく、「アクティブ」であり、ビジネス価値を提供することを意味します。
この文脈では、「連続的」は「離散的」とは反対です。連続はイベントの中断のない流れ(つまり、蛇口から流れる水)を表し、離散はイベントの孤立したシーケンス(つまり、蛇口から滴る水滴)を表します。
ソフトウェア開発に関して:技術的な制限、規制、または単に知識の欠如によって必要とされる可能性のある、一定の間隔での統合/展開/配信のみとは対照的に、目的またはビジネスに最適な場合、これらのことを継続的に行うことができますニーズ。
継続的インテグレーションは、チームのメンバーが頻繁に作業を統合するソフトウェア開発プラクティスです。通常、各人が少なくとも毎日統合し、1日あたり複数の統合をもたらします。
https://martinfowler.com/articles/continuousIntegration.html
「継続的」とは、新しいコードの統合、構築および展開を体系的かつ頻繁に(通常は日常的に)実行できるプロセスがあることを意味します。
ここで述べた他の人とは異なり、私はこれらのことはリリースをより頻繁にしようとすることについてではなくであると言いますが、全体的なプロセスをよりスムーズにすることについてです。各人または部門が過度の会議や他の人の気を散らすことなくそのコンポーネントに取り組むと、全体の開発が速くなります。リリース頻度は、目標よりも派生的な効果です。
また、3つの用語はすべてほぼ同じです。
継続的インテグレーション(CI)は、「おいおい、マスターブランチの現在の状態は?壊れている?マージできるか?」 -代わりに、バディの状態を気にせず、コンポーネントを使い終わったら、たとえばマージリクエストを作成するなどして、CIシステムにそのことを知らせます。自動化は、自動化されたテストの開始のような残りの部分を処理しますintegratingコンポーネントを他のコンポーネントと一緒に。
ブランチのマージは自動化されているかどうかにかかわらず、誰がどのようにしてチケットをマージするか、または改善のためにチケットを返却するかを決定します。これは別の問題です。
ソフトウェア製品のコンパイルのステップがCIパイプラインにある場合、それはContinuous Delivery(CD)と呼ばれます。
製品がWebサイトまたは実行中のアプリケーションの一種である場合、CDはContinuous Deploymentと呼ばれます。