When the first price list arrived from the cloud companies, everyone reacted like a kid in a penny candy shop with a $100 bill. There’s no reason to devote hours to pondering the advantages and disadvantages when you can just grab a shovel and fill a big laundry bag. Many cloud prices are much less than a penny. How can you go wrong if the price rounds off to zero?
Those days are long gone. Many of us have already survived dozens of difficult meetings with the bean counters who received the monthly cloud invoice and hit the DEFCON alarm siren. The prices may be low but they add up. So we sit around the table wondering why. Is there some way around that? Is there something we can do? Is there some secret lever we can pull? Some secret dial to turn?
Netflix may be the best example of a company that thrives in the cloud. Every Friday and Saturday night, demand starts to skyrocket as people want to relax. Netflix spins up thousands of new instances to handle the load and then gives them up a few hours later when people go to bed. A week has 168 hours but Netflix only pays for their machines in the few hours that their customers need them.
Not all jobs, though, have such wonderfully distinct peaks and valleys. If you’re going to be running your instances 24×7, well, the advantages of the cloud start to fade because the price can be high even after the discounts.
Here are 11 reasons for the rest of us to hate the cloud model.
Dividing costs is hard
If you buy a server, it’s all yours and so you pay 100% of the cost. If you want to share a server, well, you’ve got to split up the resources. Dividing the costs evenly is something that only works at a restaurant, and even then the people who didn’t order alcohol go away miffed.
Trying to be accurate about cloud costs is surprisingly difficult for a commodity product. Should work at prime time cost the same as background computation that can be interrupted and deferred? What if the utility charges less for electricity at night or maybe on sunny days when the solar farm is flush with electrons? What if one customer wants a service-level agreement but the other is willing to be more relaxed about downtime?
Cloud companies have tried to guesstimate a price that’s low enough to capture the customers’ attention but high enough to have a decent profit margin. They’ve come up with a way to divide the cost of a machine into many thin slices but it doesn’t mean they did much more than eyeball it.
Modern architectures encourage consumption
Mathematicians like to ponder the Banach-Tarski paradox, a strange theorem that is better known as the “Pea and Sun paradox.” It’s an algorithmic slight-of-hand by which a pea can be sliced into a finite number of pieces and then be re-assembled to be as big as the Sun. Of course it wouldn’t work in the real world, but it all makes sense in the netherworld of topology.
Sometimes it feels like the cloud encourages the same game. The hot architectural approach to development is to slice up your big single application into dozens or maybe hundreds of different services, each running multiple times as containers juggled by Kubernetes. The good news is that when the load rises, Kubernetes steps in and starts buying new instances to keep everyone happy. The bad news is that no human can follow how many containers or instances are running at any one time. Our knowledge of this is literally cloudy—at least until the bill comes. What was once a cute little app running on one server is now generating bills as big as the Sun.
Free can be expensive
We all love free. Giving developers a chance to try out your product for nothing is the best form of marketing around. But at some point someone needs to pay and it’s hard to manage that huge step from free to paid. It may just be pennies, but the increase on a percentage basis is infinite!
All of the free fun makes it hard for developers to predict the real costs. There are plenty of stories of companies brought low by the slings and arrows of outrageous fortune that come from the viral infatuation of the digital mob. Everyone cheers when the content goes viral, but then the bill comes at the end of the month and it’s so much larger. It seemed cheap when it was free.
Good products are sticky traps
The cloud may be all about freedom but somehow we get locked in anyway. For instance, good developers try to shoehorn their app into the smallest, cheapest instance. It runs fine for a while but then the load spikes when something goes viral or a major shopping holiday comes along. The devops team will dutifully boost the RAM or the virtual CPUs and everything will be fine again but unless the devops team is on top of things, the configurations will stick at the higher prices.
The ratchet effect is even more prominent in the disk space assigned to each instance. It’s often easy to add more space but hard to reduce it, even if the disk space is unused. There are 23 steps in this particular guide for shrinking the size of your volume.
Sometimes location matters
The data centers in the cloud don’t have fixed addresses and they seem barely connected to the planet earth. They’re just hovering off in some nether region.
Sometimes, though, location makes a difference with the price. Alibaba, for instance, charges more for instances that run on Chinese soil. Amazon charges $0.0056 per hour for a t3.nano machine in Ohio but $0.0062 in Northern California. This Azure price index shows that prices in North Central United States may be half the prices of South Central United States.
Is it because the real estate is more expensive in some places? Are the taxes higher? The electricity? Maybe we don’t want to spend the time to understand. The cloud is supposed to free us from such earthly worries.
Discounts require a commitment
One of the big selling points of the cloud is that you can turn on the machines whenever you want and use them for just as long as you need. It’s all about freedom. But you’ll end up paying dearly for this flexibility. The regular price list is pretty steep and you’ll need to make serious commitments to drive your price lower. Some of the cloud companies don’t require a literal commitment because they apply the volume discounts automatically, but the effect is the same. As the t-shirts say, “Freedom ain’t free.”
Moving is harder than it looks
When you first set up a cloud machine, it’s so easy to move in. The networks are fast and there’s often no charge for bringing data into the cloud. Getting the data out, though, isn’t so easy. It’s not that it’s forbidden; it’s just that the mechanism isn’t as greased.
This makes it hard to take advantage of price differences by moving your computation to the cheapest data centers. If your workload is heavy on computation and light on data access, it’s not hard to spin up new machines where the price is cheap. But if you want to move data, you’re doing to need to pay for the flow over the network. Often, the meters count the bytes flowing out and send you a “data egress” bill.
Sometimes it’s just open source
The cloud companies are full of innovation but sometimes they wrap a clever name around open source projects and resell them as a “service.” This isn’t unfair. It’s not just the servers that cost money. Keeping the software installed, upgraded, secure, and running smoothly takes time and skill. Some open source projects resent the cloud companies that make money this way and others see them as potential partners.
The tricky question for development teams is whether the paid service is a good deal. Many times it is much cheaper than getting some team members to shoehorn even more arcane knowledge into their brains. But if someone understands the software, setting up your own machine can be much cheaper. This is especially true if your usage pattern hits the expensive parts of the cloud provider’s pricing equation.
Death by a thousand line items
The cloud companies are not opaque secret societies that send you a magical bill each month with no explanation. Not at all. You get plenty of details about the thousands, millions, or maybe even billions of events that added up to that bill. You can slice and dice them with your own reporting software all day long. But even after a long weekend with spreadsheets and report generators, most of us are left scratching our heads and saying, “Gosh, that’s more than I thought.”
The details are all there but that doesn’t help to make the cognitive leap to an explanation. You’ve got to do that yourself and as you start to wade into the endless logs, you realize that the data is getting in the way. The truth doesn’t set you free. It just gives you millions of data points to analyze.
No one really knows the right price
The price list looks reassuring because numbers mean science, especially when there are so many digits of precision. But the prices reflect a thin slice of a huge basket of shifting commodity costs. The price we pay bundles together the prices for real estate, electricity, computer hardware, engineering staff, and federal, state, and local taxes. Oh and donuts on Friday too. All of these costs shift periodically, sometimes dramatically. Yet the business model is to hide all of this and just offer a nice, flat price by the minute or even second. How can one price ever be right?
We asked for this
Humans like to throw up their hands in frustration and blame someone or something else. The cloud, though, is the sum total of every IT department’s desires. We asked for billing transparency. We asked to be capricious and buy when the whim strikes us. We asked for the freedom of no commitments. We asked to get what we want with a few clicks. Then the bill arrives and all of the transparency of a thorough tabulation doesn’t make it any easier to pay.
This is the essential paradox of the economics of cloud computing. The world has never had so much price transparency and so much deep numerical insight into any part of the economy before. But when the bill comes, we’re still sitting there like a sailor at the end of shore leave wondering where all the money went. We know but we don’t know.