集約ルートであるIllustrationエンティティがあるとします。そのエンティティにはアートワークに関するデータが含まれており、アートワーク自体がAmazon S3に永続化されている間、SQLデータベースに永続化されます。また、アートワークの縮小版またはサムネイル版を保存したいので、さまざまなバージョンのアートワークのバイナリデータを表すために、イラストレーションと多対1の関係にあるBlobエンティティを導入しました。
ここで、Blobの永続性をどのように設計すればよいのでしょうか。Amazon S3は一種のデータベースであり(ここで真のデータベースとは何かを炎上させないでください;))、SQLとはまったく異なり、そのように抽象化する必要があると思います。つまり、リポジトリです。したがって、アートワークデータを保存できるBlobRepositoryがあります。一方、このドメインでは、Blobは絶対に集約ルートではありません。常にIllustration集約の一部として使用されます。したがって、独自のリポジトリを持つべきではありません。
では、Amazon S3は永続化テクノロジーとしてではなく、EmailSender、CurrencyConverterなどの隣にある一般的な外部サービスとして扱う必要があるのではないでしょうか。もしそうなら、私はこのサービスをどこに注入すべきですか?Illustrationエンティティメソッド、IllustrationsRepository、アプリケーションサービスレイヤーに?