Microservices with Clojure
上QQ阅读APP看书,第一时间看更新

Domain-driven design

Ideal enterprise systems are tightly integrated and provide all business capabilities as a single unit that is optimized for a particular technology stack and hardware. Such monolithic systems often grow so complex over time that it becomes challenging to comprehend them as a single unit by a single team. Domain-driven design advocates disintegrating such systems into smaller modular components and assigning them to teams that focus on a single business capability in a bounded context (https://en.wikipedia.org/wiki/Domain-driven_design#Bounded_context). Once disintegrated, all such components are made a part of an automated continuous integration (CI) process to avoid any fragmentation. Since these components are built in isolation and often have their own data models and schema, there should be a well-defined contract to interact with the components to coordinate various business activities.

The term  Domain-driven design  was first coined by Eric J. Evans as the title of his book in 2003. In Part-IV, Evans talks about the bounded context  and the importance of continuous integration, which  forms the basis of any microservices architecture.