マイクロサービスとドメイン駆動設計

Eric Evansの著書『ドメイン駆動設計』はオブジェクト指向設計の古典である。

一般的には『ドメイン駆動設計』で言うところの「境界づけられたコンテキスト(Bounded Context)」でマイクロサービスのサービス分割をすべしと言われている。

「境界づけられたコンテキスト」の定義は、『ドメイン駆動設計』によると大体以下の通りである。

チーム編成、アプリケーションに特有の部分が持つ用途、コードベースやデータベーススキーマなどの物理的な表現で設定される境界で規定されるコンテキストであり、その境界内ではモデルを厳密に一貫性のあるものに保つ必要があり、ユビキタス言語が共有される。

他のコンテキストと疎結合で、コンテキスト内では凝集し、一貫しているという意味では、確かにマイクロサービスのサービスのコンセプトと一致しており、分割方針としては妥当と思える。

 

Eric Evansはいわゆる業務ロジック開発者こそ重要であると主張し、アーキテクトばかりが重要視される傾向に批判的である。だが、業務ロジック開発にもそこそこハイレベルな技術者が必要となる点がドメイン駆動設計の弱点でもあると思う。ドメインモデリングをしながら、アジャイルにモデル、ソースを改善していく作業が玉石混交の大規模エンタープライズアプリ開発で可能なのかという問題である。

業務ロジック開発者のスキルレベルにばらつきがある場合、ドメイン設計がうまくいかない可能性が高い。そうなると、世の開発フレームワークがそうであるように、業務ロジックを手続き的(Transaction Script)に実装する方針の方が安全ということになる。

現実の「日本国内の」開発ではドメイン駆動設計はある程度ハイレベルな技術者で固めて作れるアプリに適用対象が限定されるのではないだろうか。