Picking Apart the Microservice
Microservices celebrates its tenth birthday this year, and now is as good a time as any to figure out what value it has brought to the world of IT and what work still needs to be done. And this is what Charles Humble — who by day is the editor-in-chief at IT consultancy Container Solutions — has done in a new feature article posted on The New Stack this week.
If today we look upon the idea of running a monolithic system, (a “monolith”) as a negative, we have microservices to blame. The concept has brought us much in terms of developer efficiency. Microservices allow developers to deploy code more rapidly, “favoring the replaceability of components over their maintainability,” Humble writes, and so many organizations have built out loosely-coupled systems composed of dozens or hundreds of microservices, maintained by small, autonomous teams and loosely coupled systems.
It must have been an idea whose time was coming. As Humble pointed out, Netflix, Amazon, Google and eBay had all pretty much arrived at this same architectural pattern at the same time.
But if microservices were successful, they also brought their own inherent complexities — the complexities inherent in working in any distributed system. In particular, there is the complexity that comes with Kubernetes, the open source container orchestration engine that has become almost synonymous with the idea of microservices. The hope has been that the application developers shouldn’t have to deal with Kubernetes at all, but this hasn’t been proven to be the case.
“It’s worth noting that the complexity isn’t just hidden under the hood. It’s spilling out into the interface and impacting users,” Container Solutions Chief Scientist Adrian Mouat said of Kubernetes. His views are echoed by industry consultant Sam Newman, who said “Kubernetes is not developer-friendly. It stuns me that we still don’t have a good, reliable, Heroku-like abstraction that is widely used on top of Kubernetes.”
True, there are many efforts to abstract away the complexities of Kubernetes for the developers, the Upbound universal control plane is one such effort. But will, as Mouat argues in the post, a competing technology come along to offer a simpler solution to managing microservices altogether?
You’ll have to keep reading The New Stack to find out!