Amazon Aurora DSQLを検討してみた
はじめに
個人開発にLambdaとRDSを使用しています。RDSを使用するためには、VPCの構築が必要です。
その場合、LambdaをVPC内で動かす必要があり、VPCから外部へ通信するにはNAT GatewayやVPCエンドポイントなどが必要になります。
一方、NAT Gatewayは個人開発には高額です。アクセスがほとんどなくても月額約7,000円かかるため、この費用負担を減らしたいと考えました。
AWSにはサーバレスでSQLを使用できるサービスがありました。それがAurora DSQLです。DynamoDBと同じように使用したぶんだけ課金されるサービスです。これで費用負担が減ると期待しました。
先に結論
RDSをDSQLに移行することは機能面で見送りました。
DSQLは外部キーを使用できません。現状のシステムでは外部キーを多用しているため、アプリケーションの改修が必要になり、単純には移行できないことが分かりました。将来的に、外部キーを使用できるようになることを期待しています。
結論はすぐに出ましたが、せっかく調べたので以下に記録します。
Aurora DSQLとは
Amazon Aurora DSQLは、AWSが提供するサーバーレス分散SQLデータベースです。PostgreSQL互換でありながら、従来のPostgreSQLとは大きく異なるアーキテクチャを採用しています。
主な特徴
- 事実上無制限のスケール: ワークロード需要に応じて自動スケーリング
- 高可用性: 単一リージョンで99.99%、マルチリージョンで99.999%
- PostgreSQL互換: 既存のPostgreSQLアプリケーションとの高い互換性
- ゼロインフラ管理: 完全サーバーレス、パッチ適用や容量計画が不要
- マルチリージョン対応: アクティブ/アクティブ構成でグローバル展開
個人開発での課題とDSQLへの期待
従来のLambda + RDS構成の問題点
個人開発でLambdaとRDSを組み合わせる場合、以下のような課題に直面していました:
VPC関連のコスト
- NAT Gateway: 月額約7,000円
- VPCエンドポイント: サービスごとに追加費用
- データ転送料: VPC内外の通信で発生
設計・構築・運用の複雑さ
- VPCのサブネット設計
- セキュリティグループの管理
- RDSのバックアップ・メンテナンス
Aurora DSQLで解決できると期待したこと
Aurora DSQLを採用することで、とくにコストの課題を解決できるかもと考えました。
コスト最適化
ざっとこんな感じで考えました。DSQLは続きで計算してみます。(1ドル=150円)
| 項目 | 従来構成(月額) | Aurora DSQL |
|---|---|---|
| データベース | RDS(db.t3.micro):約2,000円 | 使用した分だけの従量課金 |
| NAT Gateway | 約7,000円 | 不要(コストなし) |
| VPCエンドポイント | 約1,000円(ざっくり) | 不要(コストなし) |
| アイドル時 | 課金あり | 課金なし |
| 合計 | 約10,000円 | 従量課金のみ |
移行検討のポイント
コスト試算
個人開発の典型的な使用パターンで試算してみました。
ただし、このトラフィック量は将来への期待も込めた数字です。現状では、1日30リクエストほどあれば十分です。
月間トラフィック想定
- API呼び出し: 10万回/月
- データ容量: 1GB
- データ転送: 5GB
Aurora DSQL料金体系
| 項目 | 料金 |
|---|---|
| 読み取り | $0.30 per million read units |
| 書き込み | $0.75 per million write units |
| ストレージ | $0.20 per GB/月 |
| データ転送 | $0.02 per GB |
コスト比較(すべて書き込みの場合)
前提:1 API呼び出し = 1 write unitと仮定
| コスト項目 | 計算式 | Aurora DSQL | 従来構成 |
|---|---|---|---|
| データベース処理 | $0.75 × 0.1 million | $0.075 (約11円) | 約2,000円 |
| ストレージ | $0.20 × 1GB | $0.20 (約30円) | - |
| データ転送 | $0.02 × 5GB | $0.10 (約15円) | - |
| NAT Gateway | - | 不要 | 約7,000円 |
| VPCエンドポイント | - | 不要 | 約1,000円 |
| 月額合計 | - | 約$0.375 (約56円) | 約10,000円 |
上記のように、大幅なコスト削減が期待できます。ただし、想定よりも安いため、前提条件はさらに精査する必要があります。
まとめ・今後の展望
検討結果
Aurora DSQLは魅力的なサーバーレスデータベースサービスですが、現時点では以下の理由で移行を見送りました。
- 外部キー制約が未サポート: 既存システムが外部キーに依存しているため、単純移行は困難
- アプリケーション改修のコスト: データ整合性をアプリケーション層で担保する必要があり、開発コストが増大(リレーション使いたいからRDBを使っているのに、使えないなら意味ないじゃんって思う)
一方で、コスト面では以下のメリットが確認できました。
- 従来構成の約10,000円/月から、約56円/月(書き込み100%想定)への大幅削減が期待できる
- VPC関連コスト(NAT Gateway、VPCエンドポイント)が不要
- アイドル時の課金がなく、完全従量課金で無駄がない
今後の展望
以下の状況になれば、再度移行を検討する予定です。
- 外部キー制約のサポート: Aurora DSQLが外部キーをサポートした時点で再評価
- 新規プロジェクト: 外部キーに依存しない設計の新規サービスでは積極的に採用を検討
個人開発においては、コスト削減は重要な要素です。Aurora DSQLのような従量課金型サービスは、トラフィックの少ない個人プロジェクトにとって大きな味方になる可能性があります。
Discussion