Questions to Ask Before Choosing Microservices
As popular as microservices are, they aren't always the right choice for the job. Let's discuss some questions to ask before choosing your architecture.
Join the DZone community and get the full member experience.Join For Free
One of the companies I worked with had over 300 microservices, all set up with CI/CD pipelines, Consul service discovery, and decoupled system integration using messaging and queues. I'm now working with a mid-size company where I've introduced a few microservices, but I've since then started to wonder: When should I and when shouldn't I go down this path? I don't have a definitive answer here, so I'm just going to throw a few questions and for us to discuss.
Is my business suitable for more monolithic or distributed systems? Think product portfolio and revenue streams: The more complex your current business model is, the more you are probably leaning towards distributed systems.
Will business logic get updated later on? Do I need a centralized logic engine or data mapping engine (e.g. Dell BOOMI)?
If distributed systems are the way to go, do I use microservices or modularized applications?
How frequently is the data updated? How frequently is the data retrieved? Do I need the data to be eventually consistent or always consistent? This will affect more than just your application structure — it will affect how you implement caching as well.
Is service discovery going to be a problem? Will it be a messy mesh of endpoints to manage and maintain?
Are my devs comfortable with the structure we are heading to?
Is there an integration expert/architect that can lead the project and follow through?
What if one of the service endpoints fail? How do I recover? How do I monitor all these effectively?
How do I manage security settings and authentication across all the services?
And once you've answered all these questions, you probably also want to make a calculation on the cost side — this should include both infrastructure and resource costs (your dev team, your DevOps team, training, and ongoing maintenance).
Let me know what you think!
Opinions expressed by DZone contributors are their own.