As a Solution Architect, while kickstarting any MicroServices engagement which already started or starting new, I think, instead of thinking in Design Patterns or Domain Design Patterns, one question to ask your client leadership team is:
“Define Success or What Does Success Mean” by adapting Microservices Architecture Style.
Some of the thoughts I have are:
1. Success from a business perspective
2. Success from the technology perspective
Success – a business perspective
A. Improvement in revenue
B. Customer Experience with more and flexible business capabilities
Success – a technology perspective
A. Performance
a) in on-boarding new capabilities “technically” by the business team without disrupting the current capabilities;
b) scalable business processes execution
c) low-cost operational overhead 1. source code multiple Git repo’s 2. test data isolation 3. CI/CD pipelines per each repo 4. producer-consumer boilerplate code duplication across the queue based source code repo’s 5. common or shared Java/Python/NodeJS code libraries
d) Services Environment (runtime) isolation 1. for better visibility on runtime metrics (CPU, Memory, Network bandwidth 2. queues publish & consumption 3. Auto-scaling of services based on the respective service load
B. User Experience