web-dev-qa-db-ja.com

赤/黒展開と青/緑展開の違いは何ですか?

古いマシンをアクティブに保ち、問題が発生した場合にロールバックできるようにしながら、新しいマシンに更新プログラムを展開するというアイデアを説明するために、両方を使用したことがあります。また、更新されたサービスと古いサービスとの間で負荷を共有することを説明するために使用したことも聞いたことがあります。

私の理解では、クラウドサービス専用です。

誰かがこれらの用語を分かりやすく説明できますか?

39
Erich

青/緑と赤/黒の両方の展開は、同じ概念を表しています。

前者は最も一般的な用語ですが、後者は主にNetflixとそのツール( Spinnaker など)で使用されているようです。

このアプローチを理解するには、インフラストラクチャを自動化できる必要があるという意味で、クラウド、仮想化、またはコンテナ化されたサービスにのみ適用されます。

29
Francesc Rosas

ブルーグリーン展開

Jezz HumbleとDavid FarleyによるContinuous Delivery bookに記載されている古典的な展開手法:

アイデアは、青と緑と呼ばれる2つの同一バージョンの実稼働環境を用意することです...システムのユーザーは、現在指定されている実稼働である緑の環境にルーティングされます。アプリケーションの新しいバージョンをリリースしたい。それで、私たちはそれを青い環境に展開します...これは、緑の環境の動作に影響を与えません。青い環境に対して煙テストを実行して、正常に動作していることを確認できます。準備ができたら、新しいバージョンへの移行は、緑の環境ではなく青の環境を指すようにルーターの構成を変更するだけです。したがって、青い環境が生産になります。通常、この切り替えは1秒未満で実行できます。何か問題が発生した場合、ルータを緑の環境に戻すだけです。」

次に、HumbleとFarleyは主な課題に言及します。グリーンバージョンとブルーバージョンの間のデータベーススキーマの変更に対処することです。

青緑展開の主な利点は、新しいバージョンをリリースする際のダウンタイムがゼロまたはほぼゼロであることです。また、青緑色の展開により、カナリーリリースが可能になります。

赤黒展開

赤バージョンは本番環境でライブです。ブラックバージョンを1つ以上のサーバーに展開します。ブラックバージョンが完全に動作している場合は、ルーターを切り替えてすべてのトラフィックをリダイレクトします(または、レッドを0インスタンスに、ブラックをNにスケーリングします)。問題が発生した場合は、操作を元に戻します。だから、青緑の展開に似ていますが、わずかな違いがあります:青緑の展開では、両方のバージョンが同時にリクエストを一時的に取得する場合がありますが、赤黒では1つだけですのどのバージョンでもトラフィックを取得しています。以下にいくつかの 確証 を示します。

常に、1つの環境のみがライブであり、ライブ環境はすべての本番トラフィックを処理します。この例では、赤は現在ライブで、黒はアイドル状態です(この場合、黒はゼロサーバーにダウンスケールされています)...

したがって、赤黒は青緑の専門です。ただし、赤黒展開は、Netflix、Istio、およびコンテナオーケストレーションをサポートする他のフレームワーク/プラットフォームで使用される新しい用語です。 実際の意味は異なる場合があり、多くの人が「青緑」の別の用語として「赤黒」を使用しています。チームの色が赤と黒であるためかもしれません。 :^)

40
Paulo Merson