Over a million developers have joined DZone.
{{announcement.body}}
{{announcement.title}}
Refcard #082

Understanding Cloud Computing

Amazon EC2, Google App Engine, and Microsoft Azure

Written by

David Posin Web Application Engineer, Self
Daniel Rubio CTO, Personal

This Refcard will walk you through the basics, from where exactly clouds are located, to deciphering the differences between cloud service types (IaaS, PaaS, SaaS), and the key benefits you can expect to receive.

Free PDF
DOWNLOAD
Brought to you by Rapid7
Section 1

About Cloud Computing

Cloud computing as an idea encapsulates a wide range of business and consumer services. At its most basic, cloud computing refers to using resources over the Internet that are housed somewhere else in the world for specific purposes.

Interacting with a cloud service is usually done through a web browser or command line interface. There is usually no software to install, no hardware to set up, and no data center to rent space from.

Google and Amazon were two of the earliest to the field of cloud computing, soon followed by Microsoft. The portfolio of products offered by cloud companies has matured and evolved over time, and so has the competition. Firms such as IBM and Rackspace, among others, have joined the fray. The field of cloud computing now includes a myriad of companies all offering services. This card will focus on Google, Amazon, and Microsoft since they are the market leaders at the time of this writing, and have the most mature product sets.

Section 2

Types of Cloud Computing

Cloud computing can be broken down into three main categories: IaaS, PaaS, and SaaS. Each is discussed below in more detail.

IaaS (Infrastructure as a Service)

Infrastructure as a Service is what people usually think of when discussing cloud computing. IaaS emulates the hardware that companies traditionally purchased to create internal and external networks. The chore of installing hardware and connecting it to physical networks has been replaced with the task of creating robust configurations. Almost every part of a traditional network is offered as a cloud service.

Examples

  • Servers

  • Firewalls

  • Routers

  • Load Balancers

  • CDN (Content Delivery Network)

Benefits

  • No Hardware: No need to invest in equipment

  • Cost is a Function of Usage: Initial investments are much cheaper than equipment acquisition

  • Scalability: A network can easily scale, retract, or transform without taking a financial impact from leasing clauses or acquisition

  • Swift Management: Ability to react to network problems or improve network configurations quickly

Cons

  • Learning Curves are Steep: It takes time and effort to be able to use an IaaS service to its fullest potential

  • Outside your control: The resources supporting the network are controlled by another company

  • Service Agreement: The agreement controlling your use of the service might require legal review

  • Subject to Network Reliability: Most IaaS vendors can boast of uptime in the 99% area so there is very little to worry about, but outages do occur

SaaS (Software as a Service)

Software as a Service is so common in the modern Internet age that it is almost overlooked as part of the cloud computing field. Software as a Service describes any Internet-based product that provides a specific set of operations. This includes everything from email to contact management.

Interacting with a SaaS product had traditionally been done through a web browser. This has been slowly changing with the ubiquity of mobile devices. Most SaaS products now include web and mobile device clients.

Examples

  • Email services: Gmail, Outlook.com

  • Customer Relationship Management (CRM): Salesforce

  • Business Productivity: Office.com, Dropbox, Box.com, Google Docs

  • Application Support: InsideOps, Logentries, Google Forms

Benefits

  • Managed Service: Customers of a SaaS product are able to focus on using it; there is no need to worry about the software or hardware required to make it run

  • Quick and Regular Updates: The product is the main focus of the company; the vendor is constantly improving, fixing, and patching to improve their tool’s usefulness

  • Portability: Enterprise-grade SaaS products will usually work on all modern browsers and a wide range of mobile devices

  • Dedicated Customer Support: If something needs to be fixed, your internal resources don’t have to slow their work down to fix it

Cons

  • Product Growth is Outside Your Control: The roadmap of the tool’s development and the features being added are outside your control. However, most vendors have a method for customers to request features

  • Service Agreement: The agreement controlling your use of the service might require legal review

  • Customization Can Be Difficult: Customizing the product to specifically meet your company’s needs might not be possible or might be costly

  • Reliability: Most SaaS products have uptime in the high 90% range, but outages do happen

PaaS (Platform as a Service)

Platform as a Service products has received less attention than their SaaS and IaaS siblings until recently. The power that a platform can provide is becoming much more appreciated in recent days, which has led to a boom in PaaS products. PaaS products sit in the middle between IaaS and SaaS. PaaS services allow customers to create a customized experience on top of an existing set of tools.

Examples

  • Customized Interactive Running Tournaments: RaceLink

  • Application Building: Google App Engine, SAP Hana, Cloud Foundry

Benefits (similar to SaaS products)

  • Quick and Regular Updates: The product is the main focus of the company; the vendor is constantly improving, fixing, and patching to improve their tool’s usefulness

  • Portability: Applications built on enterprise-grade PaaS products will usually work on all modern browsers and a wide range of mobile devices

  • Customization: The ability to use the PaaS product as a starting point means the applications built on it can be more closely tied to your business and its processes

  • RAD (Rapid Application Development): Getting applications built, and in the hands of your employees or customers happens much more quickly than traditional application development

Cons (similar to SaaS products)

  • Product Growth is Outside Your Control: The roadmap of the tool’s development and the features being added are outside your control. However, most vendors have a method for customers to request features

  • Service Agreement: The agreement controlling your use of the service might require legal review

  • Reliability: Most PaaS products have uptime in the high 90% range, but outages do happen

  • In-House Development Still a Factor: Internal employees might need to spend time tweaking, fixing, or enhancing applications

Section 3

Cloud Basics

What is The Cloud?

The Cloud is shorthand to describe the huge interconnected network of servers designed to deliver computing resources without a sense of location. In other words, The Cloud feels to users like a giant formless mass of computing power that runs everything from email to mapping to mobile applications.

In business terms, there is no “The Cloud.” Cloud computing is really a collection of licensed services provided by different vendors. Cloud services take technology management and technology acquisition away, and replace it with products that are managed elsewhere and are only active when needed.

In order to better understand what cloud services provide, let’s compare cloud to other traditional technology location options:

On-premise

Describes software and hardware that is housed and directly managed inside a business’ physical location. On-premise hardware and software is usually always on and available.


Off-premise

Physical hardware and software tied to a particular location, often leased space. Off-premise hardware and software is usually on and devoted to the customer using it. This can refer to offsite data centers, tape archive locations, etc.

Cloud

Physical and virtualized hardware and software that is hosted as needed on any available resource inside a farm of resources. A company may be using a server to run an application but it is not a physical server leased by the company. The particular server being used changes as needed by the provider and can be in any number of locations.

Where Are Clouds Located?

Consumers and businesses use different cloud services with such ease and for so many purposes that clouds can feel very ephemeral. When you begin using cloud computing with vendors directly, you are very quickly reminded that geography does matter. Although it may be true that most applications can be reached anywhere, unless geography is taken into account, it will not be the same experience everywhere.

Cloud computing products are generally region aware. All providers will give you some control over where to locate your environments. The location and scope of a region will differ per provider.

The number and location of regions you need will largely depend on the scope of your application, network, latency tolerance, and SLAs. The particular services required will also impact the choice of regions. Not all services are available in all regions.

The biggest factor that often creeps into conversations about regions is latency. The amount of time it takes data and resources to travel from the server to the client can make the difference between an application being adopted or abandoned. An application serving static web content can probably be in fewer zones. The lighter data load means transit will be faster. However, an application serving large datasets should probably be located in the region closest to the user base. Larger data sizes traveling farther distances will accrue more latency.

Latency is an important factor for networks as well as applications. The number of hops that network packets need to take can quickly impact system response time. A load balancer can help with controlling traffic but if traffic has to go through several networks hops before hitting the load balancer, then the balancer’s impact is minimal. Consider network latency as well as application latency when choosing regions to host your network.

Amazon Regions (as of 3/2017)

Asia Pacific

  • Mumbai
  • Seoul
  • Singapore
  • Sydney
  • Tokyo

Canada

  • Central

China

  • Beijing

Europe

  • Frankfurt
  • Ireland
  • London
  • South America
  • São Paulo

US East

  • Northern Virginia
  • Ohio

US West

  • Northern California
  • Oregon

GovCloud

  • GovCloud

Google Regions (as of 3/2017)

Central US

  • Council Bluffs
  • Iowa

Eastern US

  • Berkeley County
  • South Carolina

Eastern Asia-Pacific

  • Changhua County
  • Taiwan

Northeastern Asia-Pacific

  • Tokyo
  • Japan

Western Europe

  • St. Ghislain
  • Belgium

Western US

  • The Dalles
  • Oregon


Microsoft Regions (as of 3/2017)

Americas

  • Virginia
  • Iowa
  • Illinois
  • Texas
  • West Central US
  • California
  • West US 2
  • Quebec City
  • Toronto
  • Sao Paulo State

Asia-Pacific

  • Beijing
  • Busan
  • Chennai
  • Hong Kong
  • Mumbai
  • New South Wales
  • Osaka
  • Pune
  • Saitama
  • Shanghai
  • Singapore
  • Tokyo
  • Victoria

Government

  • Iowa
  • Virginia
  • US DoD East
  • US DoD Central

Europe

  • Cardiff
  • Frankfurt
  • Ireland
  • London
  • Magdeburg
  • Netherlands
Section 4

Hybrid Clouds

Cloud computing has evolved a lot over the last few years. What was once an external addition to business’ infrastructure has become an integral component. The concept of the hybrid cloud is a reflection of that evolution.

A hybrid cloud is one that integrates cloud resources with other on-premise, off-premise, and third-party resources. In most cases, these integrations are transparent to the user. For example, a local file server might host tomorrow’s presentation, but employees working on it are using Office.com’s cloud-based Powerpoint product.

Some cloud services even allow physical integrations to meet security, latency, and other business needs. Vendors often refer to these connections as connecting to a cloud’s edge. Amazon’s AWS Direct Connect, Google’s Interconnect, and Microsoft’s Express Gateway are all examples of this configuration.

Section 5

Cloud Services

Cloud company product offerings tend to be wide, specific, and designed to fill niches. Collectively, it is possible to run an entire organization’s technology stack on the cloud. The more common case is to use cloud providers to enhance existing pieces of infrastructure, or add pieces that are missing. Google, Amazon, and Microsoft all provide a combination of IaaS, SaaS, and Paas products for companies to pick and choose from.

The tables below attempt to identify the most widely applicable offerings in each of the big three that perform similar operations. Some of the categories may differ slightly as not all providers use all the same nomenclature. The table uses the category that matches the majority when there is a discrepancy.

Computing - Virtual servers, information processing, and event handling

Amazon

Google

Microsoft

Virtual Machines - including scaling

Amazon EC2

Amazon Lightsail

Compute Engine

Virtual Machines

Virtual Machine Skill Sets

Virtual Machine Containers - i.e. Docker containers

Amazon EC2 Container Registry

Amazon EC2 Container Service

Container Engine

Container Registry

Azure Container Service

Azure Container Registry

Web Application Support - ranging from supporting a ready-made application support platform to full PaaS application creation and management

AWS Elastic Beanstalk

App Engine

App Service

Event Handling - Serverless functions that can respond to specific event signals

AWS Lambda

Cloud Functions

Functions

Batch Processing - Batch computing and large scale processing that can be done off peak hours

AWS Batch


Batch

Storage - Data storage structures akin to disks and tapes

Amazon

Google

Microsoft

Object Storage - storage of object based data

Amazon S3

Cloud Storage

Storage

Block Storage - storage of data in blocks and tracks. Ideal for virtual machine disk drives

Amazon EBS

Persistent Storage

Storage

File Storage - file system like storage

Amazon Elastic File System


Storage

Archives - Services to store large amounts of data that don’t require immediate and regular access

Amazon Glacier



Hybrid - Storage mechanisms that bridge in-house storage with cloud storage

AWS Storage Gateway


StorSimple

Automated On-Premise Backup - Automated backup of on-premise computers and server applications to the cloud



Backup

Private Cloud Recovery - Automated private cloud recovery services



Site Recovery

Data Migration Services - Move large amounts of data around the network, or collect multiple data sources into one place.

AWS Snowball

AWS Snowball Edge

AWS Snowmobile



Databases - Wide range of organized data repositories from relational SQL to NoSQL to cloud caching

Amazon

Google

Microsoft

Relational Databases - includes relational database environments that support several database applications to fully managed, high availability, enterprise grade systems

Amazon Aurora

Amazon RDS

Cloud SQL

Cloud Spanner

SQL Database

SQL Server Stretch Database (Combination of on premise and cloud SQL server)

NoSQL Databases - offerings range from simple NoSQL databases to fully managed, enterprise grade NoSQL instances

Amazon DynamoDB

Cloud Bigtable

Cloud Datastore

DocumentDB

Caching Services - Redis-based or proprietary cache servers

Amazon Elasticache


Redis Cache

Networking - Everything a modern small, medium, or large business needs to build and deploy robust networks

Amazon

Google

Microsoft

Virtual Networking - all three providers offer a wide range of network configuration options. Networks can be singular or multiple, can connect to each other, or be isolated

Amazon VPC

Cloud Virtual Network

Virtual Network

VPN Gateway

Interconnected Services - Provides a direct connection from an on-premises site directly to the provider’s cloud, usually through a third-party provider or dedicated hardware.

AWS Direct Connect

Interconnect

Express Gateway

CDN - Cloud based content delivery networks

Amazon Cloudfront

Cloud CDN

Content Delivery Network

Load Balancing - Automatically balance traffic amongst multiple cloud resources endpoints

Elastic Load Balancing

Cloud Load Balancing

Load Balancer

DNS - Cloud based Domain Name Services

Amazon Route 53

Cloud DNS

Azure DNS

Big Data and Big Data Analytics - Data warehouses and tools to analyze the data

Amazon

Google

Microsoft

Data Warehouses - Managed warehouse service

Amazon Redshift

BigQuery


Hadoop Framework Services - Hadoop, and related open source framework, implementations

Amazon EMR

Cloud Dataproc

HDInsight

Apache Spark for HDInsight

Datastore Management - Tools to clean, manipulate, transform, stream, search, and move large amounts of data through warehouses and for analysis

Amazon Kinesis

Amazon Glue

AWS Glue

AWS Data Pipeline

Cloud Dataflow

Cloud Dataprep

Data Lake Store

Data Factory

Analysis Services - Analysis tools to provide searching or reporting on large datasets

Amazon Athena

Amazon Elasticsearch Service

Amazon Quicksight

Cloud Datalab

Data Lake Analytics

Stream Analytics

And That’s Not All ...

Amazon

Google

Microsoft

Other Services - There are a wealth of offerings that are designed to complement the above services, are very niche in nature, or are implemented too uniquely to each service for generalization here.

Developer Tools

Management Tools

Security, Identity, and Compliance

Artificial Intelligence

Mobile Services

Application Services

Messaging

Business Productivity

Desktop & App Streaming

Internet of Things

Game Development

Machine Learning

Identity & Security

Management Tools

Developer Tools

Genomics

Web + Mobile

Internet of Things

Enterprise Integration

Security + Identity

Developer Tools

Monitoring + Management

Section 6

Key Benefits of Cloud Services

Pay Only What You Consume

Until a few years ago, the costs of providing off-site services were similar to a leasing plan; a certain amount of allocated resources and an incurred cost whether such resources were consumed or not. Cloud computing as it's known today has changed this. The various offerings provided by all major cloud computing platforms function on a consumption-based plan. The use of services is charged based on the applicable resources of that service. For example, a virtual machine will incur cost based on the computing power used and the server uptime. Meanwhile, a data warehouse service might charge based on the amount of data stored and the frequency with which reports are run against it.

This pricing structure may seem convoluted, but it greatly benefits the customer. Cost incurred for use means companies of all sizes can use resources that would be cost prohibitive if they had to acquire all the hardware, software, physical space, and connectivity on their own. An on-premise data warehouse can be extremely costly. A cloud based, consumption priced data warehouse is much more affordable.

One Time & Alternative Pricing

Cloud services are often subject to traffic spikes due to one time events (e.g. National broadcast exposure, SuperBowl commercial, etc.). Not only can this type of provisioning be expensive, but oftentimes difficult to achieve.

Cloud computing platforms allow applications to access additional resources immediately and as needed without additional configuration..

In addition to peak and one time pricing, some services allow for other alternative pricing structures. One example is pricing that becomes cheaper after peak hours. If operations can occur when there is a predictable lull in resource use, such as midnight to early morning for that region, then those operations can sometimes be done at a cheaper rate.

Alternatively, if operations have very flexible usage requirements, then some providers allow customers to bid on access to resources only when they become available for however long they are available at a price calculated by current resource use. For example, a large batch process can be scheduled to occur when computing resources at that region become available for $0.x/minute due to transitory low usage windows until resource usage returns to normal or the batch process completes.

Finally, there is sometimes the option of dedicated resources. These are often the most costly of cloud resources. For some resources, such as disk storage or servers, it is possible to engage a lease type pricing model where a company pays for a resource to be dedicated only to them. This is useful for:

Mission critical applications, networks, and processes that cannot risk being affected by regular virtualization or co-hosted processes

Regulatory situations where the benefits of cloud computing are necessary but co-hosting would break regulatory requirements

Automated Growth & Scalable Technologies

Cloud resources are virtualized and configured for specific requirements but not a physical piece of hardware. This means that it is very easy to launch more of any specific resource needed by the company. If a customer is in a period of rapid growth, then the cloud can easily increase the amount of resources available without intense installation or configuration.  This is also true in reverse. If a company needs to reduce cost, then turning off resources or using less of a resource does not require much effort.

Scaling is also extremely easy to do since cloud services can be as permanent or temporary as needed. An application designed for high usage on a cloud provider can easily scale from a small amount of used resource to a large amount without little extra configuration. The cloud service will often instantiate additional resources as needed, for only as long as needed.

Other Cloud Computing Providers

Amazon’s, Google’s, and Microsoft's cloud computing platforms may dominate the cloud computing space, but other providers have also emerged. Some of these providers include:

Openstack Public Cloud

IBM Cloud & BlueMix

Heroku

Many of these providers rely on industry standard virtualization and operating system technology making them competitive to the other cloud computing platforms. However, comparing these other providers to Google's, Microsoft's, or Amazon’s cloud computing platforms can be more difficult due to the maturity and robustness of the big three’s platforms.

Nevertheless, some of these other cloud computing providers have carved out niche markets in the cloud computing market. Some do so by adopting more aggressive pricing structures, catering to the specific needs of certain communities (e.g. Ruby/Rails, or Linux), or providing better customer service than their larger rivals.

Clouds Do Get Disrupted (Rarely)

Customers should hold their cloud providers to a 99+% uptime. Cloud providers are well aware of customer expectations on this point, and do everything to meet that threshold. However, if the mind-boggling number of hours that services are available is considered, then even a 1% downtime is likely to affect you. No technology is perfect.

All Cloud providers offer status pages so customers can be aware of any disruptions that occur:

Google Cloud Status Page:

https://status.cloud.google.com/

AWS Status Page:

https://status.aws.amazon.com/

Microsoft Azure Status Page:

https://azure.microsoft.com/status/

IBM Cloud Status Page:

https://www.ibm.com/cloud-computing/social/maintenance/

Rackspace Status Page:

https://status.rackspace.com/

Cloud Computing Team Blogs

In order to keep abreast on the latest offerings made by cloud computing providers, we recommend you consult each platform's team blog.

Google Cloud Platform Blog:

https://cloudplatform.googleblog.com/

AWS blog:

https://aws.amazon.com/blogs/aws/

Microsoft Azure team blog:

https://azure.microsoft.com/blog/

IBM Cloud blog:

https://www.ibm.com/blogs/cloud-computing/

Rackspace blog:

https://blog.rackspace.com/

Publications

  • Featured
  • Latest
  • Popular
DOWNLOAD
Design Patterns
Learn design patterns quickly with Jason McDonald's outstanding tutorial on the original 23 Gang of Four design patterns, including class diagrams, explanations, usage info, and real world examples.
205.9k 591k
DOWNLOAD
Core Java
Gives you an overview of key aspects of the Java language and references on the core library, commonly used tools, and new Java 8 features.
127k 349.7k
DOWNLOAD
Getting Started with Ajax
Introduces Ajax, a group interrelated techniques used in client-side web development for creating asynchronous web applications.
101.8k 212.7k
DOWNLOAD
Getting Started with Git
This updated Refcard explains why so many developers are migrating to this exciting platform. Learn about creating a new Git repository, cloning existing projects, the remote workflow, and more to pave the way for limitless content version control.
116.4k 274.2k
DOWNLOAD
Foundations of RESTful Architecture
The Representational State Transfer (REST) architectural style is a worldview that elevates information into a first-class element of architectures. REST allows us to achieve the architectural properties of performance, scalability, generality, simplicity, modifiability, and extensibility. This newly updated Refcard explains main HTTP verbs, describes response codes, and lists libraries and frameworks. It also gives additional resources to further explore each topic.
101k 169.5k
DOWNLOAD
Spring Configuration
Catalogs the XML elements available as of Spring 2.5 and highlights those most commonly used: a handy resource for Spring context configuration.
103.6k 263.5k
DOWNLOAD
Core CSS: Part I
Covers Core principles of CSS that will expand and strengthen your professional ability to work with CSS. Part one of three.
90.5k 198.4k
DOWNLOAD
Scrum
Scrum is a framework that allows people to productively and creatively deliver products of the highest possible value. With over 70% of Agile teams using Scrum or Scrum hybrid, learn more about its benefits in managing complex product development. This newly updated Refcard explores the details of Scrum, including theory, values, roles, and events. It also includes a sample of a popular approach to deliver Integrated Increments in a scaled environment.
93.9k 248.6k
DOWNLOAD
jQuery Selectors
Introduces jQuery Selectors, which allow you to select and manipulate HTML elements as a group or as a single element in jQuery.
93.4k 356.4k
DOWNLOAD
Core Java Concurrency
Helps Java developers working with multi-threaded programs understand the core concurrency concepts and how to apply them.
90.5k 192.3k
DOWNLOAD
Getting Started with Eclipse
Eclipse IDE is a cross-platform, multi-purpose, open-source Integrated Development Environment. It is widely used to develop projects in Java, JavaScript, PHP, C++, Scala, and many others. This newly updated Refcard breaks down installing, setting up, and getting started with Eclipse. It also covers productivity tips, creating new projects and files, accessing Source Control Managers, and debugging configurations.
79.2k 215.1k
DOWNLOAD
Core CSS: Part II
Covers Core principles of CSS that will expand and strengthen your professional ability to work with CSS. Part two of three.
73.8k 141.6k
{{ card.title }}
{{card.downloads | formatCount }} {{card.views | formatCount }}
THE DZONE NEWSLETTER

Dev Resources & Solutions Straight to Your Inbox

Thanks for subscribing!

Awesome! Check your inbox to verify your email so you can start receiving the latest in tech news and resources.

X

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}