Cloud without Microservices is a broken promise.
I’ve been doing transformation with Enterprise Clouds for a while now, and I’m starting to see a concerning trend in how Cloud strategy is being translated for Exec’s and budget holders. Cloud is being sold as being about infrastructure – it’s being powerpointed and sold upwards as being a fix for the cost of running enterprise grade infrastructure. All those load balancers, switches, firewalls, routers and things that cost an arm and a leg and don’t do anything other than facilitate delivery of an App. Well that view is wrong. Cloud isn’t about infrastructure transformation. Cloud is about application transformation, and here’s why.
Back in the day, developers wrote applications. They ran on a server, and then other people saw them and also wanted to use them, and so they ended up running on two servers. And then people didn’t’ want to have two instances of an application running, so they started using infrastructure technologies to solve a scalability issue that came about because applications didn’t scale natively. The sprawl of Infrastructure grew and grew, and it was always about allowing applications to make better use of the hardware, and grow bigger to service more users.
But the reason the infrastructure grew and grew in the first place, was because the applications weren’t written so that they could scale. Albeit back in the day, there was no way for an application to be written (easily) so that it could scale, at least not automatically with the infrastructure.
That problem – scaling infrastructure to grow with the application, was solved with web 2.0. When the Facebooks and Spotify’s of the world realised that they had written applications so cool, that everyone wanted to use them, always, and at the same time, there was no single cluster or load balancer that was going to be able to run it all. So the clever people at Amazon, and Spotify, and Google, they started solving that problem for themselves, and then they commercialised it, and all of a sudden we had Cloud technologies, but available for the masses.
And now we have the masses trying to adopt a technology that was perfectly developed to solve a very specific, application scalability issue.
It’s at this point that things break. The scalability issue that classic enterprises are trying to solve isn’t the same one. It’s a problem caused by old applications, not new ones. We’re still trying to grow that single server application that was custom made for the pre-enterprise and can support 1000 users, to be big enough to serve 10,000 users. We actually don’t need to be able to scale up to 10 million users. But we’re trying to use cloud technology to do that – the wrong way.
I’ll stake my reputation on the fact that nobody fixed a poorly designed application with a scalability problem by sticking it in the Cloud on an IAAS service. Cloud load balancers and dynamically scalable networking just replicates what can already be done in a datacentre for those kinds of applications.
All too often, people are adopting ‘Cloud first’ mantras – this is blissfully ignorant of the actual benefits Cloud can bring. The mantra needs to be something like this: Cloud First for New Applications, or better yet ‘Re-write applications for the Cloud.’
Massively scale-able, East /West, Leaf / Spine, whatever you want to call it – the infrastructure that enables Cloud, whether on premises or through a Cloud Service Provider, can only really be used when your application is natively written to allow it, and this is where you have to have a complementary Microservices component.
Amazon were truly prescient when they started developing everything internally as an API. It was that shift alone that allowed them to develop AWS, and they’ve made their fortune on it. If your Cloud strategy doesn’t involve transforming your Applications so that they adopt Microservices architecture, then they will *never* be able to scale in the way you think they can, and eventually you’ll hit the same growth and scalability issues you always had – but now with an added layer of abstracted complexity.
Microservices is exactly what it says it is! It isn’t Macroservices’ or ‘Monolithic Services’ for a reason. If you take a fundamentally unscaleable monolithic application and build an API to interface into it, it still leaves you with a monolithic unscaleable application – but now potentially servicing a whole new group of consumers through its API.
So as an Enterprise Cloud person, you need to influence everyone you can, to make sure your organisation is getting the benefits that it thinks it’s getting from going down the Cloud path. Nobody wants to sweat the blood and cry the tears of a technology sea-change for no benefit (just remember all the false promises of Virtualisation!) We owe it to ourselves and our industry to make sure that Exec’s, Program Sponsors, and in fact anyone who will listen, that we’re only going to get true benefit realisation if we use Cloud for the right things.
That’s why I believe that a Cloud strategy that doesn’t include Microservices, is no strategy at all.
Makes a lot of sense
Thanks all for the positive feedback and comments on this opinion piece. It's really interesting to see that many of us have faced into, or are facing into the same kind of issues!
If I could like this twice Tim, I would. So many of the ‘Cloud Transformations’ I see are basically ‘take X, don’t change it, move it into Y’ because it lets people avoid the real issue of ‘put the work in to design it for the platform’. Unfortunately it’s always the problem of selling this task as the right solution long term, against the immediate term gain of the problem going away and without the cost of redevelopment. A really great post.
Totally agree Tim Strong. The rush to cloud needs to be tempered by looking at how it is used and how each application running within the cloud can be micro-segmented. This is definitely an area which is seeing a lot of development. For example at the RSA Sandbox Innovation competition this year we saw ShieldX Networks and their Micro segmentation concept explored. In addition to this there are other products out there which support cloud micro-segmentation such as Illumio. The real challenge for an organisation will be adopting multiple cloud vendors (as one is never enough) and ensure that there is a consistent micro-segmentation policy applied across all cloud and on-premise environments.