Microservices are no free lunch

With all the advantages mentioned previously, as described in http://highscalability.com/blog/2014/4/8/microservices-not-a-free-lunch.html by Benjamin Wootton (https://twitter.com/benjaminwootton), CTO of Contino (http://contino.co.uk/), without enough DevOps maturity and developer awareness of the difficulties encountered in a distributed system, microservices will not be worthwhile for a business. Even though it is slightly old, the warnings mentioned in the article still hold.

Many organizations that promote microservices now, such as Amazon, Netflix, and eBay, had monolithic applications generating boatloads of money for years before they started migrating toward microservices. Having a business driver is the number one requirement for thinking about microservices.

Microservices require a high degree of software developmental maturity for it to be implemented correctly. Architects who understand the domain very well have to follow domain-driven design principles to ensure that each service is bounded and cohesive.

Developers must be aware of deployment issues, such as the backward compatibility of their services, and have to build semantic versioning in their service. Automated tests, including contract tests, are crucial to ensure that the services don't break running systems. Services should be developed in a cloud native fashion that includes retries while trying to connect to dependent services.

CI/CD tools must be present that build and deploy the integrated solution continuously. The infrastructure to create environments on demand and maintain them is required for continuous delivery. Enough skill to automate environment setup to ensure that automated tests can be run reliably is required.

Running distributed systems is hard. Pathological failures can occur anywhere (application, network, storage, memory), and with systems running independently it would be very hard to set up and diagnose.

Debugging asynchronous systems is not an easy skill without the right tools. Operators with maturity are required that can correlate events in logs present in multiple locations.

As long as you are aware of the challenges, microservices can be implemented in any organization. The key idea is to get both top and bottom buy-in with realistic expectations. Then you can implement it in stages with non-critical, but highly visible, services.

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset