/note/tech

クリーンアーキテクチャはマイクロサービスに適していない

クリーンアーキテクチャは巨大なモノリス的システムに柔軟性を与えるために適用するのが正しい使い方であるように思える。

その理由は、クリーンアーキテクチャが想定するシステム像は、WEBサービスではなく、システムそのものを納品するビジネスにあるように思えるからである。

例えば、DBを柔軟に差し替えることができるようにDBアクセスを抽象化するのは、ユーザー毎に製品カスタマイズをするビジネスが前提にあるように感じる。自分達で開発して自分達でサービスを提供するWEBサービスであればそこまでの柔軟性は通常要求されない。

他方、マイクロサービスは原理的に1つのシステムはコンパクトになる。コンパクトなシステムに対してクリーンアーキテクチャはオーバーエンジニアリングで、設計上の柔軟性を活かす機会が無い。つまり、無駄な複雑性だけを抱え込む形になる。

マイクロサービスのようにコンパクトなシステムは、システム自体を簡単に差し替え可能であることの方が重要で、実装の柔軟性は相対的に価値が低い。精々、ドメイン層を移植可能なように独立させておくよう配慮する程度でよいのではないか。

そのように考えると、マイクロサービスにフルセットのクリーンアーキテクチャは適しておらず、トラディショナルなMVCアーキテクチャ+サービス層で十分なのではないかという事が考えられる。