The cloud: what it is and what it ain't

Cloud computing is a software engineering revolution. But what about all that buzz: are you excited, confused or annoyed? The cloud is first and foremost a blend of ideological and technological movements converging at the right place and time (which makes it all the more exciting, confusing and annoying). In this article, I'll dissect what this hot air is really all about. Just as importantly, I'll discuss what it isn't.

Face it: things haven't been this interesting in a long time. We're in the middle of a software engineering revolution, folks, and clarity is in short supply. There are still many unknowns and misconceptions about the cloud. If we're going to make the best use of this technology, we need to thoroughly understand it. Let's see if this list of what the cloud is and ain't can help.

The cloud is… An elastic paradigm for computation with a particular emphasis on service. You, the client, needs a particular hardware or software service. This can be infrastructure (IaaS: Infrastructure as a service), an application platform (PaaS: platform as a service), an application solution (SaaS: Software as a service) or any other letter you feel like prefixing to "aaS". Me, the provider, supplies you the service. You get to use a slice of the service and pay only for what you need. If you need a bigger slice, I can easily increase it and charge you a little more. This is great for you because you can manage your costs effectively. You convert massive up-front capital expenditures into much smaller but perpetual operational expenditures. You don't need to buy the entire service, you just rent it. Virtualization is often part of the offering but is not mandatory - more of an implementation detail.

The cloud ain’t… A new concept. The idea of infrastructure as a service, where a provider gives you network infrastructure, has been around for a long time. Similarly, the concept of using a website, where you don't install anything on your desktop, is essentially a SaaS. What's really new is that the cloud ideology bundles and clearly articulates these concepts.

Is… All about scalability. Cloud computing’s main focus is about achieving massive scale. The NoSQL movement, which is all about foregoing traditional relational database, has offered alternative techniques and technologies to fulfill the promise of making massively scalable storage systems. It has done so mainly by sacrificing beloved concepts such as data consistency and integrity in favor of replication, eventual consistency and key/value storage types. The consequences of this shift for real-world systems has not yet been accounted.

Ain’t… Necessarily the tool to solve all problems. In the case of persistence, it’s important to remember that life existed before and will exist after NoSQL. Some problems are well solved by relational databases. Ask yourself this: do you really need to forgo time-tested relational concepts to achieve massive scale? Is your website really the next Amazon.com? Do you really need a chainsaw or will tweezers do?

Is… Something that forces you to think differently about security, compliance, governance, trust, dependability and outsourcing. What happens to your data when you outsource your storage? Who is legally responsible to keep your data private and safe? Will your service provider comply with government agency demands? Will your service provider go bankrupt just before your website's busy season? Suddenly, the concept of owning rather than renting is starting to look good.

Ain’t… Something that early adopters have necessarily thought through. We are still in the infancy stage of this paradigm shift.

Is… A term that has been abused. Don't add to the abuse by saying “let’s put this app on the cloud” when all you really mean to say is “let’s make this app accessible by anyone on the Internet”. The worst offenders are tech CEOs and Microsoft TV commercials.

Ain’t… a fad.

2 comments:

Félix Trépanier said...

Great post Nick. It's always good to have a grounded view of the new hyped technologies.

What I'm curious to know now is how cloud computing is going to affect web services design and architecture? Also, I wonder how this will disrupt the web application world in general.

Nick Maiorano said...

Once you strip away all the hype, you are left with some very interesting and actionable ideas about how to build software systems - even if you don't go with a cloud solution and even if you don't need massive scale. One of the things I like about cloud thinking is the emphasis on the service model. It's the exact opposite of monolothic systems and allows you to commoditize away entire layers. There are still "unknown unknowns" about cloud computing but we'll all be building better software systems once exposed to cloud principles.