You would be forgiven for believing the cloud era began in 2006 when Amazon first launched its Elastic Compute Cloud (EC2) service to the world. Amazon, having spent twelve years building a complex and expensive global infrastructure to support its ballooning e-commerce business, spotted a golden opportunity to open up its technology to others.
In the 1990s and 2000s as globalisation took hold in the western world many companies were expanding internationally and were facing serious technological challenges with ‘going global’. 🌍 So just a few short years after the dotcom bubble burst causing hundreds of online companies to fail, Amazon Web Services (AWS) was born and the global internet changed forever.
Some 13 years later, and Amazon’s position in the cloud market has been so strong for so long, it’s brand so pervasive, that the very term “cloud” has become synonymous with AWS.
However, the term itself has been around much longer. Ten years before Amazon, Compaq was talking about “cloud computing” in internal documents. Even further back in the dusty recesses of time, cloud icons were used to represent the ARPANET before the internet as we know it even existed.
Interestingly, even Intel attempted to enter the cloud market before it was considered a cloud, with Intel Computing Services in the early 2000s when then CEO, Craig Barrett, attempted and failed to diversify Intel’s product offering.
When we picture clouds, we think of a beautiful blue sky, speckled with puffy white blobs in varying and interesting shapes. At least I do, and I assume most other optimists see something similar. I’m afraid I can’t talk for the pessimists among us as my glass is always full. 🥛 As annoying as an eternal optimist may be, that’s me! 😊
The term ☁️ “cloud”, then, is a friendly, unthreatening way to describe something that has grown up to be quite complex under the hood. So let’s pull back the emerald curtain so to speak, and see what this cloud is all about.
What is Cloud?
So then, what exactly is cloud? The cloud refers to the vast collection of Internet-connected devices and software that communicates with one-another, often without human intervention.
This includes the servers and networking equipment that forms the foundation of all Internet based services, the software and websites you use every day, the devices that measure wind speed, air pressure and temperature at weather stations, the huge number of consumer products that connect to the Internet, and even the International Space Station itself.
Side note — did you know you can watch the view live from the International Space Station on NASA’s ISS live stream?
For the purposes of this article we are interested in the hardware and software that is the foundation of the Internet-connected software and websites we use every day for work and leisure. Think, Netflix, iTunes, e-commerce, online gambling, and even the real-time status boards you get at bus stops and train stations. These services are powered by huge data centres, kilometres of cabling and thousands of high-powered servers.
The idea of ‘compute as a utility’ was a long-held dream that, now realised, allows developers to innovate with new products and services more quickly, and at far less cost, than any time before. That dream is what the cloud embodies, but as Larry Ellison postulated in 2008, perhaps Amazon simply did a good job putting lipstick on a pig.
“The interesting thing about cloud computing is that we’ve redefined cloud computing to include everything that we already do… I don’t understand what we would do differently in the light of cloud computing other than change the wording of some of our ads.”
— Larry Ellison, Oracle, 2008.
Types of Cloud
Wait.. there’s more than one type of cloud? Yes — but it’s quite simple really. Traditionally, organisations would pay for rack space in data centres close to their customers and install their own servers and hardware. Sometimes they’d even build their own data centres if capacity, security or regulatory compliance were an issue.
The ability to “lease” somebody else’s server capacity was certainly around pre-2006, but the prevailing attitude was that if you wanted to do it properly, you maintained your own hardware. The launch of AWS in 2006 changed all that by bringing instant virtual servers to the masses.
Today, as our understanding of the cloud has matured, we see three broad categories:
- Private Cloud / Enterprise / On-premise / In-house
As the name (or names) suggests, this is the more traditional method of managing one’s own server hardware, whether that be within your own data centre or co-located in a shared facility. Originally this wouldn’t have had the moniker “cloud” as it was “just the way things were done”. There was no other option. - Public Cloud / Outsourced
A public cloud refers to utilising someone else’s server capacity by way of virtualisation. Sophisticated software allows multiple tenants to share the same physical hardware, or where dedicated hardware is required, gives full control remotely. Provisioning new servers is extremely quick as the physical hardware is already in place. Deployments can be made in minutes instead of weeks as you don’t need to drive to a data centre and install new servers, and because you’re leasing compute capacity, there is zero capital investment required. - Hybrid Cloud
Some organisations that are dealing with complex and messy legacy systems or mission critical workloads that must remain private (typically in regulated industries), can adopt what’s called a “hybrid” cloud approach. This means the most important parts of their infrastructure, applications and data will be kept “on-premise” under lock and key, whilst the newer or less risky components can be deployed to a public cloud vendor and take advantage of the reduction in deployment times and costs.
Key Vendors
The three big public cloud vendors you’ve no-doubt heard about are Amazon Web Services, Google Cloud, and Microsoft Azure. Amazon, being the first to market in this new era, has the broadest and most mature service offering, but together the big three command most of the mindshare in the cloud space.
There are, of course, many other players in this space including IBM Cloud, Oracle Cloud, Alibaba Cloud, Digital Ocean, Rackspace, Linode, Heroku, and many more. Many organisations that once marketed themselves as hosting companies selling web servers and shared hosting now talk in terms of ‘cloud services’.
Basic Terms
In the enterprise world the basic terms you’ll hear include:
- Cloud Ready
A software application is “cloud ready” if it can be readily deployed to a public or private cloud without modification. Often, existing and legacy applications will need modification to avoid colliding with the execution assumptions made by the cloud vendor. However, it’s often possible to use virtualisation technology to “lift and shift” applications to the cloud whilst avoiding deep modifications that could introduce bugs or significant development rework. - Cloud Native
In contrast, an application is “cloud native” if it was designed from the ground up to run on a public cloud platform. This can be as simple as the applications being packaged inside lightweight containers (e.g. utilising isolation and orchestration technology such as Docker and Kubernetes), or it can mean a full integration with the PaaS offering of the cloud vendor (and the corresponding lock-in that implies). - Cloud Broker
As cloud offerings get more complex and organisations try their best to avoid vendor lock-in, we’re seeing a need for a new breed of provider in the cloud space. Cloud brokers make it easier for organisations to adopt a multi-cloud strategy where they only use a subset of services from each cloud vendor. Brokers also offer higher-level abstraction of cloud services, often tying several services together into a new offering that reduces the complexity of working with lower-level virtual machines and networking. - Cloud Management
Broadly speaking this refers to the provision and management of cloud services. It includes the technical tooling and business processes required to keep a handle on the complexity of the cloud and often involves automation of some kind to reduce the burden of manual intervention and human error. This is particularly important where an organisation has a hybrid ‘private-public’ cloud or has adopted a multi-cloud strategy.
Ass Terms
There are many such terms in the cloud world. 🤫 More precisely the *aaS acronym, which stands for “X as a service” is everywhere these days.
Over the last decade and a half we have created this sprawling, complex, industrial masterpiece. It looks foreboding, but what it boils down to is the gradual and necessary standardisation of Internet infrastructure.
In the long term, it’s cheaper to pay an expert to manage the complexities of such infrastructure, rather than trying to roll your own. As customer demand for increasingly sophisticated software grows, it’s only going to get more costly and more difficult to tame the beast.
Better to let someone who already delivers the infrastructure to thousands of businesses take on the burden, so you can focus on delivering innovation and value to your own customers.
A full list of *aaS terms can be found on Wikipedia but those described below are the most common acronyms you’ll see used day-to-day:
- 🔧 Infrastructure as a Service (IaaS)
IaaS refers to the high-level abstraction of the physical hardware, including servers and other networking equipment, that underpins all Internet-connected services and cloud platforms. This abstraction allows organisations to deploy virtual resources with greater velocity and less upfront capital investment than before. - 🛠 Platform as a Service (PaaS)
PaaS is an extension of Infrastructure as a Service. It allows organisations to develop software without needing to manage the underlying infrastructure as this is handled by the cloud vendor. A good example of this is the Heroku hosting platform. PaaS dramatically reduces the complexity in managing software in the cloud at the expense of flexibility and low-level control. - 📲 Backend as a Service (BaaS)
BaaS was born out of the need for mobile apps to connect to some form of backend service, typically an API of some form which is used to read and write data. The tasks performed by mobile apps are quite common across the board and using a Backend as a Service instead of rolling your own custom API saves considerable time and maintenance costs. - 💻 Software as a Service (SaaS)
SaaS refers to web-native software that is built on top of cloud services and is typically sold on a subscription model, as opposed to the lump-sum fee charged for downloadable desktop software in the previous era. This model allows software to be continuously developed and updated without requiring updates or new downloads. Even traditional software such as Microsoft Office is now being sold under a SaaS model with Office 365. - 🗂 Database as a Service (DBaaS)
DBaaS refers to the plug-and-play setup of a database that is hosted and managed by a vendor. These days most flavours of database are supported including relational, document, and key-value databases, and typically the database developers themselves offer their own hosted solutions. MongoDB Atlas is a prime example from the developers of the schemaless database. - ♾ Functions as a Service (FaaS)
FaaS is a rather new entrant to the acronym race and is a further abstraction of the Platform as a Service concept. A FaaS platform allows developers to write code for the business logic alone, and have almost everything else handled by the cloud vendor. This includes boilerplate code common across projects, communication between functions, execution and error logging, deployment, capacity management, and a lot more besides. This is colloquially known as “serverless” and despite the misleading name, it simply means there are no servers for the developer to worry about.
Conclusion
In conclusion, there is a lot going on in the cloud world. And all this has grown up around us in the last 13 years since the launch of AWS in 2006. In short, the cloud is nothing more than the provision of the vital hardware and software infrastructure that underpins the Internet-connected services and software we use every day.
There are three main cloud vendors, Amazon Web Services, Google Cloud, and Microsoft Azure, and they all provide very similar services. These range from dedicated and virtual infrastructure (Iaas), to fully baked software that can be dropped right into your own products (SaaS).
Software is considered to be cloud native when it was built from the ground up to run inside virtualised cloud environments, and cloud ready when it has been adapted to support cloud environments.
😄