こんにちは。今回のポストでは、AWS Cross-Region Multi VPC環境で、無停止でアプリケーションサービスクラスターをMigrationした事例を共有したいと思います。
Context
[1] A社は大韓民国でB2Cサービスを提供している会社で、AWSソウルリージョンができる以前からAWS Cloud基盤のインフラを構築し、開発していました。
[2] サービスが大きくなるにつれ、A社もアプリケーションを複数のサービスに分離し始め(MSA)、生まれたAWSソウルリージョンにより、新しいサービスはソウルリージョンでプロビジョニングされていました。
[3] MSAによって分離されたサービス間のInternal通信が生まれ、ソウルリージョンと東京リージョンVPCをVPC Peeringにまとめて使用していました。
[4] A社はドメインをいくつか使っていて、ドメインAは東京リージョンにあるLBにつながり、様々なサービスをL7 Path Routingを通じてサービングしていました。
Problem
[1] サービスが次第に大きくなり、ソウルと東京リージョンに分かれたサービス間のInternal通信が多くなり、A社のサービスは応答速度低下問題を経験するようになりました。
[2] ドメインAとつながっているLBのサービスが多く、点検または中断環境ですべてのサービスを一度にマイグレーションするのは危険負担が大きく、漸進的なリージョンマイグレーションが必要でした。
Solution
[1] 東京リージョンにTLSが適用されていない新しいLBをPrivate Subnetにプロビジョニングし、既存のAドメインと同じPath Routingルールを適用します。 そしてNLBとVPC Endpointを利用してこのALBのEndpointを生成します。 最後に、ソウルリージョンにTLSが適用された新しいLBをプロビジョニングし、上記で生成したEndpointにルーティングします。
[2] 既存ドメインAをソウルリージョンのLBをResolveするように変更します。 AWS Route53のWeighted Routingなどの戦略を利用することができます。
[3] ソウルリージョンに既存のサービスを一つずつマイグレーションし、ソウルリージョンLBのPathルールを変更して接続します。 このプロセスを繰り返し、東京リージョン全体のサービスを移行します。