マイクロサービスアーキテクチャ実践
モノリスからマイクロサービスへの移行戦略と Rails + AWS での実装パターン
急成長するECサイトのモノリスRailsアプリが限界を迎えた日。テックリードのミサキが直面した現実から物語は始まる。
独立デプロイと単一責任を軸に、マイクロサービスの本質を定義する。モノリスとの違いを明確にし、いつ採用すべきかを考える。
DDD(ドメイン駆動設計)の境界づけられたコンテキストを使って、マイクロサービスの正しい境界を発見する方法を学ぶ。
REST、gRPC、メッセージキューの使い分け。サービス間通信の設計パターンとRails + AWS SQS/SNSでの実装例。
API Gateway と BFF(Backend for Frontend)パターンの実装。AWS API Gateway と Rails での認証・ルーティング・レート制限の設計。
Database per Service パターンの設計と実装。Aurora、DynamoDB の使い分け、データ整合性の考え方、CQRS パターンの導入。
マイクロサービス環境での分散トランザクション管理。Choreography と Orchestration の2つのサーガパターンを Rails + AWS Step Functions で実装する。
EventBridge、SNS/SQS を使ったイベント駆動アーキテクチャの設計と実装。ドメインイベントの設計とサービス間の疎結合を実現する。
ECS Service Connect と AWS App Mesh を使ったサービスディスカバリの実装。ロードバランシング、ヘルスチェック、サーキットブレーカーの設定。
Docker コンテナ化と AWS ECS/Fargate でのデプロイ自動化。GitHub Actions CI/CD パイプラインと Blue/Green デプロイの実装。
分散トレーシング、メトリクス、ログの三本柱で構成される可観測性の設計。AWS X-Ray、CloudWatch、OpenTelemetry を Rails に組み込む実装例。
コントラクトテスト(Consumer-Driven Contracts)、統合テスト、E2Eテストを組み合わせたマイクロサービスのテスト戦略。Pact を使った実装例。
ShopNovaのマイクロサービス移行を振り返る。成果と代償、いつマイクロサービスを選ぶべきか、モノリスの価値を再評価する。