mybook
13

マイクロサービスアーキテクチャ実践

モノリスからマイクロサービスへの移行戦略と Rails + AWS での実装パターン

1
プロローグ — モノリスが悲鳴を上げた日

急成長するECサイトのモノリスRailsアプリが限界を迎えた日。テックリードのミサキが直面した現実から物語は始まる。

2
マイクロサービスとは何か — 定義と原則

独立デプロイと単一責任を軸に、マイクロサービスの本質を定義する。モノリスとの違いを明確にし、いつ採用すべきかを考える。

3
サービス境界の見つけ方 — ドメインで切る

DDD(ドメイン駆動設計)の境界づけられたコンテキストを使って、マイクロサービスの正しい境界を発見する方法を学ぶ。

4
サービス間通信 — 同期と非同期

REST、gRPC、メッセージキューの使い分け。サービス間通信の設計パターンとRails + AWS SQS/SNSでの実装例。

5
API ゲートウェイパターン — 入口を統一する

API Gateway と BFF(Backend for Frontend)パターンの実装。AWS API Gateway と Rails での認証・ルーティング・レート制限の設計。

6
データ管理 — サービスごとのデータベース

Database per Service パターンの設計と実装。Aurora、DynamoDB の使い分け、データ整合性の考え方、CQRS パターンの導入。

7
サーガパターン — 分散トランザクション

マイクロサービス環境での分散トランザクション管理。Choreography と Orchestration の2つのサーガパターンを Rails + AWS Step Functions で実装する。

8
イベント駆動アーキテクチャ — 疎結合の実現

EventBridge、SNS/SQS を使ったイベント駆動アーキテクチャの設計と実装。ドメインイベントの設計とサービス間の疎結合を実現する。

9
サービスディスカバリ — サービスを見つける

ECS Service Connect と AWS App Mesh を使ったサービスディスカバリの実装。ロードバランシング、ヘルスチェック、サーキットブレーカーの設定。

10
コンテナとオーケストレーション — デプロイの自動化

Docker コンテナ化と AWS ECS/Fargate でのデプロイ自動化。GitHub Actions CI/CD パイプラインと Blue/Green デプロイの実装。

11
可観測性 — マイクロサービスの監視

分散トレーシング、メトリクス、ログの三本柱で構成される可観測性の設計。AWS X-Ray、CloudWatch、OpenTelemetry を Rails に組み込む実装例。

12
テスト戦略 — マイクロサービスのテスト

コントラクトテスト(Consumer-Driven Contracts)、統合テスト、E2Eテストを組み合わせたマイクロサービスのテスト戦略。Pact を使った実装例。

13
エピローグ — マイクロサービスは銀の弾丸ではない

ShopNovaのマイクロサービス移行を振り返る。成果と代償、いつマイクロサービスを選ぶべきか、モノリスの価値を再評価する。