A number of years ago someone made this sticker and it became popular on the internet:
It spoke to everyone's frustration with the failure of marketing and sales to properly communicate what cloud computing was and how platforms like Azure and AWS fit into this new computing paradigm. In this post I want to give a fresh perspective on what cloud computing is and what we can do with it.
Defining Cloud
Microsoft defines the cloud this way:
"Simply put, cloud computing is the delivery of computing services—servers, storage, databases, networking, software, analytics, and more—over the Internet (“the cloud”)."
Cloud computing is leveraging the internet in new ways. We've been evolving cloud computing since the internet existed.
Consider the earliest days - the dawn of the World Wide Web that allowed us to post static pages of information that was discoverable over the internet. Soon search providers emerged, making information even easier to find; these were the first cloud applications.
We began adding dynamic aspects to web development. Technologies like Classic ASP, Java, PHP, and JavaScript emerged that opened up the internet to a new era of information sharing and ecommerce. Messaging and chat applications emerged and while they were still installed locally on the client pc, it was the internet that provided the ability to communicate.
More complex web frameworks emerged like ASP.NET, Cold Fusion, Java Server Pages, and others. The new scenarios they introduced required new connectivity options, and we saw service frameworks like WCF and REST emerge to better communicate over the internet.
More recently we've seen how client side libraries and asynchornous programming is changing internet computing again. Alongside that, cloud platforms like Azure and AWS have emerged offering evolved services from the simple data-transfer ones.
So all of this is to say: Cloud computing is the evolution of using the internet as a development platform.
Cloud Service Providers
Now that we've defined what cloud is, how does this change our view of what Azure, AWS, and other cloud service providers are? Microsoft provides us with a great definition of Azure, which we can apply to the others:
Microsoft Azure is a growing collection of integrated cloud services that developers and IT professionals use to build, deploy, and manage applications through Microsoft’s global network of datacenters.
This is an important distinction. Azure itself is not a cloud; its cloud enabled services (meaning it relies on the internet) and they happen to use a huge number of large datacenters to operate those services.
What differentiates cloud service platforms from previous cloud computing implementations (like web mail or web app hosting) are certain tenets that cloud service platforms share:
-
Reduced Costs - You aren't buying the servers or network components or running the datacenters yourself
-
Speed – Able to provision resources in minutes, capacity planning becomes administrative instead of managing physical assets
-
Global Scale – Scale elastically and provide the right amount of IT resources when its needed from the right geographical location
-
Productivity – Removes mundane IT activities, focuses on high value activities
-
Performance – Worldwide networks that offer benefits like reduced network latency and greater economies of scale
-
Reliability – Data backup, disaster recovery, and business continuity easier and less expensive
The Cloud Enables our Applications
When we shift our view of cloud away from the physical datacenters and infrastructure powering cloud service providers and to the original meaning of cloud - the internet - then things make a lot more sense. Cloud computing has been changing the way we work, play, and connect ever since the internet was invented. We're just now seeing how far the cloud service providers are able to push the envelope.
There is a cloud, and it enables our applications to do amazing things!