Let’s imagine that you are developing a microservices-based application and you need to implement a major new feature.
For example, your application consists of two services - Order Service
and Customer Service
- and you want to implement Coupon Management
:
The Coupon Management
subdomain needs to be part of a service.
But which service?
You might automatically implement Coupon Management
as a new Coupon Service
.
After all your application has a MICROservice architecture, which means lots of services, right?
The trouble, however, with blindly adding new services, is that it often leads to the More the Merrier anti-pattern.
An overly complex architecture that’s difficult to maintain and, perhaps, brittle.
Rather than blindly adding new services, a much better approach is brainstorm various possible designs and evaluate them using the dark energy and dark matter forces.
For example, there are three possible ways to implement Coupon Management
:
Coupon Service
Order Service
Customer Service
Each of these three options has different trade-offs with respect to the dark energy and dark matter forces.
A standalone Coupon Service
might improve team autonomy but it makes the createOrder()
operation, which redeems coupons more complex.
Alternatively, implementing Coupon Management
within the Order Service
simplifies createOrder()
but might reduce team autonomy.
It’s your job as the architect to evaluate and compare the designs and pick the best (or least-worst) one.
To learn more, take a look at this presentation that I gave in January 2023 at the Melbourne Platform Engineering meetup.
I provide consulting and training.
Microservices.io is brought to you by Chris Richardson. Experienced software architect, author of POJOs in Action, the creator of the original CloudFoundry.com, and the author of Microservices patterns.
Chris helps clients around the world adopt the microservice architecture through consulting engagements, and training workshops.
Got a specific microservice architecture-related question? For example:
Consider signing up for a two hour, highly focussed, consulting session.
My virtual bootcamp, distributed data patterns in a microservice architecture, is now open for enrollment!
It covers the key distributed data management patterns including Saga, API Composition, and CQRS.
It consists of video lectures, code labs, and a weekly ask-me-anything video conference repeated in multiple timezones.
The regular price is $395/person but use coupon KGBJMRAM to sign up for $195 (valid until March 8th, 2023). There are deeper discounts for buying multiple seats.
Take a look at my Manning LiveProject that teaches you how to develop a service template and microservice chassis.
Chris offers numerous resources for learning the microservice architecture.
Chris teaches comprehensive workshops, training classes and bootcamps for executives, architects and developers to help your organization use microservices effectively.
Avoid the pitfalls of adopting microservices and learn essential topics, such as service decomposition and design and how to refactor a monolith to microservices.
Delivered in-person and remotely.
Want to see an example? Check out Chris Richardson's example applications. See code
Engage Chris to create a microservices adoption roadmap and help you define your microservice architecture,
Use the Eventuate.io platform to tackle distributed data management challenges in your microservices architecture.
Eventuate is Chris's latest startup. It makes it easy to use the Saga pattern to manage transactions and the CQRS pattern to implement queries.
Engage Chris to conduct an architectural assessment.
Note: tagging is work-in-process
anti-patterns · application api · application architecture · architecting · architecture documentation · assemblage · dark energy and dark matter · deployment · design-time coupling · development · devops · docker · glossary · hexagonal architecture · implementing commands · implementing queries · inter-service communication · loose coupling · microservice architecture · microservice chassis · microservices adoption · microservicesio updates · multi-architecture docker images · observability · pattern · refactoring to microservices · resilience · sagas · security · service api · service collaboration · service design · service discovery · service granularity · service template · software delivery metrics · success triangle · team topologies · transaction management · transactional messaging