最近では、選択できる導入戦略が非常に多くあり、時間が経つにつれて、選択肢は増える一方です。とはいえ、今日一部の大手企業が積極的に使用している最も一般的な展開戦略の 2 つは、カナリア展開戦略とブルーグリーン展開戦略です。
Blue-Green デプロイメントと Canary を比較する場合、重要なのは速度やシンプルさだけではありません。これらの戦略のいずれかを選択する際に考慮すべき最も重要な要素の 1 つは、展開のダウンタイムです。
デプロイメントのダウンタイムを最小限に抑え、更新または変更をデプロイするときにシームレスな移行を実現するには、カナリア デプロイメントと Blue-Green デプロイメントからより適切なオプションを選択することが最も重要です。
それでは、Blue-Green デプロイメントと Canary の直接比較や、Canary デプロイメントと Blue-Green デプロイメントに関する私たち自身の経験など、各戦略が提供するものについて見ていきましょう。
Blue-Green デプロイメントとは何ですか?また、それが提供するものは何ですか?
Blue-Green デプロイ戦略では、アプリケーションの新しいバージョンは、テストと検証が完了するとすぐにデプロイできます。これは、Blue 環境と Green 環境という 2 つの同一の環境のおかげで、Blue-Green デプロイメントという名前が付けられています。
これが機能するのは、これらの環境の一方がアクティブで、もう一方が非アクティブであるためです。これは、アプリケーションの新しいバージョンを非アクティブな環境 (緑色の環境としましょう) にデプロイできることを意味します。これら 2 つの環境はリソース、インフラストラクチャ、構成の点で完全に同一であるため、更新プログラムの不具合は完全に展開される前に解決できます。
更新がテストされ、開発者がそれが機能することに満足すると、ライブ トラフィックはこの非アクティブな環境に切り替えられます。これにより、非アクティブな環境 (緑の環境) がアクティブな環境になり、以前にアクティブだった環境 (青の環境) が非アクティブになります。
これで、非アクティブな青色の環境がスタンバイとなり、緑色の環境がアクティブになり、新しくデプロイされた更新を実行している間に、新しい更新のテストに使用できるようになります。この方法では、トラフィックが即座に非アクティブな環境に変更されるため、実質的にダウンタイムは発生しません。
さらに、アップデートに問題がある場合は、ロールバック機能を使用してアプリケーションの古いバージョンに戻すことができます。ただし、開発者が非アクティブな環境で新しいアップデートの作業を開始したときに問題が発生した場合、この環境では古いバージョンも利用できなくなるため、この環境にロールバックすることはできなくなります。
多くの企業や組織がこの戦略を採用していますが、この戦略を実践している一例が Spotify で見られます。 Spotify のサービスは 24 時間年中無休で利用できる必要があるため、新しいアップデートがリリースされると、常にバックアップの非アクティブな環境が準備されています。
Canary デプロイメントとは何ですか?また、それが提供するものは何ですか?
Canary デプロイメントと Blue-Green の主な違いは、更新プログラムがすべてのユーザーに一度にデプロイされる 2 つの環境ではなく、Canary デプロイメント戦略では、更新プログラムが最初に少数のユーザーにリリースされることです。
アップデートに問題がある場合、問題に遭遇してフィードバックを提供するユーザーはほんの一部です。問題が解決されると、アップデートは大部分のユーザーにリリースされ、問題が発生した場合は開発者にフィードバックが残されます。
このサイクルは、徐々に多くのユーザーに対して繰り返され、更新プログラムが 100% のユーザーにリリースされるまで、更新プログラムに関するすべての問題が解決されます。たとえば、最初はアップデートは 2% のユーザーにのみリリースされ、次に 25%、次に 75%、そして最終的には 100% にリリースされます。
Blue-Green と比較して Canary デプロイメントでのこの段階的なリリースでは、より制御された柔軟なロールアウトが提供され、開発者はごく一部のみが潜在的な問題を経験する制御された環境で機能と更新をテストできます。
最後に、Canary も同様のロールバック機能を提供します。ただし、デプロイメントは段階的に段階的に実行されるため、Canary で実行されるロールバックも、安定したバージョンに達するまで段階的に段階的に実行されます。
この導入戦略のよく知られた例は、Netflix がシステムに意図的に障害を引き起こす Chaos Monkey と呼ばれるツールと併用して Canary を使用していることです。障害がカナリア環境に影響を与える場合、Netflix チームはシステムがどのように反応するかを分析し、それに応じて調整できます。このようにして、Netflix は、悪条件下でもアップデートが安定し、回復力を維持していることを確認できます。
ブルーグリーン展開 vs.カナリア
これらの展開戦略は両方とも、独自の利点を提供します。ただし、制限もあります。そのため、決定を下す前に、Blue-Green 開発と Canary の長所と短所を比較検討することが重要です。
このセクションを読んでもどちらを進めるべきかまだわからない場合は、この 2 つの戦略に関する私たちの経験と、この記事の最後に学んだことも記載しています。
ダウンタイムの削減
この記事の主な懸念事項の 1 つは、Blue-Green デプロイメントと Canary のデプロイメントのダウンタイムの短縮です。 Blue-Green デプロイメントの強みの 1 つはその速度です。2 つの環境を使用してアプリケーションの更新や機能を即座にデプロイできるためです。
一方、Canary の段階的導入アプローチでは、少数のユーザーが問題を経験するだけでなく、各段階でフィードバックが提供されるため、ダウンタイムを最小限に抑えてトラブルシューティングをより迅速に行うことができます。
さらに、どちらのサービスもロールバック機能を提供していますが、Blue-Green デプロイメントのロールバック機能は瞬時に行われるため、重大な問題が発生した場合に開発者に信頼できるバックアップを提供します。ただし、前述したように、非アクティブな環境で新しいバージョンの作業が行われている場合、バックアップ バージョンは利用できません。
Canary のロールバック機能は、展開プロセスと同様に段階的にのみ使用できます。ただし、古い安定バージョンは、新しい更新プログラムがテストおよび作業される環境に依存しないため、いつでも利用できます。
デプロイメントのダウンタイム削減の点で、Canary デプロイメントと Blue-Green を比較すると、リスク制御と詳細な制御の点で Canary が優れています。ただし、純粋にダウンタイムの短縮を考慮する場合は、スイッチオーバーが瞬時に行われるため、2 つのうちの Blue-Green の方が優れています。
とはいえ、Blue-Green デプロイメントと Canary デプロイメントを議論するときは、ダウンタイムの削減以外の要素を考慮することも重要です。
アプリケーションの種類
一般に、アプリケーションはトランザクション中心のアプリケーションとコンテンツ主導型のアプリケーションに分類できます。トランザクションの多いアプリケーションでは、高いサービス可用性と最小限のダウンタイムが優先されるため、Blue-Green デプロイメントがはるかに優れたオプションです。そのため、Blue-Green のインスタント スイッチおよびインスタント ロールバック機能が Canary よりも優れています。
一方、コンテンツ駆動型アプリケーションはリアルタイム トランザクションに依存しません。これらのアプリケーションは通常、ソーシャル メディア プラットフォームやユーザー エンゲージメント サービスに使用されるため、更新を段階的に展開し、各段階で常にフィードバックを受け取ることができる Canary の方がはるかに優れた戦略です。
インフラストラクチャのコスト
Blue-Green デプロイメントと Canary デプロイメントのどちらを選択する場合のもう 1 つの主な懸念事項は、コストです。当然のことながら、Blue-Green 導入では、2 つの個別の環境を維持する必要があるため、コストが高くなります。
そのため、Canary の単一実稼働環境はコストがはるかに優しいオプションであり、小規模なチームやリソース集約型のアプリケーションにより適したオプションとなっています。
スケーラビリティと長期メンテナンス
最後に、Blue-Green デプロイメントは拡張可能ですが、大規模なアプリケーション用に 2 つの完全な環境を維持すると、リソースが大量に消費され、複雑になる可能性があります。時間の経過とともに、特に複雑なインフラストラクチャのニーズがあるアプリケーションの場合、重複環境の管理と維持により、大幅なオーバーヘッドが増加する可能性があります。
このため、スケーラビリティとメンテナンスの観点から、カナリア デプロイメントとブルーグリーン デプロイメントのどちらを選択するかはかなり簡単になります。カナリア デプロイメントでは、重複した環境が必要ないため、スケーラビリティがよりシンプルになり、コスト効率が向上することがよくあります。
代わりに、新しい変更にさらされるユーザー ベースを徐々に拡大することで、プライマリ環境内でのスケーリングに重点を置いています。この設定はインフラストラクチャの複雑さを軽減し、メンテナンスを簡素化するため、長期的にははるかに管理しやすくなります。
Cloudzy の Blue-Green 導入の経験とカナリア展開
DevOps サービスをクライアントに提供する場合、顧客満足度、高可用性、最小限のダウンタイムがビジネスの成功にとって重要であることを私たちは理解しています。ある特定のケースでは、お客様から大規模なインフラストラクチャのアップグレードを支援してほしいと当社に相談がありました。チームは、システムを Blue-Green デプロイメントと Canary デプロイメントのどちらにするかを決定する任務を負っていました。
十分に検討した結果、事実上ダウンタイムが発生しない Blue-Green デプロイメントを最初に試してみることにしました。私たちは同一のグリーン環境を設定し、アップグレードの展開の準備をしました。ボタンを押すだけですべてのトラフィックがグリーン環境に切り替えられるため、かなりのプレッシャーがありました。開発者が知っているように、これらのことをどれだけテストしても、結果がどうなるかはまだサイコロのロールのようなものです。
ありがたいことに、すべてがうまくいきました。移行はバターのようにスムーズで、ほとんど問題はありませんでした。時間が経つにつれて、クライアントのサービスとユーザーが成長するにつれて、新しい機能を展開する必要が生じ、Blue-Green 対 Canary の議論が再び勃発しました。
しかし、今回はあまり議論になりませんでした。これらは比較的小規模な機能であり、インフラストラクチャ更新の規模ではありませんでした。したがって、クライアントのユーザー ベースのごく一部に機能を展開し、ユーザーのフィードバックを通じてクライアントが抱えている問題を解決できるため、当然のことながら Canary を選択しました。
これは間違いなく正しい決断でした。大きな問題はありませんでしたが、いくつかの小さな問題が発生し始め、その機能が展開されたクライアントのユーザー ベースの 5% から報告されました。
Cloudzy では、カスタマイズされたソリューションの力を信じています。お客様のビジネスが Blue-Green デプロイメントの信頼性を必要とする場合でも、Canary デプロイメントの柔軟性を必要とする場合でも、当社の DevOps チームは、お客様のインフラストラクチャに最適な戦略を実装するための経験と知識を持っています。お問い合わせ ここ 今日は、導入プロセスを最適化し、業務をスムーズに実行し続ける方法を学びましょう。
VPS について言えば、世界中の 12 以上の拠点、最大 10 Gbps に達する専用インターネット接続、エンタープライズ NVMe SSD ストレージ、強力な 3.23 GHz ターボ速度 AMD EPYC プロセッサ、99.95% の稼働時間などの機能を備えた、VPS 業界で最も低い料金を提供しています。私たちをチェックしてください VPSの料金設定 詳細については。
最終的な考え
結局のところ、Canary デプロイメントと Blue-Green デプロイメントについて議論する場合、主要な点でどちらかが他方よりも優れているとは実際には言えません。それは単にユースケースの問題であり、どれがあなたの特定のニーズに最も適しているかということです。
よくある質問
ブルーグリーンデプロイメントとカナリアデプロイメントの主な違いは何ですか?
Blue-Green 展開戦略と Canary 展開戦略の主な違いは、更新プログラムのリリース方法にあります。 Blue-Green 導入では 2 つの同一の環境を使用し、非アクティブな環境に更新を適用することで、事実上ダウンタイムなしで即時切り替えが可能になります。対照的に、カナリア展開では、まず小規模なユーザー グループに更新を段階的にリリースし、問題を監視してからユーザー ベース全体に段階的に展開します。
ダウンタイムを削減するには、Blue-Green デプロイメントとカナリア デプロイメントのどちらが優れていますか?
Blue-Green デプロイメントは、環境間の瞬時の切り替えを可能にするため、一般にダウンタイムの短縮に優れています。これにより、潜在的な混乱が最小限に抑えられます。 Canary デプロイメントはダウンタイムを最小限に抑えることも目的としていますが、段階的なロールアウトを通じてこれを実現しており、これには一部のユーザーのみに影響を与える、局所的な小さな問題が含まれる可能性があります。
Blue-Green デプロイメントとカナリア デプロイメントのコストに関する考慮事項は何ですか?
Blue-Green 導入では、2 つの完全な環境を維持する必要があるため、通常はより高価になります。一方、Canary デプロイメントは重複したインフラストラクチャを必要としないため、コスト効率が高くなります。アップデートはプライマリ環境内でロールアウトされるため、小規模なチームやリソース集約度の低いアプリケーションにとってはより良い選択肢となります。