What Is Cloud Computing?

Content Warning

This Article Begins at a very high level which is great for non-engineering folks. As you continue through the content it gets progressively more detailed and technical. Continue at your own risk.

Cloud Computing Defined:

Cloud Computing is the incremental provision of computing resources provided by a 3rd party entity.

Cloud Computing in layman’s terms

Cloud Computing provides access to computing resources to individuals and businesses to enable the running of applications without the need to setup complex hardware or software. These resources can be billed in increments of seconds or minutes similar to the way we are charged for power or water utilities.

Another Way to Look at Cloud Computing

Here’s a nice clique example for you. You’ve just built a new home and you have 2 options as far as gaining access to water:

Option 1 – Digging a Well and Connecting Water

Here’s what is probably involved in something like this:

Build OutMaintenance
Dig a large holeWell wall maintenance and inspection
Purchase and Install a PumpPump Maintenance and inspection
Setup water filterCheck and replace filter periodically
Build a pump housePump House Inspection & Maintenance
Install power to pump houseTroubleshoot electric issues potentially
Connect well to house plumbingInspect pipe periodically
Build your own Water Supply

While the upfront costs are high, the on-going costs mean that you have no water bill. Yes, you may need to pay for sewer unless you have a septic tank but generally your water is “free” but there is maintenance and the risk that an outage means you have no water. There is no one to call put an electrician, plumber or a core drilling expert to help when you run into issues.

Option 2 – Municipal Water

Getting water from your local town or municipality is a bit more straight forward. It would literally look like this

Build OutMaintenance
NoneNone
Receive Water On Demand

Other than the price of the house and faucets which cost us money in either option 1 or 2, there is no real maintenance or build out cost. While the water certainly isn’t free, you are tapping into an economy of scale built by a much larger entity. When you run into issues, the repair is most likely covered by your local utility regardless of how many electricians, plumbers or tank specialists need to be called in to assist.

Advantages of Cloud Computing

Some advantages of using cloud computing rather than setting up your own systems:

  • Security. Giving inbound and outbound access to any computer makes it vulnerable, cloud computing firms can give remote access to computing assets while protecting it from intrusion.
  • Metered Billing. Setting up a dedicated computer (server) can cost easily over $1000, this maybe overkill if you need it to host a website that will only need 1% of the computing resources of the dedicated computer you’ve purchased. A cloud computing firm could sell you the needed computing resources for less than $10 per month depending on the amount of computing resources you will need.
  • Universal Accessibility. Cloud computing resources can be reached from anywhere that has an internet connection. Opening up the internet to a computer on your own network (i.e. not using cloud computing) takes thoughtful planning and investment to ensure that only the resources you’d like to share are available to the world.

To really understand cloud computing, it’s helpful to know how computing started. Not necessarily how desktop computers worked but how organizations used applications that required the sharing of data. For instance This definition will make more sense with some historical context. If you wanted to deliver an application to employees, clients or to the world, it used to take purchasing a server (basically a computer with good specs) and installing the application on it. From there, you would expose the application to a network which allowed end users to login. So to really answer the question of what is cloud computing, we decided to go into this very long explanation of cloud computing before cloud computing existed in this form. Although one could easily argue that mainframes provided the function of cloud computing decades ago. More on that later.

The History of Enterprise Computing

To really understand Cloud Computing is, it’s best to understand what came before it to understand the relationship.

Note: This list is widely subject to debate and in some regards, we can look at almost any of these methods of application architecture as cloud computing if they were provided outside of a single office. But regardless, with the understanding of the background, the knowledge

1Mainframe Computing
2Client Server Computing
33 Tier Web Application Architecture
43 Tier Web Application with Virtualization
5Microservices Archiecture
6Serverless Computing
Stages of Enterprise Computing

Section 2 – Client Server Computing

Bear through this example, it will give you an easy to understand example of how cloud computing really came into being and why it makes all the sense in the world. To demonstration the example we’ll start with a mock scenario below:

Server vs Computer

We will use server and computer interchangeably though out this series. A server is a computer with a good amount of processing power and is generally not directly accessed physically by a user. In many cases a server maybe locked in a special office, a server room or even a data center. In early client server application roll outs, what was functioning as a server could have been a regular computer in all regards.

Example – A Small Manufacturing Firm Circa 1992

Let’s say you run a small business that’s grown and you’ve just added an office manager in addition to your existing bookkeeper. Traditionally the bookkeeper had some accounting program installed on their computer and only they accessed it. When the owner of the business asked for it, the bookkeeper could product a bunch of reports and hand them to the owner, so the owner didn’t really need to have dedicated access to the accounting system.

So the new office manager comes in and wants to really make some dramatic changes to the office and really push the office operation to the next level. So the office manager sits with the bookkeeper and has a discussion that looks like this:

Office Manager: I’d really like to see how much we spent on office supplies and our coffee service. I am being asked to really understand where we can save money

Bookkeeper: Well, I can provide you reports on what we spent last quarter on office supplies and the coffee service, I’ll print it out and give them to you.

— 2 days later—

Office Manager: I forgot to ask, can you send me another report that includes our fuel costs on all the vehicles in the office?

Bookkeeper: Sure, I can do that, I’ll print it and give it to you shortly.

—2 days later—

Office Manager: The reports were interesting, can you give me the same reports going back for the past 2 years? I’d like to see how it changes quarter to quarter and by the way, with the bosses approval, do you think you could install the accounting system on my computer so I can run these reports without bugging you? I’d really like to understand how the accounting works so I can put together a budget for the owners.

Bookkeeper: I am not sure how that would work. If we install it on your computer, you couldn’t see the accounting records because they are on my computer only and there’s no way to really share that data. Talk to the boss to see if there’s a way that his computer guy can make this work on 2 machines so you can see the same accounting data that I see.

Meanwhile, the boss has brought in some technical expertise and they’ve transformed the accounting system. But let’s take a look at how the accounting department looked before the technical expert was brought in. You basically had:

  • Single User
  • Single Application
  • Single Computer
  • No outside connections
Figure 1: Single User – Single Application – Single Computer

After the tech expert was called in, the application was setup in client server mode which means the application was installed on 2 computers with these parameters:

  • Computer 1 has the application + the accounting data
  • Computer 2 has the application and NO accounting data
  • Computer 2 reads and writes to computer 1 as needed
  • Computer 2 reads and writes to itself as needed
  • Our model assumes that the software licensing permitted this type of use
  • Our model assumes there was some simple network in the office (remember this was pre-internet!)
Figure 2: A Client Server Model

Assuming this office properly backed up computer 1 frequently and kept a copy of the data offsite in a secure space this generally worked ok for many organizations. A few issues though:

  • Since the data was stored on computer 1, this machine had to be left on
  • Poor usage habits of the user on computer 1 could corrupt the accounting data
  • Backups had to be manually managed

So the business grows and let’s say this business has a warehouse manager who relied on the bookkeeper to print invoices but one day the boss decides it would be good for efficiency if the warehouse prints their own invoices so that shipments could go out faster in the morning. To do this, the model would look like this:

Figure 3: Client Server Computing with 3 machines total

So in this model, there are 3 machines total. The application is installed on all 3 machines, the data resides on the original computer that was setup. As long as the computer that had the application data was secure and running, this worked well. But, the nature of computers aren’t so easily ignore. Out of nowhere, the app and data computer suffers a catastrophic hard drive loss. Of course, this business was savvy enough to store backups in the office as well as off site. So the office manager purchases a new hard drive, the computer is opened, a new hard drive is installed, all the applications are installed and the data from the accounting system is copied from backup onto this machine. This is good but no one could get access to the accounting data for hours and things got delayed and held up.

So we introduce the next iteration of client server computing where a 4th machine is introduced that we will call the accounting server. This machine has no user on it ever, it sits in a corner of the office and no one is supposed to directly touch this machine except for maintenance.

Here’s what that would look like:

Figure 4: Dedicated Server for Data

Other Client Server Use Cases

We wanted to outline client server in a simple, relatable manner by using a small business. Interestingly enough, big businesses also used this same model but they used the model in Figure 4 above which includes a dedicated computer that stored all the data and rather than 3 “app only” computers, they could have hundreds. Additionally, they could connect other offices around the world using WAN (Wide Area Networks) which all tied back into that large Data only server.