Several questions:
- What is essential stuff that somebody should know about DDD, like main idea(s)?
- What is good to know about DDD when it comes to microservices?
I started to read book building microservices and DDD was mentioned, specifically three terms: ubiquitous language, aggregate and bounded context. What I remember from reading is that with regards to ubiquitous language, language that is used with non-developers should be same in the code and between the programmers.
For aggregate this is got from reading and what I noted
Aggregate could be considered as a representation of the real domain concept.
We want to treat aggregates as self-contained units; we want to ensure that the code that handles the state transitions of an aggregate are grouped together, along with the state itself. So one aggregate should be managed by one microservice, although a single microservice might own management of multiple aggregates.
For boundary context
A bounded context typically represents a larger organizational boundary.
It is better that each microservice handles a particular entity separately, so as not to share identity.
Sometimes it is good to chunk up our architecture, meaning break bounded context into several microservices, to simplify testing.