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!