A Very Basic Overview of Cloud Computing (for Non-Engineers) and Why Amazon Web Services (“AWS”) is Growing so Big

Alexander J. Levin
15 min readDec 23, 2018
AWS logo in a cloud

I recently decided to learn more about cloud computing and wrote this article to consolidate my understanding of the basics. As background, I work in a finance role for a cloud computing company and did not study engineering or computer science at University. The main concepts covered in the article are: (1) defining the cloud; (2) IaaS, PaaS, SaaS; (3) benefits of IaaS for businesses; (4) cloud providers vs cloud services (5) private cloud versus public cloud; and (6) how virtualization technology enabled the cloud. To aid the reader, I have included plenty of illustrative diagrams throughout the article and provided links to additional resources at the end of the article.

What is the Cloud?

When you think of “the cloud”, think of the internet. The cloud is actually physical and it is made up of many giant data centers (buildings housing lots of computers) connected through the internet (interconnection of networks). A data center is a big warehouse-like building that contains lots of computers and related equipment. A network connects things together.

A Data center from the outside. Source: The Data Center Journal

The cloud (lots of computers in data centers that are accessible over the internet) allows customers to use “computers as a service”. A service is something you hire someone or a company to do for you. Cloud computing is accessing computer services over the internet. Cloud services are the things you can make computers in a data center do for you through the internet.

Computers inside a data center. Source: FacilitiesNet

Cloud computing is often divided into three categories: (1) Infrastructure as a Service (IaaS), (2) Platform as a Service (PaaS), and (3) Software as a Service (SaaS).

IaaS, PaaS, SaaS. Source: RubyGarage

Let’s start with Infrastructure as a Service (IaaS):

IaaS is renting computers through the internet, but it’s also like getting electricity or water from a utility company.

Here is an analogy to introduce IaaS, imagine how inefficient it would be if each time a new business owner wanted to open a business they had to build their own power plant and water filtration plant. This would greatly increase the time, cost, complexity, level of expertise, and planning required to start a new business, and some businesses would never even be able to afford this. This is similar to how companies had to build their own data centers before Infrastructure as a Service cloud computing.

For example, if a baker wanted to open a bakery, the baker wouldn’t want to have to first build a power plant. Instead the baker would prefer to just connect their bakery to the electric grid and water systems and buy only as much electricity and water as they need from utility companies. The baker is not in the business of building power plants or water filtration plants. Likewise, IaaS Cloud computing is similar to relying on utility companies to provide water or electricity, but instead they provide computing and storage of data.

Previously, each company had to buy land and build their own data center to house their computers or they could rent space in someone else’s data centers for their computers. Renting space in a data center from a company that provides the building, cooling, power, and physical security but providing your own computers is called colocation. This process was highly inefficient and made it much harder to start a new business that used computers or the internet at scale. By having one or a few [IaaS] cloud providers who build and maintain data centers, all customers can take advantage of economies of scale and more efficient use of shared equipment.

Infrastructure as a Service (also sometimes called Utility Computing or Foundational Services) refers to renting computing infrastructure. Computing Infrastructure (as a Service) includes (a) Compute, (b) Storage, and (c) Networking. When I think of computing Infrastructure, I think of the key functionality of my computer — it can do calculations (computing), it can store information (storage), and it needs to connect to the local network or internet (networking). A business can pay for as many computers (called servers) as they want as a service without actually owning or setting up all the expensive hardware or owning their own data center. As Amazon Web Services (“AWS”) a leading IaaS Cloud computing provider defines it, “Cloud computing is the on-demand delivery of compute power, database storage, applications, and other IT resources through a cloud services platform via the internet with pay-as-you-go pricing.” IaaS has been great for startups.

The IaaS market has grown rapidly to tens of billions of dollars because Infrastructure as a Service (IaaS) allows businesses to focus on what they do well, without worrying about undifferentiated aspects like building a data center. This is beneficial to many businesses / customers as not every company wants the hassle of building its own data centers which costs time, money, takes up space, requires experts, and delays the launch of their core products etc. Instead, the cloud provider (e.g. Amazon Web Services or Microsoft Azure) buys, maintains, and operates computers and rents them out to users over the internet and nearly everything is taken care of for the users. For example, AWS provides Elastic Compute Cloud (EC2). Elastic refers to how the user can add more computing power when they need it and give it back when they don’t need it anymore i.e. it expands and contracts like an elastic band. For storage, AWS provides Simple Storage Server (S3) which can hold huge amounts of data.

Please read the text. IaaS, PaaS, SaaS.

On a related note, when people refer to cloud computing, they often say something like “renting servers over the internet”. Think of the word server as engineering jargon for a computer. This terminology comes from a model of describing computing as the client-server model. In summary, think of the computer that you’re using as a client [computer] and when you do something over the internet it sends a request to another computer (the server) to do something to process your request. For example, when you browse on Amazon.com (on your client computer) and click on a product this sends a message to Amazon’s computers (the server computers) to send you back the data about the product such as price, details, reviews etc. The computer that processes your request and sends back the updated data is the server. I.e. The server serves / provides a service to the client computer. Often a server is a computer with dedicated functionality i.e. it does a few key tasks only.

The client-server model. Source: Wikipedia

What are the Advantages of using a Cloud Provider (IaaS) for a Business (short video here)?

Services offered by AWS. The red boxed services are IaaS, the rest are PaaS. Now companies and startups can leverage the infrastructure (IaaS) and the technological capabilities (PaaS) of Amazon. Source: AWS

Summary of IaaS Benefits:

• Customer only pays for what they consume (not idle or underutilized resources)

• Stop spending money on running and maintaining data centers

• Customer trades capital expenses for variable expenses

• Benefit from massive economies of scale

• Stop guessing capacity

• Increases speed and agility

• Flexibility to scale up or scale down with demand

• Go global in minutes

• Faster development

• Extremely reliable and safer

• Easier for programmers

EC2 (Elastic Compute Cloud) Foundations. EC2 is Amazon’s Cloud Computing IaaS Service. Source: AWS re:Invent (the AWS annual conference) 2017

Financial:

• IaaS reduces up-front costs and capital expenditures for businesses because the business doesn’t need to buy its own equipment, it can elastically rent as many computers as it needs when it needs (i.e. elastic and scalable).

• If the company wanted to build its own data center it would need to plan how many computers it will need, a process which can be difficult to accurately predict.

• Renting computers through the cloud helps a business’s cash flow because they spend money only as and when needed and as users use their product — use matches demand.

• Spending becomes an operational expense that is pay-as-you-go (expense occurred through the operations of daily business) rather than capital expense (big purchases like property, buildings, data centers, and equipment).

• If the business or project fails then the business isn’t left with expensive data centers, property leases, or equipment.

• Using IaaS is cheaper for almost every business, because the business doesn’t have to buy all equipment for their own data center and cloud providers, despite markups, have economies of scale.

• Big cloud provider like AWS then have more leverage to negotiate better prices on equipment from suppliers.

• Lower headcount cost because the business doesn’t need to hire data center engineers.

• Removes middlemen — the business connects to the computing infrastructure it is renting (IaaS) through the internet (cloud) and doesn’t need to negotiate purchases with salesmen.

Strategic:

• Globally scalable and allows faster launches in new regions / countries because the cloud provider is already in those regions.

• The developers and IT departments can avoid undifferentiated work like procurement, maintenance, and capacity planning.

• Faster time to market, because the business doesn’t have to worry about financial planning or budgeting of capital expenditures, building data centers, manager approvals, hiring data center engineers and other tasks that delay programmers

• The developers / programmers are freed to focus on building new services, writing software faster, fixing bugs, adding new features, and improving quality of the businesses core product. Allows the business to focus on just their products and just their competitive advantages.

• If the business needs more computing power then it can rent it within minutes (down from the weeks or months it previously took to add a computer to a data center)

• Access to the best computing, storage, and security infrastructure.

• Mergers and acquisitions can be better integrated because cloud platforms are more transferable and allow better integration of systems with less technical debt.

• The cloud model of subscription services incentivizes better business-to-customer alignment than license agreements because businesses focus on good customer service and releasing new products and updates to keep customers from unsubscribing.

• Cloud computing is much more environmentally friendly because it uses resources more efficiently and big Cloud providers like AWS use a higher proportion of renewable energy.

AWS global footprint. Source: AWS

What is Platform as a Service (PaaS)?

As an analogy, if IaaS is like a bakery that uses electricity produced in a power plant (analogy: data center), then PaaS is like the ovens in the bakery used to bake bread and confections. Someone starting a bakery doesn’t want to have to invent or build their own oven, they would rather buy an oven from a manufacturer. The oven manufacturer who provides the same oven equipment to bakeries, restaurants, caterers, and hotels is like a PaaS provider. The baker doesn’t mind that other bakeries also have electricity and have the same oven, because the baker wants to differentiate itself by the breads and pastries it bakes.

Platform as a Service refers to programs (software) provided as a Service over the internet to developers, who use the platform to build stuff (applications). Think of it this way, if a developer is building an application that needs to store data (e.g. user names and addresses) then they will choose a database such as Amazon’s Aurora Relational Database or Amazon’s Dynamo DB non-relational database to organize the data. In effect, the developer can use these pre-written platforms / programs / applications accessed through the internet, instead of having to develop their own database / platform / program

Another broad description of PaaS is that it is services / programs/ applications that developers can choose to use to build their applications and they don’t need to develop these services / programs / application themselves because someone else already has. Examples of PaaS are databases, messaging, search, firewalls etc. Generally developers will use these prebuilt services (platforms) when their application requires that feature as a checklist item rather than as a competitive differentiator. Using these prebuilt platforms increases speed to market.

Another view of IaaS, PaaS, SaaS. Source: Web Specia

Explaining terminology I used earlier, a database is an electronic system to store, organize, access, manipulate, manage, retrieve and update data. There are many different types of database systems but a common one is a relational database (like SQL, Structured Query Language). An analogy for a relational database, like SQL, is an Excel table that stores data in tables / matrices of cells with rows and columns organized by column and row headings.

Types of databases available from AWS. Source:AWS

What is Software as a Service (SaaS)?

Continuing the analogy of a bakery, SaaS will be like the breads and confections the bakery bakes and then delivers directly to customers. PaaS was like the ovens, dishwasher, and other machines in the factory, and IaaS was like the electricity and water supplied to the factory.

SaaS are programs / applications for the end user. For example, accounting software or customer relationship manager software etc. Whereas IaaS and PaaS are services used by developers to build products (maybe even build SaaS), the end user doesn’t use IaaS or PaaS directly. For example, you can use Gmail over the internet (don’t need to install it on your computer) as SaaS, but the developers who built Gmail need data centers (IaaS) and other programs / applications / building blocks (PaaS) to build the SaaS. As a user, you’ll often access SaaS over the internet like a website, for example when you log in to Gmail, Google Docs, TurboTax, Slack, Salesforce or your bank account to make a bank transfer.

The IT Stack, IaaS, PaaS, SaaS. Source: BMC Software

What is the Difference between a Cloud Provider and a Cloud Service?

Cloud providers own the data centers used by cloud services, for example Amazon Web Services owns data centers. The cloud provider owns a lot of computers housed in data centers around the world and rents them out as a service (pay per use). Therefore, when we talk of companies that provide IaaS we are mostly referring to Cloud Providers.

Services that run on the cloud are cloud services. For example, Gmail and Apple iCloud (think SaaS) are cloud services. You can think of it as mostly programmers / developers who use cloud providers to run and provide their cloud services. Cloud services are built by developers for customers / users.

Cloud Computing Deployment Models — What is the Difference Between a “Public Cloud”, “Private Cloud”, and “Hybrid Cloud”?

Another way of talking about Cloud Computing is by defining the type of deployment model, i.e. how is the cloud deployed or set up and there three main types.

(1) Public clouds (e.g. Amazon Web Services, Microsoft Azure, and Google Cloud Platform) can be used by any business pays i.e. a cloud provider rents out their computers to the public as a service (pay per use).

(2) Private clouds (also called “On-Premise”) are built by companies in their own data centers for their sole use (e.g. Facebook owns its own datacenters).

(3) Hybrid clouds are when companies have their own data centers and use some parts of the public cloud too.

How did IaaS and Cloud Computing Develop? Also an introduction to “Virtual Machines”, “Containers” and “Serverless”?

IaaS cloud computing is renting computers (located in data centers) through the internet. These computers are often called servers. However, you don’t necessarily rent an entire computer at a time. Virtual Machines (VMs) are software programs which allow powerful computers to be shared by splitting up the computer / server and allowing many programs to run on one computer / server at the same time. The virtualization makes it seem as if there are many different virtual machines, but actually all the operating systems are still running on the same computer. VMs make each user think that they totally and completely control the computer and hide that other users are sharing the computer. You can think of a VM as a slice of a computer. Therefore cloud computing and VMs make computer usage more efficient and hence cheaper to use.

There are two broad types of virtualization used: client installed and something called hypervisors. Client installed virtualization software is installed on the computer’s operating system (the operating system sits above / is installed on the computer’s hardware) and it allows the user to create multiple new instances with operating systems on the same bottom operating system. Said slightly differently, with client installed virtualization you install an operating system on the hardware, then install the client installed virtualization on that operating system and then create new instances through the client installed virtualization software. This makes it very easy to transfer operating systems between servers (computers).

Client Installed Virtualization. Source: Big Data Analytics

Hypervisors are more powerful than client installed virtualization software. When we talk about IaaS instances, we are almost always talking about hypervisors. With a hypervisor you install it directly on the hardware (not on the operating system as with the type of virtualization software described above). The hypervisor then provides an address to that computer, because you don’t manage that computer through the hypervisor but rather through management software installed on another computer. Hypervisors are better at fault tolerance than client installed virtualization software, i.e. they’re better at transferring the operating system, applications, and everything else to other servers if something happens to the server it was running on (e.g. it goes down from a power supply issue). Therefore, hypervisors provide redundancy of servers that leads to better reliability for running applications. A leading player in this virtualization space is a company called VMware. Cloud Providers, such as Amazon Web Services realized they could use this virtualization technology / hypervisors to allow the public to rent [shared] computers / instances of computers in their datacenters as a service with the user simply specifying the processing power and other requirements they wanted.

Virtualization and Multi-Tenancy. Image Sources: Znetlive.com and Vectro Networks

Containers is another method for sharing computers. Containers were developed after VMs and are better at sharing computers and use fewer resources and so more programs can be packed onto the same computer. Whereas VMs must pretend to look like full computers and use resources to make complete copies of the Operating System (OS) and virtual copies of the hardware needed for the OS, containers fool the OS into thinking each program has the computer completely i.e. the containers can share one OS. With containers you don’t need to create multiple copies of the OS like with VMs (with each copy requiring additional power/capacity). Containers can be 2–3x more efficient than VMs.

Virtualization vs. Containerization. Source: Upwork

Serverless takes renting slices of a computer even further. Serverless doesn’t mean there are no servers (computers), it just means that the developer / user doesn’t need to worry about the servers / computers being used. Before Serverless, the user / developer still needed to specify the computer specifications they needed in terms of how much processing power and memory etc. Serverless allows the user / developer to upload just a function and it runs it for you. A function is a set / chunk of code written in a programming language that gives the computer instructions / tells it what to do. Entire applications are built up by combining functions (sets of instructions). Serverless is also sometimes called Functions as a Service (FaaS). An example of a serverless services is AWS Lambda.

AWS Lambda. Source: AWS

Serverless has many advantages and it is often cheaper for developers because they end up renting less resources to run their applications, only pay when their functions are running, don’t pay for any idle-time, and removes overheads like capacity planning (of computer usage). However, serverless is still a relatively new way of architecting applications and requires more specialized technical knowledge / experiences versus VMs. Additionally, containers have certain advantages over serverless and VMs such as better consistency between production and deployment environments (how the application runs on the developers’ machines and how it runs when it is deployed over the internet to the public), but can also require more specialized knowledge and complexity than VMs.

This concludes my very basic introduction to cloud computing — thank you for reading and if you liked the article, please give it a clap.

Goodbye. Source: Pixabay

For more information check out some additional links:

· Video explaining how virtualization works

· Book providing a basic intro to the cloud

· More basic intro to cloud computing articles (1, 2)

· The formation of AWS (1, 2)

· A history of virtualization

· More detail on containers

--

--

Alexander J. Levin

Based in Seattle. Wharton, Cambridge, Fullstack Academy, former M&A banker, former Cisco Global Infrastructure Funds Team, currently Amazon AWS.