How to kill off evil monoliths
We all know the pitfalls of monolithic applications. But is there a viable alternative? At the JAX London 2014, keynote speaker Chris Richardson showed us the potential of microservice systems.
“Because all your eggs are in one basket,” Cloud Foundry founder Chris Richardson tells his keynote audience on the final day of the JAX London conference. He’s talking about the problem of monolithic applications, a major issue for almost every development team in successful enterprises.
Hands shoot up when Richardson asks which audience members have worked on monoliths. Only one solitary hand remains held up when he then asks “Was it fun?”
The slow and stubborn monolith
Most developers will already know the pains of the monolith. It slows down your IDE, as well as your container, which in turn slows down your productivity.
As Richardson explains, there’s also a huge amount of communication and co-ordination required to rewrite and update the application. And to top it all off, there’s lasting degree of frustration among the developer team that is forced to live with an enterprise’s decisions from years ago. Essentially it means working with vast amounts of legacy code, because there’s no alternative. Or is there?
Does it make sense to split up your monolith into several partitions? It’s a daunting task, even for larger developer teams, but microservice systems have plenty of long-term advantages, Richardson explains.
As Amazon, Ebay and Netflix have shown that by splitting their monoliths up into as many as 700 different types of services. they can make the individual components of their system faster to deploy and easier to develop. Although this can microservice systems can be increasingly complex, leading, in the worst-case scenario, to several smaller monoliths that need the same amount of attention.
The real question is, when do you need microservice systems? Any “two-pizza-box” startup that’s still busy establishing customers (and a fixed business model) won’t have the resources or the longevity to correctly split up their systems into different parts. Then again, if their business grows, splitting a backend up into microservices at a later point can be too daunting a task.