Like a seaside holiday in Scotland, no matter which direction you look, there’s another cloud. Some of them have evolved from the server hosting companies of yesteryear while others are completely new. Entities setup by the world’s largest technology companies. Folks like Amazon, Microsoft, Google, IBM, HP and Oracle. The sands are constantly shifting but at the moment, there are three dominant players and that doesn’t look likely to change any time soon: Amazon, which is by far the largest based on raw market share, Microsoft, which is unsurprisingly dominant in the enterprise space and Google, which is holding its own with mobile service providers. The competition between these guys is fierce and it’s no wonder. The stakes are high. The global market for cloud computing is anticipated to be worth more than $150 Billion by 2021, with a compound annual growth rate in excess of 20%. These guys are ploughing billions of recently repatriated dollars into cloud capabilities each and every year, expanding their footprint and adding new capabilities in a bid to capture a sizeable chunk of what is certain to become an essential utility of modern society.
Great for consumers
On one level this is great for us as consumers of cloud services. The rabid competition means we get a much higher level of service. After all, the lifetime customer value for a cloud customer is significantly higher than for any run-of-the-mill software product. If you’ve ever used Microsoft Azure you’ll know exactly what I mean. Got a problem? Their support guys will help you out with a few mouse clicks. If you’re lucky they might even call you to check that your problem is fixed. Can you name any other Microsoft product where you get that level of support? Or anything even resembling it? It’s never happened.
However, on another level, competition isn’t so great especially if you’re a software developer and let me explain why. Infrastructure, like hardware, is a commodity service. It’s practically impossible for cloud providers to gain lasting competitive advantage. Setting aside esoteric things like trust and familiarity, a virtual machine is a virtual machine, it doesn’t really matter who’s hosting it as long as they deliver on their service level agreement. That’s not a great business model. Competition over generic services leads to a race to the bottom and while that’s great for consumers it’s not so good for the cloud providers. But these guys aren’t daft, they know that and they have a plan to deal with it. That plan is platform as a service. Actually, Microsoft and Google, presumably both realizing the futility of a price war with Amazon, initially focused their cloud offerings on platform as a service.
Platform as a service is a whole different ball game. A platform, like any API, provides a way to lock in consumers and as we all know, vendor lock-in is the holy grail when it comes to building market share in the tech world. Despite the downside, PaaS offers many benefits to customers. Chief among them are that it’s managed by the service provider and priced based on usage so it’s much easier and often cheaper to scale than infrastructure. For example, if you subscribe to a message queueing service, you’ll pay for the number of messages you shove down the pipe. Your service level agreement will guarantee the availability of the messaging service so you can forget all about the underlying infrastructure. Hell it doesn’t matter if the thing’s strung together out of monkeys and typewriters, as long as it delivers on the SLA, it’s not your problem. So if you queue 100 billion messages, it’s down to the service provider to make sure they’ve got enough well-fed monkeys and a healthy supply of typewriter oil on hand to reliably deal with the load. That’s a whole load of fun and games you don’t need to think about, you just pony up the dough when the bill comes in. What’s not to like?
Will it stick to the wall?
The problem is that in an attempt to lure customers to their platform, cloud providers are throwing more and more PaaS services at the wall to see what sticks. We’re bombarded with choice. It seems that every week there’s a new, better, way to build our products and when there are a million ways to get a job done, we waste a whole load of time evaluating the possibilities. Worse, there’s a hidden risk that you’ll know only too well if you’ve been around the block a few times. How many of these PaaS services will be around a few years from now? Sure, they may still be there but will they be updated and actively maintained – probably not. Best case, the services will be open sourced and left for the community to maintain. That seems to be the new way to wriggle out of support obligations. The bottom line is that it’s in cloud providers interests to consolidate their users on their most popular services to reduce support and development costs. So, we’re stuck, we spend a whole load of time evaluating services and pick what we think is the best option, knowing full well that there will be a better option tomorrow and that there’s the distinct possibility that our service won’t be the flavour of the month in the very near future.
The secret to coming out of the cloud wars unscathed is not to get caught in the middle. Sometimes PaaS offers such fundamental value that it’s clear it’s not going to be superseded by anything remarkably different. For example, blob storage, or message queueing. In those cases, it’s pretty trivial to abstract these services in your application to allow for an easy switch if required. Other times, although PaaS clearly offers benefits, it’s obvious that things will change in the future. For example, machine learning, or service management. Be mindful of the force when you use these services. You can bet they’ll tie you into a particular provider and will change in the future. There’s inevitably much more work involved in abstracting these services and in fact, in some case it may not be practical. Sometimes the pay-off for PaaS just isn’t worth the risk. Sometimes it’s safer and cheaper to go with IaaS and run your own services or leverage open standards on your own infrastructure as opposed to opting for proprietary alternatives via PaaS. Maybe that explains why Amazon is still the dominant player in the cloud space, the bulk of their business is IaaS.
Kubernetes is a classic example of this. When it comes to scalability and reliability, development via containers is the way to go. But there have been many competing approaches to managing containers with cloud providers offering various PaaS options. Despite the ease of use of these PaaS offerings, Kubernetes has still dominated the market, forcing all major cloud providers to adopt it as a standard and provide a PaaS offering. This is a big win for us as consumers because now we have competitive pricing and the benefits of PaaS without the vendor lock-in.
The secret
So the secret to avoid getting caught in the crossfire is to block out the hype and look beyond the cloud wars. Any cross-platform emerging technology that offers clear value will eventually be available on a PaaS basis. It’s in the interests of everybody involved to make that happen. Very carefully weigh up IaaS vs PaaS because short term convenience is the path to the dark side. It can lead to major migration problems as your service scales. Like Kubernetes, if we stand our ground on other core technologies, cloud providers will be forced to adopt a similar approach. Popular IaaS workloads of today will become PaaS tomorrow.