複数の依存マイクロサービスをデプロイする方法


7

AWS ECSに複数のマイクロサービスをデプロイしたいと考えています。

私たちが解決する必要がある問題は、それらをアトミックな方法で展開する方法です。

ユーザーサービスバージョン2.0を必要とするフロントエンドサービスがあるとしましょう。

フロントエンドサービスを展開する前に、ユーザーサービスが利用可能であることを確認する方法。

私たちはインフラ全体を複製し、すべてを配備してから利用可能にするという考えを持っています。しかし、それは私には複雑に思えます。これらのスペアインスタンスを作成し、サービスをデプロイして、切り替えを行う方法を教えてください。

サービスごとに2つのALBとターゲットグループを使用しています(動的ポートマッピング)。

回答:


6

このような質問は、マイクロサービスへのアーキテクチャのスライスが不十分であることを示している可能性があります。Microservicesは何ですか?

これらのサービスはビジネス機能中心に構築されており、完全に自動化された展開機構によって個別に展開できます。

このような場合に見逃される重要な点は、それらの独立して展開可能な側面です。

ポイントは、単に誤解されている可能性もあります。それは、各マイクロサービスがそれ自体で機能全体を実行できる必要があることを必ずしも意味するのではなく、その機能が依存する他のマイクロサービスが利用できない場合に正常にベイルできることを意味します。おそらく、そのマイクロサービスが利用可能になったときに、後で実行するために「todo」のものを追跡します。

別の観点から見ると、外部サービスの依存関係の利用不可の処理は、実際には各マイクロサービス機能の一部である必要があります。そのため、ランタイムの依存関係が満たされていない場合でも、マイクロサービスは完全に機能していると考えることができます。

上記のコメントでは、デプロイメントの依存関係の順序やその他の機能(停止など)にかかわらず、理由に関係なくマイクロサービスが利用できないことを指摘していることは注目に値します。

考慮すべきもう1つのことは、マイクロサービスをデプロイすることと、トラフィックをそれらに切り替えることでマイクロサービスを実行することとの細かい違いです。多くの場合、トラフィックの切り替えはデプロイ自体よりも速いため、最初にすべてのマイクロサービスをデプロイし、その後すべてのマイクロサービスに対してトラフィックの切り替えを実行することで、システムレベル全体の可用性を向上させることができます。


私もそう思っていました!どうもありがとうございました。
Kaymaz

1

同様の状況で、2番目のアプリケーションよりも前に、アプリケーションの1つを構築、デプロイ、稼働させる必要がありました。これは、アプリケーションAに、アプリケーションBを介して参照される前に実行する必要があるいくつかの機能があるためです。これを実現する方法は、単一の配信パイプラインに構築することでした。このようにして、すべての依存関係は、必要に応じて順次または並列に展開されました。また、念のため、データベーススクリプトとロールバック機能を順番に並べました。言い換えると、フロントエンドサービスの前にAPIをデプロイできます。お役に立てれば。


0

ここでのソリューションは、blue / greenデプロイメントパターンを使用してマイクロサービスをデプロイすることです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.