7/1

DDDで外部サービスを使う場合に、どのレイヤにいれるか迷ったのでおしえていただけますでしょうか。

1. awsのs3にあるリソースの添付ファイルを保存する処理。
domain層でinterfaceを定義して(domainServiceとか)、s3に保存する処理を書こうかと考えているが、良さそうでしょうか?

2. 外部認証サービスを使っていて、該当userのpropertyを更新する処理。
外部認証サービスをdatabase的に使っています、ただし、外部サービスから取得した値は、扱うコンテキストの中では、value objectとして扱うべき、外部のcontextかなと思っています。

更新時は、repositoryとして永続化処理を書く、
かたや、
取得時は、domain層でinterfaceを定義して(domainServiceとか)、内部のcontextにmappingさせるように使おうかと思っていますが、良さそうでしょうか?

1.ドメイン層にインターフェイスでインフラ層に実装、それでいいと思います! 2.良いのではないでしょうか! 一つあるとしたら、もしその実装を進めてこんがらがるとしたら、内部で永続化するモデルと外部の認証オブジェクトは分けてしまう、というのも一つの選択肢です。ユーザー登録時には明示的にその二つのモデルに更新をかけに行く、という形になります。 これはもちろんメリデメがあって、デメリットとしては2つの密接なオブジェクトの裏側で外部サービスを使ってることを隠蔽できなくなる一方、メリットとしては責務が切り分けらて凝集度が高まり、保守しやすくなる可能性があります。特に、更新時は内部のDBのみ更新、としているのであればこれはモデルを分けてしまった方がわかりやすいかもしれません。 今の方針でも問題ないと思いますが、困ったときに選択肢として検討してみてください!

スポンサーリンク

質問はquerie.meからお願いします。さんになんでも質問しよう!

質問

スタンプ

利用できるスタンプはありません。

スポンサーリンク

質問する

過去に答えた質問

スポンサーリンク