Open4

DynamoDB と Clean Architecture の Repository について

Clean Archtectureでは、関心の分離のために外部サービスからのデータ取得、データ格納はInterface -> Gateway -> Repositoryの中にまとめることが一般的であるはず。
DynamoDBもこの考えに従って、Repositoryに処理をまとめているのだが、如何せんテーブルを結合して検索ができないため、Repositoryの単位がDynamoDBのテーブルと一致する形になってしまいがちな気がする。

そうすると、EntityのModelと乖離が生まれてきてしまい、結局はただCreateしたいだけでも、Usecase内で色々ごちゃごちゃとRepositoryを呼ばなくてはならないことが起きてしまった。

このときに、Repository内で諦めて複数のテーブルに複数回のリクエストを書く形で、EntityのModelとRepositoryが一致するようにするべきなのだろうか。
それとも、Serviceレイヤーみたいに1階層間に挟んでModelとDynamoDBのテーブル構造の差分を吸収する層として役割を持たせるべきなのだろうか。

RDBとの互換を考えるとRepository内で諦めて複数のテーブルに複数回のリクエストを書くような構造にした方が後々良いのかもしれない。

ログインするとコメントできます