DDDとリソース割り当て
去年の夏前くらいにDDDまわりの勉強していた。でこのメモを書いていたので少し直して晒してみる。 前回の続編。
システムをコンテキストマップに対応するように実装することにする。
各サブコンテキストはモジュールやライブラリそしてサービスとして実装する。 システムのリリースにはコンポーネントの配置が欠かせない。 そして配置先のリソースの調達も必要となる。
ここでは、サブコンテキストをどの様にリソースに割り当てるかリソースを割り当てるのか考えてみる。 IDDD本では触れてないけどアーキテクチャを扱っているので考える対象でもあり悩む。 ここは、多分に察した内容だし具体的な話もあまりしない。
サブコンテキストの実装
サブコンテキストは実際にはコンポーネントとなる。 そしてその実装はサービス,コード,実行バイナリ,共有バイナリのどれかになる。
マイクロサービスアーキテクチャではサービスを重要視する。ただ汎用サブコンテキストなどはそれ以外を選ぶことが多い。 またサイズが複数のコンテキストであっても小さなチームで維持できるならサービス化するメリットはない。
実行バイナリ,共有バイナリは利用者のリソースに配布したり配置したりする。コードライブラリは他の提供形態から依存される。
振り返ってみる。
提供形態 | 稼動場所 | 配置方法 |
---|---|---|
サービス | インフラ | 構成管理ツール |
実行バイナリ | ユーザー端末 | マーケットプレイス,Web経由での配布 |
実行バイナリ,共有バイナリ | インフラ | 構成管理ツール |
コード | 他の提供形態の中 | ビルド |
コードはVCSのリポジトリを公開してタグを打つ。バイナリ・コンテナなどはイメージをリポジトリに配置してタグを打つ。 サービスはIaC, CaCなどで配置可能にしておく。当たり前だ。