ある企業が大規模なモノリシックアプリケーションをマイクロサービスに分解(モダナイゼーション)しています。現在のモノリスは EC2 で稼働しており、徐々にサービスを切り出す「ストラングラーフィグパターン」を採用することにしました。最初は認証サービスのみを切り出してコンテナ化し、段階的に他のサービスも移行する予定です。この段階的な移行を実現するための最も適切なアーキテクチャはどれですか?
- A. AWS Lambda でモノリスのビジネスロジックをすべてサーバーレス関数として書き直し、全機能を一度に移行する
- B. モノリスのコードベースをリポジトリごとに分割し、各チームが独立してコンテナ化する。完成したサービスから順次 ECS にデプロイし、モノリスとの接続は REST API で行う
- C. Amazon API Gateway をフロントエンドに配置し、ルールベースのルーティングで切り出したマイクロサービス(ECS Fargate)とモノリス(EC2 + ALB)に振り分ける。認証サービスを最初に ECS にデプロイし、API Gateway で認証エンドポイントのみをマイクロサービスに転送する。他のリクエストは引き続きモノリスに転送し、段階的に切り出すサービスごとにルーティングを変更する
- D. モノリス全体を一気に停止し、すべてのサービスを同時にコンテナ化して ECS に移行する
解答と解説を見る
正解: C
ストラングラーフィグパターンでは、既存のモノリスを稼働させたまま、段階的にサービスを切り出します。API Gateway をルーターとして使用し、切り出したサービス(ECS)と既存のモノリス(EC2/ALB)を並行して稼働させます。ルーティングルールを変更するだけで切り替えができ、ロールバックも容易です。 D: 全機能の同時移行は「ビッグバン」アプローチで、リスクが非常に高く、移行期間中のサービス停止が必要になります。段階的移行の要件に反します。 B: アーキテクチャを決めずにコードを分割するだけでは、段階的なトラフィック切り替えの仕組みがなく、ストラングラーフィグパターンを実装できません。 A: Lambda への全機能の書き直しは大規模なリファクタリングが必要で、「段階的なモダナイゼーション」のアプローチではありません。
📚 関連サービスの解説: Amazon API Gateway ・ Amazon ECS