Microservices architecture is not a silver bullet when it comes to developing software. Everything has its pros and cons. I would like to describe it from the perspective of comparing and contrasting the tradeoffs. There is a significant cost of building a distributed system however, One of the biggest benefits is separation of concerns. Lack of proper service boundaries makes it harder to write tightly coupled code and adversely impacts the scalability of your system.
Eg: A company like Amazon that does business globally and clearly has spikes in order activity around Christmas, Holi or Dusshera for instance. Which makes it hard for them to manage their system in a monolithic deployment, it would be next to impossible. They have managed the cost of distribution in order to leverage a clear benefit of doing business globally and under a highly available model.
One of the other dichotomies to evaluate in microservices is deployment complexity. We have discussed the ability to scale in this architecture style. However, that ability to scale increases the complexity of our deployments. Deployments are always a hard part of software delivery. But in microservices implementation, there are just so many moving parts that the complexity increases dramatically. We've also talked about ways to solve this complexity through continuous delivery.
The benefits of scale and reduce waste over that scale can be measured and the financial benefits often can be used to built out a path and increase the savings even more. The final trade-off would be the ability to have diversity in your technology stack. Microservices could be implemented in a heterogeneous model, but this ability to write your services in any technology comes with real operational costs. From my experiences, it is often better in these cases to embrace a smaller set of technologies to improve your ability to manage the operations. I really hope that I'm imparting in you a real world the right judgment to implement microservices.
Kommentare