
Aurora への移行を本気で検討していました。しかし結局、DynamoDB を捨てる必要はありませんでした。OpenSearch を 1 台追加するだけで、検索とマルチテナントの 2 つの課題を月額 $27 で同時に解決できました。
課題 1:DynamoDB だけでは検索要件に対応できない
Amplify Gen2 で構築した不動産テックプロダクトでは、プロダクトの成長とともに DynamoDB の検索の限界が顕在化しました。
・複数条件の組み合わせ検索(エリア × 価格帯 × 面積 × 築年数)に対応できない。1,000 件取得して 10 件に絞る非効率な処理に
・全文検索(キーワード検索)が不可能
・ソート順の切り替えに都度 GSI の追加が必要
課題 2:マルチテナントのコスト爆発
複数のプロダクトが同じ AWS アカウント上で稼働し、それぞれ staging / prod / sandbox 環境を持っています。検索エンジンをプロダクトや環境ごとに個別に立てると、複数プロダクト × 複数環境でインスタンスが増殖。Amplify の sandbox は開発者ごとに環境が立ち上がるため、5 人チームなら sandbox だけで 10 インスタンス。月額 $432 に膨れ上がる計算でした。
解決策:OpenSearch 1 台で検索もマルチテナントも解決
Aurora Serverless v2 への移行も検討しましたが、DynamoDB + Amplify の開発体験を維持したまま、検索レイヤーだけを追加する方針を選択しました。
検索:DynamoDB Streams + Lambda + OpenSearch
既存の書き込みパスを一切変更せず、DynamoDB Streams で変更を検知し Lambda 経由で OpenSearch に同期。検索 API は OpenSearch を参照します。全文検索・複数条件フィルタ・ソート・ページネーションが 1 クエリで完結します。
マルチテナント:1 インスタンス × index 分離
1 つの OpenSearch インスタンスを全環境で共有し、index 名({project}-{env}-{entity})で論理分離。sandbox 環境では OpenSearch リソースの作成をスキップし、stg 環境の共有インスタンスを参照。これにより $432/月 になるはずだったコストが $27/月 の 1 インスタンスで収まっています。
Aurora を選ばなかった理由
・コスト:Aurora Serverless v2 は最小構成でも月額約 $60〜70。DynamoDB + OpenSearch なら約 $30〜50 で半額以下
・Aurora に移行してもマルチテナント設計は別途必要。OpenSearch なら検索とマルチテナントを index 設計だけで同時に解決できる
・Amplify の Data モデル・GraphQL API 自動生成の恩恵を維持できる
成果
【検索】
・フィルタ:2〜3 条件が限界 → 任意の条件を組み合わせ可能に
・全文検索:不可 → 日本語形態素解析に対応
・レスポンス:Scan 時は数秒 → 複雑なクエリでも 100〜200ms
【マルチテナント】
・インスタンス数:最大 16 台 → 1 台に集約
・月額コスト:最大 $432/月 → $27/月
・sandbox 起動:OpenSearch 起動待ち(数分)→ スキップ
OpenSearch 1 台で検索とマルチテナントの 2 つの課題を同時に解決。プロダクトが増えても index を追加するだけでスケールする構成です。月額 $27 でここまでできるなら、Aurora に移行する理由はありませんでした。
Kohei Aoki
CEO / Engineer
Contact
まずは、
状況を整理しませんか?
課題が曖昧でも、
検証の進め方に迷っていても、
方向性が定まっていなくても大丈夫です。
PMLは、本質探索と検証設計から、
あなたの挑戦を論理的に前に進めます。


Information Security
情報セキュリティ方針
情報セキュリティマネジメントシステム

株式会社Purpom Media Labは、IASに認定を受けているGCERTIより、ISO/IEC 27001:2022の認証を取得しています。
Privacy Policy
プライバシーポリシー
© 2025 Purpom Media Lab.