Unlike, well, let’s say 20 years ago when a company built a data center for themselves or their own private internal use, these data centers were built with the intention that the resources inside them would be made available to outside users for a price so they can pay to be able to use a part of the resources and computing power in those data center for whatever reasons important to them.
You can use a data center for storage of files, documents, data offsite backups or use it to run your website, host an email server or a database, or to develop and run internal applications. You may even be uninterested in all of that but just want to use some piece of software that somebody else is running in that data center. But there is a caution that I want to make here.
When you first hear about all these massive cloud-focused data centers, it’s very easy to think cloud computing is all about the impressive buildings, the cameras, the biometric security, all the power backups, cooling systems, and the incredible racks of hardware.
No. All that equipment is not the most important thing here, because if all we had was the physical infrastructure of buildings, servers, drives and networking, that’s just a data center. We’ve had those since the 1940s. What really transforms this into cloud computing is what has then been added on top of all that equipment: an additional layer of software, the management systems to connect, control and automate everything in that data center.
That’s what we will interact with. We don’t get direct access to the computer hardware. We deal with the software. It will take care of what’s actually going on behind the scenes.
Self-Service on Demand
If I wanted to start using a cloud service, whether that’s signing up for a personal account with some backup service or using one of these impressive cloud computing data centers to host my website, here’s what I don’t have to do. I don’t have to make a phone call, wait for a sales rep to call me back, sit through an appointment, get a written quote, write a purchase order, wait for approval, et cetera, et cetera. No!
With cloud computing, I should be able to get what I need immediately because all of these cloud services, from the personal consumer focus ones, up to the high-end enterprise level ones. They all have software. Two examples are shown in the following two figures.
Typically, to interact with this portal or management console I will follow these steps:
- Go to their website
- Create a new account
- Fill in my payment details or use free trial
- Select the service or feature I want, whether it’s a web server, an area of storage, a database or access to some global content delivery network.
Within seconds, occasionally a few minutes, it will be provisioned and made available to me. One of the most important qualities or characteristics of cloud computing is that it is self service and on demand (as explained above). However, I don’t want to suggest that the software part is just a way to automate your ordering and purchasing something. No, it goes far beyond that.
It removes the need for human interaction in almost every part of this because the software also takes care of immediately provisioning and allocating any of those resources I’d asked for and make so that they aren’t accessible by anybody else. It monitors the hardware and takes care of any issues or faults usually without me even knowing there was an issue or a fault. It continually monitors what my usage is.
Some cloud services might be charged at a flat rate per month, per hour or per day, but other resources like network bandwidth might be metered like electricity where you’ll pay for the amount you use. But again, what makes this all possible is not just the hardware in the data centers, it’s all the software that manages that hardware. That’s what simplifies everything. That’s what leads to these great improvements in cost and convenience and speed.
One of the most important ways that we’ll get cost efficiencies is that the computing resources in these cloud focused data centers, like the actual servers or hard drives, they are not allocated one by one to every user who comes along. Instead, they are pooled and shared. We need to talk about that idea.
Before cloud computing, if you didn’t have your own data center but you want it to use somebody else’s, there were a few ways to do it. First is you just basically rent some empty space in that building, sometimes an entire room or sometimes just one space in a server rack. See the figure below.
The company who owns the data center would take care of the building, the power, the internet connectivity, the air conditioning and the rack itself. But where I’d have to bring along my own server that I’d already set up, I’d have to plug it into that space and hook everything up. This is what’s referred to as colocation or colo. See the figure below.
Another option is where the company who owns the data center might provide a bank of servers where I could arrange to rent one, two or three of those specific servers. That server would then be dedicated to me where nobody else would have access to it. See the figure below. But what I was paying for was the use of individual specific dedicated pieces of hardware.
But with cloud computing, that’s not how any of this works. We are typically not dealing with dedicated resources. Instead, we get access to a large pool of shared resources. This is illustrated in figure below.
If I sign up for a personal account on one of these cloud-based storage services like OneDrive, iCloud or Dropbox, that doesn’t mean someone from those companies has to walk down to the basement, unwrap a new hard drive just for me, write my name on it and plug it into the data center somewhere! No.
What I’ll get is access to use a part of their existing massive storage and computing infrastructure. They may still have hundreds or thousands of individual servers and hard drives, but they’ve all been connected together as part of a larger system. Getting access to that system implies that whatever files or documents I upload to the cloud will end up actually being stored on some hard drive somewhere. See the figure below. In fact, because they are stored across multiple hard drives, there’s redundancy in case of failure.
But the thing is I’ll never know exactly what hard drives my data is stored on. At the personal or consumer level, I probably don’t even have any idea of the location of the data center where that is. That’s okay if I’m uploading a document to the cloud, whether that document actually ends up being stored in a hard drive in Texas, North Carolina or Germany, it shouldn’t matter at all.
One of the benefits all pooled resources have is they are much more tolerant to any kind of failure. So, if one hard drive fails in this bigger system, it just doesn’t matter because the cloud service provider all expect the hard drives to fail. The system itself can detect a failed drive, avoid it and allocate another drive in the pool to do what that first drive was doing. That kind of thing won’t even require human intervention. It will all be managed by the software running in those data centers.
When resources are pooled, we can support a lot more users at the same time, because most of the time you don’t need any computing resource you’re using to run at full capacity. Think of your own desktop or laptop. It might spend most of its lifetime running just a small percent of what it’s capable of. That’s a lot wasted potential. But in a cloud computing environment, it can be re-allocated to other users who will pay for that.
So, resource pooling makes things more efficient, cheaper and better protected from any single point of failure in the hardware. The figure below is a summary of the general characteristics of any cloud service.
Everything as a Service
Introduction to the “aaS” model
There’s a massive amount of companies providing cloud services of some kind. So, it can be useful to have a way to categorize these services in a bit more detail so we can broadly recognize what it is they do. For example, if I’m reading about some new cloud-based company, can I quickly understand what service they provide and why might I care?
Now we already talked about the fact that you can think of some cloud services as focused on individual end users where others are focused on small businesses. Some are at the enterprise level and others are specific types of business, like transportation or hospitality.
But beyond the audience, there are also several common general categories in the cloud computing world and you can recognize these categories whenever you see the phrase something as a service. The three you’ll hear most are:
- Software as a Service (Saas)
- Infrastructure as a Service (Iaas)
- Platform as a Service (Paas)
When you read cloud literature, you will certainly see those three terms Saas, IaaS and PaaS. These three terms form a high-level model of how cloud is organized. They also represent three different entry points to cloud.
You will see “other things as-a-service” phrases, for example, “Databases as a Service”, “Mobile backend as a Service” or “Business process as a Service”. But the first three listed above are by far the most common and most widely used. So, I want you to know that whenever you see a different “something as a service” phrase, it’s really just a slightly specialized version of Saas, Iaas or Paas.
Software as a Service (SaaS)
Software as a service or SaaS is usually the simplest one to understand because most business users are using it already, even if they don’t think of what they’re doing as cloud computing. You may already be using Saas if you use any of the following services or similar:
- A web-based email provider like Gmail, Outlook or Yahoo mail.
- A web-based document creation tool like Office 365 or Google docs.
- A collaboration tool like Box or Slack.
- File backup and synchronization services like Google Drive, Dropbox, Microsoft, OneDrive and Amazon Drive.
- Customer relationship management software like Salesforce and HubSpot.
- Human resources software like Workday and Zenefits.
These are all software as a service. There are hundreds of others, but what’s common about all of them is when you use them, you’re using an application in the simplest sense of the word. It’s a complete piece of software with functionality that you can use to accomplish things. You or your company didn’t have to design and build that application. It already exists. You just use it.
You could download, install and then run them completely on your own computer. The software for these applications is running on servers in a data center somewhere and you’re connecting to it to use it, often but not always through a web browser. See the figure below.
The important part of all of these is it’s still running somewhere else, the cloud, so it satisfies all those five qualities of cloud computing (discussed above), which are:
- You need to be connected to the internet
- The actual code and functionality for this is running on their servers, not on your machine
- It is on demand (self-service)
- You sign up for what you need when you need it, and
- It’s using pooled resources so when you sign up for any of these SAS applications, you’re not getting your own server. You’re sharing those resources with a bunch of other people and other organizations.
Now, one of the things that is very common is that with software as a service, you don’t own the software. It’s most commonly a subscription model. So, if I stumped paying for access to Office 365, Salesforce or Netflix, I won’t be able to continue using it.
Now there are a few SaaS applications you may not directly pay for. They might be subsidized through ads, be free for personal use but challenge for business use, or free up to a certain amount of usage.
Now, while it’s true that you interact with many SaaS applications primarily using a web browser, it’s not always the case. Some of the file backups synchronization services, for example, usually ask you to install a lightweight app that will run on your computer or phone, and that app is connecting to the software running in the cloud. It’s uploading and downloading in the background (See the figure below).
But what that means is some people might be using these services without ever visiting the website. They are still using software as a service. It’s a finished application running in the cloud.
Infrastructure as a Service (IaaS)
We may also be interested in having deeper access to the resources of a cloud computing data center, where we could work with servers, storage and networking, typically because we’d want to then build something using those. When the cloud service provider offers us that option, we call it infrastructure as a service.
Now, some companies only provide software as a service (SaaS). Some only provide infrastructure as a service (IaaS), while some companies might do both or also provide platform as a service, which we’ll talk about in the next section.
The companies I might consider as classic examples of this area would be Amazon AWS (AWS Elastic Compute Cloud (EC2)), see the figure below.
and Alibaba cloud. These companies all provide infrastructure as a service, but again, they’re all still self service and on demand. I can log into any of these sites, create an account, add a payment method or use a free trial, and then just start configuring the resources I’d want to use.
So, if I wanted a server, I could actually select how much Ram I want that server to have, how fast a CPU I want, or what size of hard drive I want. See the figure below.
Also, I could choose where this server would be located, which region or which data center of that cloud provider.
But here’s an important point. When I do this with any of these cloud service providers, I am not going to get dedicated access to one actual physical machine sitting in that data center. Instead, I’ll make use of an emulated or a virtual machine (VM). See the figure below. A virtual machine is basically a program that’s running on a real physical computer but is completely emulating another computer.
It looks and behaves to me just like a dedicated computer. I can have whatever operating system I want. I can install whatever software I need. I can run applications and save data. One of the great things about virtual machines is they can be saved, just like saving a document, and you can then move them from one computer to another or even duplicate them.
Virtualization is the foundation for IaaS and is defined as the logical division of physical computing resources. The thing is each physical server in a cloud computing data center can support several virtual machines at the same time.
This brings us back to the idea of resource pooling discussed in section 1.7. Virtualization is one of the things that allows cloud computing providers to automatically pool these resources, rebalance and move things around as needed. It makes things flexible and more efficient, which makes servers cheaper and more fault tolerant.
This means that If there is an issue on any of the physical servers, any of the VMs can simply be moved to another machine. Although these virtual machines might belong to completely different customers, each customer’s individual experience is identical to having their own dedicated machine, their own operating system, libraries and applications. The term for this is …
If somebody rents a house, we call them a tenant. So, when we have multiple users renting or spending time on the same shared computing resource, it is called multitenancy in cloud computing, that is, multiple tenants are supported on the same server. See the figure below.
In a managed cloud environment, all these different tenants have no idea that the other tenants even exist, even if it’s right beside them, because they’re all isolated from each other. So, programs running on one virtual machine cannot access the code, storage space or traffic of another machine, unless they’re explicitly allowed to.
Lift and Shift
Using infrastructure as a service (IaaS) also includes things like storage and networking. This allows you to place almost anything into the cloud, including doing what’s called a lift and shift. That’s where you would take systems that you currently have running on your own hardware, premises (or on prem as often called), and without re-architecting or re-designing anything, just directly moving those systems into virtual machines running in the cloud.
IaaS brings on-premises concepts to cloud so that you can model your applications in the same way as in an on-premises environment. In other words, if you have an existing on-premises application, you can simply “lift” it from your on-premises data center and “shift” it to cloud. This is where the term shift-and-lift came from.
Although shift-and-lift sounds logical and easy, there are a couple pitfalls, some of which may be very dangerous and can interrupt your projects on cloud. In other words, things are not that simple. There are several on-premises applications that are not designed for a cloud environment. You might easily “lift and shift” such applications but they’ll encounter various problems when they continuously operated on the cloud.
Ultimately you may find out you will have to redesign or rewrite parts of your applications to make them really thrive on the cloud. You may have to make a significant investment to learn a new PaaS system and write everything again from scratch.
This dilemma is something I see as the biggest problem when I think of using the “aaS” model for the cloud. This explains why we will look at a different model for describing the cloud in another section of this tutorial. It is called the CRM model.