ブルーグリーン展開

同僚と私は、クライアントに展開プロセスを完全に自動化するように常に説得しています。 自動化は、プログラムの作業の「完了」とその試運転の間のプロセスで発生する競合と遅延の数を減らすのに役立ちます。 デイブ・ファーリーとジェズ・ハンブルは、このテーマに関する本「Continuous Delivery」を終えています。 これは、一般的に継続的な統合に関連する多くのアイデアに基づいており、ソフトウェアを迅速に運用する能力を促進します。 青緑色の展開に関する章は、あまり使用されていない方法の1つであるため、私の注意を引きました。



展開の自動化のタスクの1つは、ソフトウェアを最終テスト段階から運用環境に移行することで、ある状態から別の状態に移行することです。 通常、これはダウンタイムを最小限に抑えるために迅速に行う必要があります。 青緑色のアプローチでは、可能な限り同一の2つの制作物があります。 いつでも、そのうちの1つ、たとえば青がアクティブになります。 ソフトウェアの新しいバージョンを準備するときは、グリーンプロダクションで最終テストを行います。 このプロダクションのプログラムが機能していることを確認し、すべての着信要求が緑の動作環境(スタンバイモードでは青)になるようにルーターを構成します。







また、青緑展開により、すぐに古い状態にロールバックする機会が得られます。何か問題が発生した場合は、ルーターを青の実稼働環境に戻します。 ただし、緑のプロダクションがアクティブな間、未完了のトランザクションに対処する必要があります。コード構造によっては、緑がアクティブなときに青をバックアップとして保存するために両方のプロダクションにトランザクションを送信できます。 または、同期の前にアプリケーションを読み取り専用モードにし、このモードでしばらく実行してから、読み取り/書き込みモードに切り替えることができます。 これは多くの未解決の問題を取り除くのに十分かもしれません。







2つの環境は完全に独立している必要がありますが、可能な限り同一である必要があります。 場合によっては別のコンピューター、場合によっては1台(または複数台)のコンピューターを実行する2台の仮想マシンのみにすることもできます。 また、単一のオペレーティング環境として、個別のIPアドレスを持つ個別のゾーンに分割することもできます。







グリーンプロダクションが稼働し、その安定性に満足したら、ステージングとしてブルーを使用して、次の展開の最終テストを実行できます。 次のリリースの準備ができたら、青から緑に切り替えたように、緑から青に切り替えることができます。 この構成では、緑と青の両方の生産が定期的に3つの状態(現在のアプリケーション、前のバージョン(ロールバック用)、次のバージョンのステージング)を通過します。







このアプローチの利点は、ホットスタンバイに必要なのと同じ基本的なメカニズムであるということです。 各リリースで障害復旧手順をテストできます。 (災害復旧よりも頻繁にリリースしてください)。







基本的な考え方は、簡単に切り替え可能な2つの環境を用意することです。詳細を変更する方法はたくさんあります。 1つのオプションは、ルーターを介さずにWebサーバーを再起動することで切り替えを行うことです。 もう1つの方法は、単一のデータベースを使用し、Webおよびアプリケーション層を青緑に切り替えることです。







このアプローチでは、特に新しいバージョンのソフトウェアをサポートするために論理構造を変更する必要がある場合、データベースに問題がしばしば発生します。 ここでの秘Theは、論理構造の変更とアプリケーションの更新の展開を共有することです。 これを行うには、最初にデータベースリファクタリングを適用して、新しいバージョンと古いバージョンのアプリケーションをサポートするように構造を変更し、これらの変更を展開し、すべてが正常に機能することを確認し、以前の状態のバージョンを取得してから、新しいバージョンのアプリケーションを展開する必要があります。 (そして、更新が既に解決されている場合、古いバージョンのデータベースサポートを削除します)。







このアプローチは長い間使用されてきましたが、頻繁に使用されることはありません。 必見。 名前はダン・ノースとジェズ・ハンブルから生まれました。







ナタリアベースによる翻訳)








All Articles