以下のどちらにするかという話。
- Client -> REST API -> DB
- Client -> REST API -> 抽象化 API -> DB
DB と直接接続- メリット
- 抽象化 API が落ちても REST API に影響しない
- デメリット
- DB のパスワード管理が必要
- DB のスキーマ変更があった場合に修正対応が必要(DB のスキーマ変更に弱い)
- メリット
抽象化 API と接続- メリット
- 抽象化 API という抽象化層を挟んでいるので、DB のスキーマ変更があった場合に修正が不要
- データソースが単一になる(
Single Source of Truth)- セキュリティ面でも安心
- 抽象化 API のみを参照すればいい(複数の DB と接続する必要がない)ので実装もシンプルになりそう
- DB データの加工処理やデータの取得ロジックが複数アプリで分散するのを防げる
- ex. あるデータの加工処理に変更があった場合も 抽象化 API のみを変更すれば良い
- デメリット
- 抽象化 API が落ちたら REST API も落ちる
- 接続アプリ数が増えるのでレイテンシが悪化する可能性がある
- メリット