The cloud is just someone elseās computerā, runs the joke. But if youāre saying that, the joke is on you, because it means you donāt understand what the cloud actually is.
So many people misuse the word ācloudā that you can be forgiven for thinking āin the cloudā means āover an internet connectionā.
It doesnāt. āThe cloudā means something very specific.
The simplest definition of cloud is a data centre thatās full of identical hardware that no-one ever touches except to unpack it on day one and throw it away when it fails; in between, every deployment, update, investigation, and management process is automated.
The unit of compute and storage in cloud isnāt a server or even a cluster; itās a stamp, because you āstampā them out as identical units.
With Azure, for example, the smallest stamp size is 800 to a 1,000 of what you can call servers (20 of which are running the management software). Some cloud infrastructures distribute storage throughout the same boxes that have the CPUs in, while some cluster it in storage array. Still others put a battery in every box instead of having a UPS.
You donāt look at the firmware level of the RAID card; you deploy the same setup to 100,000 servers and if one of them doesnāt work, you throw it away (eventually, anyway ā a failed motherboard or hard drive could sit in the stamp for a month or even a year with the management system routing around it).
You do that with commodity hardware rather than fault-tolerant redundant hardware to make it cheap enough to do it at scale, and because doing it at scale means you donāt need expensive hardware to achieve redundancy, you can do it in software.
Software-defined would be a better term than cloud for much of this: software-defined networking, software-defined storage, software-defined computing.
Cloud comes from network diagrams of old where architects were showing an abstraction, either a distant data centre or the fact that you didnāt have to care what the network protocol was going to be. Itās used to refer both to the infrastructure of identical systems managed at scale by automation, and the āsomeone else does the setup and managementā services that run on that infrastructure, where āsomeoneā is an automated system as well.
What about the few people that do work on that cloud service doing anything other than writing software and automating systems? Theyāve been through much more careful security screening than the people working with the computers you own, unless youāre in the habit of taking fingerprints at job interviews and running background checks.
If youāre using a PaaS service like storage, or an āas a serviceā option that gives you software like Hadoop or Jenkins, or a data warehouse that would be complex and time-consuming to set up at the click of a checkbox, tell me how much you care about not having the computer running it be something you own and have to manage.
The āsomeone elseās computerā crack can mean a few things. It can mean that someone distrusts the cloud because they canāt fondle the switches and caress the levers and change the settings themselves, and they donāt know enough about hyperscale cloud to understand why thatās a good thing. It can mean that someone does know very well what cloud means but theyāre fed up of dealing with people who donāt understand that, and want to remind them the cloud is made up of computers, that the laws of physics still apply (maybe you need to care about network latency and whether your storage and your computing is in the same place) and that if you need to care about regulation that you need to pick a cloud service that meets those regulations.
Itās just that saying āitās full of serversā doesnāt do anything to educate people about how to get the most out of cloud by designing apps and workloads to use cloud patterns and take advantage of cloud strengths. In fact if you think of cloud as ājust serversā, youāre far more likely not to get the benefits of cloud.
The VM image you run āin the cloudā might be special and unique, if youāre using IaaS as a cheap way of doing virtualisation ā but donāt mistake that for using a cloud service. The cloud service is the IaaS platform that rolls out your image whenever you need it, migrates it to another server if thereās a problem, turns it back off when you donāt need it, and counts up what resources you used and are going to get charged for.
If whatever is running on your VM has a single point of failure, or a flaw like a log file that fills up every day, putting it on a cloud IaaS server wonāt fix that any more than hosting it in a third-party data centre with good old-fashioned virtualisation would. But you can use the time and money you save not administering the physical server it used to run on to fix whatever the real problem is.
So all of this means the cloud is āa hyperscale, automated computer farm run by someone whoās better at automation and security than you, and can buy electricity and servers and network connectivity more cheaply than you because they buy so much of it and if you want all the benefits of cloud you have to design things to achieve thatā. Not that catchy, so I can see why it hasnāt taken off as a tag line.
Itās not just cloud that gets this treatment: the latest āI donāt understand this new technologyā confusion is about āserverlessā computing. How can it be serverless, people joke, when thereās obviously a server running it?
Serverless computing is like driverless cars; thereās still a driver, just not one you can see. You donāt need to ask if the driver of the driverless car is hungry or tired or drunk or needs to stop for a bathroom break. If we ever let driverless cars drive on our roads it will be because we donāt have to care about the driver, just the fact that they will take us where we want to do. Serverless computing ā where you write and run code on a cloud service without caring about the hardware or operating system of the computer it runs on ā might not be the term for this, but itās a good enough description.
You donāt care about the server your AWS Lambda or Azure Functions code runs on; you donāt care if itās taking a five minute break between being a website or running a Monte Carlo simulation or if itās a brand new server. You donāt care if itās running RedHat or Ubuntu or Windows Server, or how much RAM it has or when it was last patched.
You just care that Amazon and Azure and the other serverless providers are so efficient at deploying images to the servers in their cloud and monitoring them to make sure theyāre healthy, that itās not worth charging you for the work of making the image available ā just the computing you do on it, using an interface that abstracts away everything about the server that you donāt need.
This is software-defined computing thatās a step beyond virtualisation; the CPU that runs the computation is a fungible resource thatās allocated by software, at whatever level of abstraction you want. If you want a server to run your VM, you can have that. If you want to run PHP, Node or .NET code without caring where or how it runs, you can do that. If you want to stream sensor data from IoT devices or index a website or do any other arbitrary computation, you donāt need a server to do that ā you just need the compute power.
Again, ādonāt care about the server-computingā is more accurate and less catchy. So, feel free to keep misunderstanding and mocking the term. Just donāt be upset when your competitors take advantage of it to save money, build better systems, and get happier customers. The jokeās on them for not caring about the server, right?
Yes, but the whole argument that a lot of people have against the cloud is that it is going to shut down eventually. If I buy a game on my laptop, its mine. I own it. But if I get it on the cloud, once the cloud goes down I am never getting that game back. Even if itās a army of supercomputers its still flawed in that you can never really āownā anything you get on the cloud because it is running on someone elseās machine.