AWS におけるモノリスからマイクロサービスへ:3 つの移行パターン

AWS におけるモノリスからマイクロサービスへ:3 つの移行パターン

『Monolith to Microservices』を参考に、モノリスからマイクロサービスへ移行する 3 つのパターンを AWS サービスに当てはめて解説します。

Takahiro Iwasa
4 min read

モノリスからマイクロサービスへの移行に決まった正解はありません。Monolith to Microservices: Evolutionary Patterns to Transform Your Monolith で紹介されているパターンのうち 3 つを、AWS サービスにどう当てはめられるか整理します。

Strangler Fig Application

Strangler Fig Application パターンを使うと、既存アプリケーションに破壊的な変更を加えることなく、機能を段階的にマイクロサービスへ移行できます。

モノリス全体を一気に書き直すのではなく、既存システムの周囲に新しいマイクロサービスを少しずつ作成していきます。時間の経過とともに、これらのサービスがモノリスの責務を引き継いでいき、最終的にモノリスを廃止できるようになります。

AWS ALB による実装

Application Load Balancer (ALB) を使うと、リクエストをモノリスまたは新しいマイクロサービスへルーティングできます。ALB のパスベースルーティング機能で、リクエストパスに応じて転送先を切り替えます。

Strangler Fig with ALB

SQS による実装

メッセージ駆動型のアプリケーションでは、AWS Lambda が各メッセージを調べ、モノリスまたは新しいマイクロサービスが処理する SQS キューへ送信できます。

Strangler Fig with SQS

Parallel Run

Parallel Run パターンでは、モノリスとマイクロサービスの両方を同時に呼び出し、それぞれの結果を別々に保存します。

このアプローチはリスクの高い移行大規模なシステム変更に特に有用で、最終的な移行を行う前に出力を比較するためのセーフティネットとして機能します。

Parallel Run Pattern

Change Data Capture (CDC)

Change Data Capture (CDC) パターンはもう一つの移行戦略ですが、大きな課題も伴います。書籍の著者は次のように述べています。

In general, I try to keep the use of this pattern to a minimum because of the challenges around some of the implementations of this pattern.

AWS では、Database Migration Service (DMS)DynamoDB Streams を使って CDC パターンを実装できます。

このパターンでは、ソースデータの変更に応じて処理を実行し、移行中に並行稼働するシステム間でデータを同期できます。

Change Data Capture Pattern

まとめ

Strangler Fig、Parallel Run、Change Data Capture を AWS サービスに当てはめると、それぞれのパターンがモノリスからマイクロサービスへの移行のどの部分を担うのかが見えてきます。

この 3 つのパターンは互いに競合するものではなく、同じ移行の異なる課題を扱います。Strangler Fig は、ALB のパスベースルーティングや SQS を使ってモノリスからトラフィックを徐々に切り離します。Parallel Run は切り替え前に新サービスの出力を検証し、CDC は両者が共存する間のデータ整合性を保ちます。

著者自身が CDC の利用に慎重である点には注意が必要です。3 つのパターンの中でも CDC は、実装方法によって運用上の問題が生じやすいためです。まず単純なパターンを検討し、それだけでは不十分な場合に DMS や DynamoDB Streams の採用を検討するのがよいでしょう。

About the author

Takahiro Iwasa

Takahiro Iwasa

Software Developer

This blog shares technical notes from hands-on projects—architecture, implementation, and AWS service integrations.