2017 will see much growth in the adoption of microservice architecture, or simply microservices, a distinctive method of developing software systems that has grown in popularity in recent years. Defined more by the characteristics of the method of developing software applications, is almost like way one might identify the location of a black hole in space: by the behavior of the objects around it. Microservice architecture employs a host of independently deployable, small, modular services in which each service runs a unique process and communicates through a defined, lightweight mechanism to serve a business goal.
Microservices architecture is flexible and resilient. The services themselves are simple, by focusing on doing only one task makes them easier to test. Each service can be built with the best suited technologies and tools present at the time, so in the event of an upgrade, developers don’t have to be stuck with an early choice of technology for the rest of the project. This allows much more space to move and experiment. The benefits don’t stop there; microservices provide fault isolation so that in the event that a service goes down, parts that directly depend on it will leave the other parts able to function.
Common drawbacks of the architecture, you’ll hear developers describe on forums like Reddit Microservices: That this technology is not for the novice, asserting that substantial DevOps skills are required to make it successful. It’s also commonly mentioned that Microservices creates significant operations overhead. In a post by Benjamin Wootton, CTO of Contino consultancy, who specialize in applying DevOps and Continuous Delivery to software delivery projects, Wootton explains that operating and orchestrating all these services can be a daunting task.
“Productizing all of this needs high quality monitoring and operations infrastructure. Keeping an application server running can be a full time job, but we now have to ensure that tens or even hundreds of processes stay up, don’t run out of disk space, don’t deadlock, stay performant.”
Professionals in the space also commonly assert that the architecture makes asynchronicity and testability, challenging. Wootton warns users:
“Microservices are not a free lunch! I am currently involved in architecting a system based around Microservices, and whilst the individual services are very simple, a lot of complexity exists at a higher level level in terms of managing these services and orchestrating business processes throughout them. Microservices one of these ideas that are nice in practice, but all manner of complexity comes out when it meets reality.”