So what exactly is this cloud computing malarkey anyway?

Date:

  • Reading time:

  • 13m.

The Gist

Illustration of a desktop computer interacting with cloud computing services.

Few terms these days are as misunderstood as the terms ‘cloud’ and ‘cloud computing’.

Virtually every IT product or mobile app has the ‘cloud’ moniker slapped across its description these days.

Or AI. Or both. But we’ll deal with AI in another article, dear reader. There is after all a limit to the amount of biscuits we can dunk in a single cup of tea.

But what does ‘Cloud Computing’ really mean? More importantly, what does it mean for you?

Getting Acquainted

Cloud computing refers to two very different things in fact. Many people seem to only grasp a small part of their meaning and implications, however.

The original definition of ’the cloud’, simply referred to having things available online. Never mind all the special facilities around the globe, processing and storing all manner of data.

A bit of a ‘pixie dust’ definition, making the internet sound like a magical place, while in the real world things were (and are) a bit more mundane.

The second, more modern definition, refers to a set of technologies. Technologies that transform traditional IT infrastructures into a ‘utility’. Much like those provided by a utility company, such as a power company. A service that automatically scales up and down, according to demand.

The first definition, reminds us that cloud computing is subject to real-world regional legislation. And real-world risks. This is something any user or organisation should consider carefully before engaging a cloud service.

But it’s not what this article is about.

We’ll focus on the second definition instead; cloud computing as a scalable utility. But first, we’ll need to have a look at traditional IT infrastructures. That’ll make the differences a bit easier to digest.

Traditional IT infrastructures

Picture of Traditional Servers

Don’t worry dear reader, we’ll keep this bit as short as we can.

Before cloud computing came along, organisations had to make an estimate of the computing power they were going to need. They’d need to buy hardware accordingly and have staff on standby to manage it.

This was quite expensive, and subject to human error. More often than not, hardware either wouldn’t be used to its full potential, or fall short.

Large organisations had other options available to them of course. Considerably more expensive options. Small to medium-sized organisations on the other hand, were forced to use more limited hardware and software.

That changed when a key technology was brought over from the large and expensive, to the basic and affordable. A technology known as ‘virtualization’.

This allows a single computer to function as multiple independent ones…of sorts. With it one can buy a bunch of hardware and greatly simplify management, and operation. It also makes the utilisation of hardware to its fullest potential a lot more achievable.

More importantly, it allows providers to rent out computing power more easily—and more cheaply. And so began the era of cloud computing, with the ability to split computing resources into independent systems. And with it, the ability to rent out (virtual) IT infrastructures.

Gone were the headaches of maintenance, purchasing, and installation.

Okay not gone, somewhat reduced. Ish.

But this kind of cloud computing isn’t quite as scalable as a common ‘utility’ however, as it isn’t precise enough for that. In order to truly scale up and down, we need the precision of a scalpel. Not a cleaver.

Picture of Containerization

This brings the us to the next refinement. While enabling computers to operate as multiple independent ones is certainly useful, it also introduces additional demands. Each independent system still needs to run its own software environment, much like a regular computer does.

So, clever engineers instead figured out that it would be more efficient to separate a computer’s resources into much smaller units. Small slices that have just enough software and resources available to get the job done, nothing more. We call that tidbit ‘containerization’.

As we don’t want to run the risk of trying your patience any further, dear reader, we’ll stick to the minimum. Containerization allows for a much more refined approach in IT infrastructure management. The proverbial scalpel, to the cleaver that is regular virtualization.

Putting these two technologies to together, we can create IT infrastructures that quite literally scale from 0 to 100 and back again—as needed. This is the backbone of cloud computing. And the good thing is that it’s not just something available online, it can be done with on-site hardware as well.

Hence, computing as a utility. Cloud computing refers to a set of technologies, not necessarily a set of practices. Although it often does in the minds of decision makers.

With all that out of the way, we’re ready to have a look at the different kinds of cloud computing offerings out there. In particular, what they could mean for your organisation, your career, or your attempts to combat insomnia.

IaaS: Infrastructure as a Service

Illustration of people working with IaaS

Infrastructure as a Service or ‘IaaS’ is the most basic form of cloud computing: the management of physical or virtual servers, networks and storage of data.

In the beginning, IaaS primarily meant renting these from an online provider. But over time, it became more of a mechanism that allows users to define and deploy their IT infrastructure using software.

This is known as ‘Infrastructure as Code’ or IaC. This nifty technology applies to both online and local hardware, but when using the ‘IaaS’ moniker, we tend to mean a subscription based service sourced from an online provider. Or, a service provided by a special department in very large organisations.

As such, with IaaS, it is the providers that take care of the underlying hardware. Customers take care of everything else. In other words, little to no automation is built-in. Users need to bring that to the party themselves.

In their never ending attempt to make more money, er, provide better services, vendors therefore came up with another enhancement. A way to manage everything automatically on specialized platforms. A concept now known as PaaS, or Platform as a Service.

PaaS: Platform as a Service

Illustration of a person working with PaaS

Platform as a Service was invented mainly as a service tailored for software developers. Using PaaS, developers can focus entirely on writing their application code without ever having to worry about the underlying infrastructure. Servers, networks, storage, databases? Hah! No worries.

Until the bill is received.

Conceptually, PaaS is good for both providers and developers. It allows providers to optimise their infrastructure with the precision of a laser, never mind a scalpel. It essentially abstracts all the operational aspects of IT in such a way that developers need only focus on their code.

PaaS isn’t all romantic moonlit walks, holding hands with one’s best code, either. It can be—and usually is—quite limiting. Users of such platforms are more than a little encouraged to use platform-specific solutions. This makes it quite difficult, if not flat-out financially infeasible, to move to another platform later on.

In other words, traditional PaaS is more often than not a vendor lock-in minefield. It is a simpler approach to software development, this is true. It also allows for more efficient management of resources, this is also true. But the savings aren’t passed on to consumers of PaaS. Instead, they pay a premium for the privilege.

Although the traditional PaaS model is still very much alive and kicking, with some developers still having the bruises to show for it, the concept has seen some liberation over the years.

Thanks to the containerization concept we mentioned earlier, we can now have PaaS-esque avenues to explore. It is common these days to deploy ‘container orchestration’ systems (a fancy word for automated container management) such as Kubernetes. In addition, we now have the concept of ‘DevOps’ available to us, with more tools than we know what to do with. Many of these tools allow for a level of abstraction similar to that of PaaS.

In the end, PaaS is something primarily tailored to engineers and the decision makers who oversee them. It requires considerable knowledge to work with PaaS, which is something people active in other areas don’t really care to learn about. They’re generally busy enough doing other things.

Enter SaaS, or Software as a Service: Cloud Computing for regular folks; the end-users.

SaaS: Software as a Service

Illustration of a SaaS diagram

Software as a Service is what most (non-IT) people think of when they think of a cloud service. A software product that is entirely managed by a provider. They will typically offer several tiers or subscription plans to match expected usage.

SaaS offerings number in the hundreds if not thousands, and include everything from accounting software to collaboration tools, and beyond. Cloud storage providers such as Dropbox, Box, pCloud, Google Drive, Microsoft OneDrive and the like all fall into this category as well. This is no doubt the reason many people consider cloud computing and cloud storage to be synonymous.

This is quite incorrect, however, as cloud storage offerings only make up a small part of the total amount of SaaS products. There are in fact a great ‘as a Service’ categories out there these days, quite a few of which are actually SaaS. They probably just felt the need to spice up their definition.

‘Database as a Service’. Wait, aren’t databases software? Yes, but a very specific type of software! Er, okay…seems like SaaS to us. Silence pleb! Still going to call it SaaS, toodlepip!

In fairness, SaaS can be quite ideal for organisations that don’t have a lot of technical aptitude in-house. No surprise then that pricing schemes can be quite steep and vendor lock-in is all but inevitable.

Spending considerable time and effort to adapt the application and the organisation to one another will leave few jumping at the opportunity to switch platforms. Something that is slowly but surely coming into public awareness.

Some providers therefore offer a self-hosted or self-managed version alongside their SaaS offering. This allows customers more flexibility, but it also puts greater demands on the customer, as infrastructure management will become their responsibility.

On the whole, SaaS is believed to optimise resource management better than PaaS, as vendors can tune their infrastructure to meet customer demand even more precisely. Not that the savings get passed onto customers of course, it’s to the benefit of the SaaS provider.

So, have we found our proverbial ‘cloud computing as a utility’ yet? No, dear reader, not quite. But we will in the next bit. Enter ‘FaaS’, or ‘Functions as a Service’.

FaaS: Functions as a Service

Illustration of person working with FaaS

Functions as a Service, ‘FaaS’ or ‘Serverless’ computing is a more recent entry in the *aaS family of computing paradigms.

It takes the laser precision of PaaS and goes full-on ‘subatomic’ in its specificity.

Like PaaS, it abstracts all infrastructure concerns so that developers can focus on writing their application code instead.

But unlike PaaS, FaaS is very much married to a shift in software development patterns.

In the old days, applications were designed as ‘monoliths’. Which is a way of saying that everything is packed into a single application. Then ‘micro-services’ came along, which means writing small applications that each deal with a specific task. Tasks such as user authentication, listing recommended products, handling payments and the like. Containerization, again has a large role to play in the realisation of that concept.

As it does with FaaS as well. But this time, instead of splitting an application into smaller ones that fulfil certain roles, it means splitting it up into individual functions.

What the flippitybollywhats does that mean, hmm?

We were getting to that, dear reader. More tea?

It means developing highly optimised functions; i.e. doing one very specific task, instead of a list of tasks. When putting these functions in specific sequences, they can in fact form applications. Each function is defined on the platform, and triggered when certain requests are made. A container is created to run the function, and retired (taken out back and shot) when the function is no longer needed.

Highly optimised indeed.

Needless to say, FaaS has ‘for developers’ written all over it. Regardless, it may actually be the closest thing to ‘computing as a utility’ so far.

With FaaS it is theoretically possible to have most of the IT infrastructure sleep until needed. A gateway remains awake to listen to requests. Once requests start coming in, it wakes up other servers. These start being filled up, container by container, until more servers are needed to do the job. Once the job is done (or the money has run out), the process goes in reverse, until a single lone watchman is left. Waiting for requests, while idly flipping through a magazine.

The Takeaway

Cloud computing encompasses a range of different services, paradigms, fancy gibberish and a fair portion of marketing gibberywhatsit. But looking into the forest, and between the trees, there is truth to be found. And genuine benefits.

But we have to circle back to the ‘computing as a common utility’ concept, so let’s attempt to distil it all to a clean takeaway. Of sorts.

A close-but-not-quite contender is typical Infrastructure as a Service. Subscribing to a managed Kubernetes cluster, empowered to create, manage, and decommission servers on demand, is indeed very close to being a common utility. Albeit a bit rough. Not cleaver-like, more like a chef’s knife.

With just about every provider offering such a service, it has become relatively simple to move between vendors and platforms by transferring the configuration and its resources to another vendor. Kubernetes makes Infrastructure as a Service a relatively vendor-agnostic solution, given its status as an industry standard.

Considering PaaS or SaaS a common utility, on the other hand, is essentially saying that electricity and water are vendor-specific and subject to conversion and re-engineering before they can be reconnected, operated or consumed elsewhere.

Illustration of a person contemplating cloud scaling

Functions as a Service is perhaps our best contender for the ‘common utility’ moniker. Unlike the others, it offers unparalleled precision in both software development, and infrastructure scaling.

That is easier said than done, however, and requires considerable design and implementation expertise. As such, hybrid solutions are more common in practice.

Kubernetes, for example, can be configured to include FaaS technology relatively easily. This means that IaaS platforms can now offer the best of both worlds: mostly managed and fully managed alike.

One last takeaway, perhaps the most important of all:

It is entirely possible to use all these things ‘offline’, on company premises. While that might not make a lot of sense for Platform or Software as a Service outside of the largest enterprise infrastructures, it certainly does for Infrastructure and Functions as a Service.

With these technologies, organisations can configure an environment where no hardware will be switched on unless it actually has a job to do. Moreover, it will be switch off after the job is done.

Not only that, it is no longer restricted to enterprise hardware either. Organisations can instead invest in fleets of affordable and simplified servers, or even ‘single-board computers’ to do the work. We’ve written something about that as well by the way: ‘An introduction to SBCs, or Single-Board Computers.’.

Something to consider for any organisation, whether they wish to save on investment and operational costs, or wish to reduce their carbon footprint. In cloud computing, these things are all very much connected.

Oh, and we have extensive tutorials and guides coming up to bring all of this to practice, dear reader. Not to worry, not your run-of-the-mill ‘have a taste’ kind of guides. Full blown, A-Z guides. Complete with free tooling and scripts that will quite literally build an entire infrastructure for you—from scratch.

See you there.

Yours,

Digerty

P.S. Although for staunch reasons we don’t engage with commercial platforms ourselves, please do share this article wherever you can, if you liked it. It will help us grow, and spread the word. Links are right there. Have a click, or long-press/touch for you fancy folk.

Comments

Related Pages:

Recent in Technology: