Welcome to this three part series on microservices. I talk about this a lot with my customers and I thought it was about time to put a few blog articles out around it.
Microservices are a popular choice in a marketplace where systems are becoming increasingly more distributed. Getting it right is difficult though. If you succeed, however, you can reap some significant benefits from implementing Microservices.
Maintainability & Single Responsibility Principle
One service does a single thing. This – at least in theory – makes each piece of functionality your organisation is producing a lot more nimble, flexible, and easier to maintain.
Failure in one service does not impact other services. (In a perfect world anyway)
In a typical monolithic application errors in one service/module can and will impact other modules/functionality.
Every service can use its own hosting method. This has potential benefits in terms of performance, cost, and – obviously – physical isolation. It’s difficult to distribute a monolith in this way. If you can ensure that you deploy your services densely (while maintaining the isolation) you can both maintain cost benefits and allow for independent scale.
Easy to deploy, low impact on other services
If services are fully isolated, then their deployment does not affect other services and they can evolve independently.
Because of the isolation, deployment becomes easier. (as each service can handle this separately)
Freedom to choose technology
Microservices architectures allow you to choose technology that is best suited for a particular functionality. You can mix architectures, deployment tools, and programming languages, if that gives you an advantage. (either in terms of your lead time, competitiveness, or deployment frequency)