We hear all the time that cloud computing skills are in tremendous demand and supply of good talent just can’t keep up. The perception is that cloud computing, while hot, is difficult enough that it needs specialists to design, implement, and even deploy services for end users on top of it.
Is this just a hard reality of cloud computing that we should all accept, or do information technology professionals and executives simply make it this way? As provocative as that may sound, let’s examine it…
What about Cloud Computing for Developers?
Before we go any further, let’s acknowledge that cloud application developers really do need much more flexibility and infrastructure access than end users do. Naturally this requires more advanced skills than to consume services and applications. With that out of the way, let’s focus on services for end users, not developers.
Utilities versus Solutions
Even end users (and the technical professionals who support them) tend to make cloud computing more complex than it needs to be. Why? Because people tend to think of cloud computing as a utility rather than a solution. Utilities force us to design and implement solutions, rather than just find solutions and consume them. A good way to think about the difference between a utility and a solution is like this: imagine that you’re trying to budget your electric bill in advance, based on what you think it will cost to heat your home in the winter time. What question do you ask: How much does each kilowatt hour of electricity cost, or how much it will cost you to heat your home for the winter? Obviously the latter, correct? What good does it do you to know what the kilowatt hour cost is, if you have no idea how many kilowatt hours you will consume?
In the “physical” world we have no choice but to sometimes buy utilities rather than solutions. But in the digital world, especially in cloud computing, we do. The choice is between SaaS (software-as-a-service) and IaaS (infrastructure-as-a-service). IaaS is just a utility, which is a starting point to build solutions on top of. It forces us to implement technology much like we would on physical servers, from the ground up. In fact, before IaaS became popular, ordinary hosting was the go to “as a service” offering. The deciding factor between hosting and IaaS is usually as simple as this: do you need it full time, or do you want to pay just for what you use? Even though full time hosting generally costs much less than full time IaaS, it often makes sense to leverage pay-per-use of commodity infrastructure, so that you can burst up to larger scale when you need it without committing up front. That’s really about it. While there are many other nuances, this is easily the major reason to choose IaaS over regular server hosting.
SaaS abstracts infrastructure and orchestration from end users, and focuses strictly on solving problems. For example, if you need to quickly render a model into a 3D movie, why not just find a way to consume Blender as a service? The alternative would be to find an IaaS provider, spin up “instances”, install Blender as you would on a regular PC or server, and then figure out how to use it. This only makes sense if you are an absolute control freak or like to make your life more difficult than it needs to be. For the rest of us, there is SaaS! Instead of wasting time “building”, you could be kicking off rendering jobs from your mobile device and leverage the power of high performance cloud infrastructure without having to care much about it. All you know is that your movie rendered in a fraction of the time as it would even on a really powerful, heavy, expensive PC. And you ran the job from a lounge chair on the beach!
A More Mature Approach to Cloud Computing
In the early days of the PC, the application ecosystem was very small or even non-existent for many solutions. To do anything useful, we had to deal with a BASIC interpreter and often times build software and systems ourselves. The benefits were the seemingly endless configuration possibilities that can only come from engineering custom solutions. The downside of course was that this was about as far removed from solving real world problems as we could get. No one set out to find a way to load programs from cassette in BASIC just for the fun of it. It was so that you could “spin up” an application that would possibly solve some problem, such as managing your finances or writing letters.
As time went on, the PC “revolution” went in two distinct directions. One was to eventually result in powerful operating systems, such as modern Windows and Linux platforms, while the other was to focus on user friendly environments with fewer options, such as Apple platforms. We can see that the “powerful operating system” route eventually came full circle, and became much more user friendly thanks to the addition of “shells” and “desktop environments” to abstract much of the complexity. Why? Because end users need best practices engineered for them, not infinite variations and options to (hopefully) eventually arrive at the same best practices experts would. System vendors who build best practices into “the box” make it easier for end users to just consume applications on top of their platforms, which is the real reason why most people use technology to begin with. This may sound like a broken record, but for most of us, the purpose of technology is to solve problems, not to “do cool things”. Given this evolution, we can equate solution-oriented platform design with maturity.
Cloud computing has gone through the same process, but much faster (“Internet time” if you will.) Mainstream cloud computing, while conceptually not new, has only been popular for a decade or so. In this time, we’ve already seen a shift from commodity IaaS to PaaS and SaaS – again to abstract orchestration and build best practices right into user facing solutions. In fact, we see countless price drops from IaaS vendors, because this is really the only way they can entice consumers to use their platforms as is. This means IaaS has limited value other than just being a utility layer that user-facing cloud services may or may not use. Remember the price per kilowatt hour? It’s useless if you don’t put it in a solution context, no matter how “cheap” it seems. Price per core hour is no different. It’s no wonder that many end users (and the IT pros who support them) are increasingly going straight for SaaS and just letting application vendors figure out all the mundane infrastructure details for them.
So… what’s keeping you from finally embracing a SaaS approach to solving your toughest challenges? We’d be delighted to show you a better way to leverage the power of cloud computing!