2

私はいくつかの環境(すべてがAmazon Elastic Beanstalkで実行されている)、すなわちProduction、Worker、およびDebugを持つアプリケーションを持っています。各環境には対応するgitブランチがあります。これはいくつかの点で(設定が変更され、いくつかのコードが削除されたように)マスターとは異なります。Amazon Elastic Beanstalk上の複数の環境に同時にデプロイ

eb deployを使用して、そのブランチから新しいバージョンのアプリケーションを導入します。現在のgitブランチをgit zipで圧縮し、その情報をAmazonに送信します。次に、実行中のインスタンスにデプロイします。

ただし、展開には時間がかかります(約5分)。したがって、ワーカーとプロダクションをデプロイしている間に、異なるコードを持ちます。どちらが悪いですか?変更によってキューのプロトコルなどが変更される可能性があるためです。

私が望むのは、情報をアップロードしてすべての環境で処理できますが、コードを実際に置き換えずに準備することです。そして、すべての環境で「完了デプロイ」のようなコマンドを発行した後、コードベースがすべての環境で同時に置き換えられます。

これを行う方法はありますか?

答えて

2

「青緑」の展開を実行する必要があります。これを実行しないでください。デプロイメントモデルでは、複数のピースの同期が必要なため、これらのピースを使用するプロトコルを変更すると、それらのピースを同時に展開する必要があります。設計に強く結びつく頻繁に改訂されたプロトコルがある場合は、単一のサービスとして扱います。

"展開済み"とは、システムの最外部レイヤが公開され、他のシステムで使用可能であることを意味します。この場合、他のシステムにAPIを公開しているWebサーバー層と、Web層によって生成されたメッセージを読み取る作業者層があるようです。

ブレークキュープロトコルを変更する場合は、両方のバナーセット(Webサーバーレイヤーとキューレイヤー)を完全に新しいbeanstalk環境に展開し、相互に使用するように構成してから、公開されたエンドポイント古いWebサーバのEB環境から新しい環境に変更します。 Webサーバー層でDNSを交換し、環境が正常に動作していることを確認したら、古いWebサーバーとキュー層を破棄できます。

プロトコル以外の更新プログラムでは、1つの環境または別の環境を簡単に更新できます。

それは複雑な音です。プロトコルを頻繁に中断している場合は、ワーカーとWebサーバー層のバージョンを予想するのに十分なほどデカップリングされていないため、この複雑なプロセスを一緒にバージョン化する必要があります。

希望すると便利です。

関連する問題