⭐️DB と直接接続か、抽象化層の API を挟むか、メリデメなど

以下のどちらにするかという話。

  1. Client -> REST API -> DB
  2. 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 も落ちる
      • 接続アプリ数が増えるのでレイテンシが悪化する可能性がある