web-dev-qa-db-ja.com

継続的な展開の利点は何ですか?

継続的な展開には、継続的な統合に必要な以上の多くの労力が必要です。

  • すべての変更はリリースに対応しているため(多かれ少なかれ)、手動テストに使用できる時間とリソースははるかに少なくなります。それらは、ほとんど完全に自動化テストに置き換える必要があり、場合によってはうまく実行するのが非常に難しく、自動化ツールの広範な開発が必要になることがあります。 (CIもこれを奨励しています。しかし、CDでは絶対に不可欠になり、間違いははるかに有害です。)

  • 導入の頻度がはるかに高いため、導入中の許容可能なダウンタイムや中断ははるかに少なくなります。より優れた自動化されたアーキテクチャ管理および展開戦略が必要です。

継続的な展開が一般的であるため、これらのコストを相殺するにはいくつかの大きなメリットがあります。

継続的な展開の利点は何ですか?

(具体的には、継続的な統合だけでは得られない、継続的な展開に固有の利点に興味があります。)

7
Paul Draper

継続的デプロイメントまたは継続的デリバリー は、Webサービスおよび SaaSアプリ で非常に一般的です。アマゾン、フェイスブック、Github、グーグル...彼らはすべて常に展開しています。一部の事業者は、非常に狭義に定義されたサービスごとに1日に数件または数十件もの更新を展開しています。 AmazonやGoogleのような大規模なショップが1日に合計して、自分の不動産全体で展開イベントの数を簡単に数えることができるかどうかさえ、私にはわかりません。

なぜそうするのですか?

  1. ユーザーは、修正、更新、改善、および新機能を早くから頻繁に手にしています。 「パッチ」およびアップグレードサイクルは、メジャーリリースで間隔を空けることなく、日常の使用に統合されています。

  2. 内部マネージャー(個々の基幹業務の製品所有者、マーケティングキャンペーンなど)は、組織内の他のすべてのプロジェクトから切り離されたプロジェクトを確認できるため、準備が整ったときにすぐに顧客に提示でき、他の多くの変数に依存しません。または「列車を解放する」。

  3. 「多くの新機能、修正などをすべて一度にダンプする」という現象はほとんどありません。ユーザーとサポートチームの両方が、定期的に "リリース日"を憎むことを学びます。これは、ほとんどのバグ、新しい破損、未知の新しい機能/動作などが明らかになるためです。継続的な展開では、それらのリリースの瞬間が多くの非常に小さなチャンクに分散されます。 (これには独自の欠点があるかもしれませんが、痛みはより均一に広がります。)

  4. 俊敏性のため。あらゆる種類のアジャイル技術には、ユーザーからのフィードバックループが必要です。主な利害関係者が数人いる場合は、「この考えについてどう思いますか」と尋ねることができます。アマゾンはどのようにそれをしますか?世界最大のフォーカスグループを保持していますか?いいえ、彼らは出版して行きます。顧客の直接的なフィードバックではなく、詳細な分析に基づいて、物事の進行に基づいてフィードバックを受け取ります。コンテンツ中心の組織は、分析ベースのフィードバックループを備えた熱心でアクティブなパブリッシャーになる可能性が特に高いようです。

  5. A/Bテスト またはそれに対応する多変量。数千または数百万の製品、製品オプション、および製品の可能性がある複雑なビジネスを管理することは困難です "ズボンの席で。" 。データ駆動型である必要があります。フィードバックループに関する以前のポイントに関連していますが、継続的デリバリーにより、実際の顧客行動の実験室で複数のオプションを継続的にテストする余地が必要になります。変化を絶えず提供および測定する機能がなければ、さまざまな仮説やオプションをテストする機会がはるかに少なくなり、貴重なビジネス分析を収集する機会がはるかに少なくなります。

  6. 「バージョンドリフト」の悪夢との戦い。 Web向けのサービスとアプリを実行している人は、 slipstreaming とバージョンドリフトの管理(アプリの複数の論理バージョンが同時に使用されている可能性がある状況)にかなり慣れています。しかし、1ダースまたは2の異なるバージョンを実行するのが得意な人でさえ、200、2,000、または20,000の異なるバージョン構成が存在することを望んでいません。 構成管理 の手間とサポートコストが非常に高くなります。新しいコードを継続的にデプロイし、古いバージョンを廃止すると、実際に使用されているバージョンの数が 鈍い轟音 に保たれます。

  7. ベストプラクティスと組織のフィットネスを構築します。自動テスト手法や 継続的インテグレーション を導入するときと同じように、それは単純な変更ではありません。あちこちで軽く叩くだけではありません。あなたはテストのアイデア、またはすべてをテストすることにコミットしなければなりません。あなたはそれに上手くなり、それについて訓練を受け、そのスタイルの運用で効率的かつ効果的になるための適切なツール、環境、文化を持っていることを確認する必要があります。 Webプロパティは、その膨大な顧客ベースと、展開する新しいコンテンツ、新しいサービス、およびパッチ/更新の絶え間ないニーズにより、膨大な数の更新を実行する必要があるだけでなく、常に物事を更新することに長けていなければなりません。これにより、Netflixのようなショップは、技術的な機能だけでなく、開発と運用の文化の一部である人々とそのプロセスの一部に、継続的な「ビルド-ベイク-デプロイ」サイクルを作成するようになります。

継続的な展開はインターネット向けのアプリで人気がありますが、完全に継続的なものはありません。内部サービス、キャパシティの移動、組織の準備、およびその他のインフラストラクチャの変更は常にあり、さまざまなリリースの遅延または前提条件となる可能性があります。多くの更新が継続的に提供されるサービスであっても、技術、マーケティング、トレーニング、およびサポートの目的で、「大きな」変更があった場合でも、それらをバンドルとして提示、プロモート、トレーニング、および展開すると便利です。

一部の変更は、アプリの性質またはインターフェースを変更します。その外観を一方向で1分間機能させてから、次のページのリロードまたはAJAX呼び出し)で機能させて異なる外観にすることは賢明ではありません。一部の機能または要素は、最後に、多くの大きな変更には、さまざまなバックエンドサービスをアセンブルする必要があるか、さまざまなデータスキーマが必要です。これらはすべて、常に継続的にデプロイしても意味がない状況です。「メジャーバージョン」の数を制限すると、ユーザーがサービスを利用し、オペレーターが効果的にサービスを提供するので、最も攻撃的な場合でも、「時折バンプが発生し続けます」。

9
Jonathan Eunice