2021-09-18
Djangoのapplications
8 月から Django に触り始めて、まだフレームワーク頼みではあるのだが、ようやく Rails を外れた世界をみれている。
Rails にたぶんなくて、Django にあっていいなと思ったのはapplications の仕組み。
django では 1 つの project の中に複数の application を記述できる。 各 application は別々のサーバとして動かすこともできるし、サーバから依存される単なるモジュールとすることもできる。
適当に application を分割すれば、高凝集で疎結合な application 群から project を構成することができる。
やり方はいくらでもあるが、例えば以下のような構成がありうる。 実線で囲んだ箱が application に相当する。
いくつか補足。
- ここでサブドメインとは、コアドメインから依存されないアドホックなドメイン領域を指す
- 認可は
- リソースについて知っている必要があるのでドメインに依存する
isAuthenticated
とかつかうので認証にも依存する
- 認証は
- ドメインに依存しない
- デフォルトの認証モジュールを直接利用してもいいが、抽象化したレイヤを挟めば実装を切り替えたりできそう
- controller/usecase/domain/persistence みたいな区分とは完全に対応する訳でもないし、直交するわけでもない
- controller は主に web アプリ, API 辺りに書く
- usecases はそのインターフェース固有であれば web アプリ, API とかに書き、共通するならドメインの application に書けばいい気がする
- persistence は domain にある他、認証や、場合によっては認可にも生じそう