← 構成図一覧に戻る

Distributed Low-Latency CQRS Architecture

技術ドメイン収集 Distributed DB / CQRS 生成日: 2026-03-27
Distributed Low-Latency CQRS Architecture
クリックで拡大表示
IaCソースコードを見る

凡例

Write — コマンドパス(書き込み)
Read — クエリパス(読み込み・DAX)
CDC — イベント処理(DynamoDB Streams → Kinesis)
Columnar — 列指向DBクエリ
Global — グローバル分散(Global Tables)

概要

CQRS(Command Query Responsibility Segregation)パターンを採用し、書き込みと読み込みを分離した低レイテンシー分散アーキテクチャの参照構成図です。

書き込み側はDynamoDBをプライマリストアとし、CDC(Change Data Capture)でDynamoDB Streams → Kinesis経由で列指向DB(Amazon Keyspaces / Redshift)にリアルタイム同期します。読み込み側はDAX(DynamoDB Accelerator)によるマイクロ秒レイテンシーのホットリードと、Keyspaces/Redshiftによる分析クエリの2パスを提供します。

DynamoDB Global Tablesによるマルチリージョンレプリケーションと、Route 53のレイテンシーベースルーティングにより、グローバルに低レイテンシーなアクセスを実現します。

データフロー

Write コマンドパス(書き込み)

App Client CloudFront API Gateway Command Handler (Lambda) DynamoDB (Primary)

Read クエリパス(ホットリード)

App Client API Gateway Query Handler (Lambda) DAX (In-Memory, <1ms) DynamoDB

CDC イベント処理(リアルタイム同期)

DynamoDB Streams Kinesis Data Streams Sync Processor (Lambda) Keyspaces / Redshift

Columnar 列指向クエリ

分析クエリ Keyspaces (Wide Column)
集計・BI Redshift (Columnar DWH)

Global グローバル分散

DynamoDB (Primary) Global Tables (Multi-Region) Route 53 (Latency Routing)

レイヤー構成

レイヤーAWSサービス用途
エッジCloudFront + API GatewayグローバルCDN + APIルーティング
コマンド処理Lambda (Command Handler)書き込みリクエストの処理・バリデーション
プライマリストアDynamoDB低レイテンシーKey-Valueストア。単一桁ミリ秒の書き込み
キャッシュDAX (DynamoDB Accelerator)マイクロ秒レイテンシーのインメモリキャッシュ
セッションキャッシュElastiCache for Redisセッション管理・集計キャッシュ
CDCDynamoDB Streams変更データキャプチャ(リアルタイム)
イベント処理Kinesis Data Streams + LambdaCDC イベントのファンアウト・変換・同期
列指向DB(ワイドカラム)Amazon Keyspaces (Cassandra)分散ワイドカラムストア。時系列・パーティション集約クエリ
列指向DB(DWH)Amazon Redshiftカラムナストレージによる高速集計・分析クエリ
グローバル複製DynamoDB Global Tablesマルチリージョン自動レプリケーション
ルーティングRoute 53 (Latency Routing)レイテンシーベースの最寄りリージョンルーティング
可観測性CloudWatch + X-Rayメトリクス監視 + 分散トレーシング

レイテンシー特性

アクセスパターン経路レイテンシー
ホットリード(キャッシュヒット)API GW → Lambda → DAX< 1 ms
ホットリード(キャッシュミス)API GW → Lambda → DAX → DynamoDB1-5 ms
書き込みAPI GW → Lambda → DynamoDB5-10 ms
ワイドカラムクエリKeyspaces (Cassandra)5-10 ms
分析クエリRedshift (Columnar)100ms-数秒
CDC同期遅延Streams → Kinesis → Lambda1-3 秒

コスト概算

ap-northeast-1 (東京) リージョン基準の月額概算。実際の費用は利用量により変動します。為替レート: $1 = 150円

サービス構成Dev (月額)Prod (月額)
API GatewayCommand / Query API$3-10 (450-1,500円)$10-50 (1,500-7,500円)
LambdaCommand / Query ハンドラ$0-5 (0-750円)$5-50 (750-7,500円)
DynamoDBCommand Store (On-Demand)$5-20 (750-3,000円)$20-100 (3,000-15,000円)
DAXDynamoDBキャッシュ$30-40 (4,500-6,000円)$60-120 (9,000-18,000円)
ElastiCache (Redis)Query Side キャッシュ$25-50 (3,750-7,500円)$90-180 (13,500-27,000円)
DynamoDB Streamsイベントソース$0-5 (0-750円)$5-20 (750-3,000円)
Kinesis Data Streamsイベントパイプライン (1-2 shard)$15-30 (2,250-4,500円)$30-60 (4,500-9,000円)
Amazon KeyspacesRead Model Store$10-30 (1,500-4,500円)$30-100 (4,500-15,000円)
Redshift分析用 (Serverless)$50-150 (7,500-22,500円)$200-500 (30,000-75,000円)
CloudFrontエッジキャッシュ$1-5 (150-750円)$20-50 (3,000-7,500円)
Route 53DNS + ヘルスチェック$1-2 (150-300円)$2-5 (300-750円)
CloudWatch + X-Ray監視 + トレーシング$10-20 (1,500-3,000円)$20-40 (3,000-6,000円)
合計$150-367 (約22,500-55,050円)$492-1,275 (約73,800-191,250円)

前提条件: Dev=100万リクエスト/月、Prod=1,000万リクエスト/月。CQRS Read/Write比率は8:2想定。DynamoDB Global Tables使用時はリージョンあたり追加。

コスト最適化: DAXキャッシュヒット率を80%以上に維持しDynamoDB読取コスト削減。Redshiftは業務時間帯のみ利用。DynamoDB Reserved Capacityで最大75%削減。

設計のポイント

CQRSによる書き込み/読み込みの分離: コマンド(書き込み)とクエリ(読み込み)を別々のデータストアで最適化。書き込みはDynamoDBで一貫性を保証し、読み込みはDAX/Keyspaces/Redshiftで用途に応じた最適なレイテンシーを提供します。

列指向DBの使い分け: Amazon Keyspaces(Cassandra互換)はワイドカラム型で、パーティションキーによる高速な範囲クエリに適します。Redshiftはカラムナストレージで大量データの集計・分析に最適。用途に応じて2つの列指向DBを使い分けることで、OLTPとOLAPの両方をカバーします。

DynamoDB Streams によるリアルタイムCDC: プライマリストア(DynamoDB)への書き込みが即座にStreamsに流れ、Kinesis経由でKeyspaces/Redshiftに同期。結果整合性モデルで1-3秒のラグはありますが、ほぼリアルタイムに列指向DB側のデータが更新されます。

Global Tables + Latency Routing: DynamoDB Global Tablesで複数リージョンに自動レプリケーション。Route 53のレイテンシーベースルーティングと組み合わせることで、ユーザーの地理的位置に関わらず低レイテンシーを実現します。

Powered by AWS Diagram MCP Server