What is cloud computing?

Cloud computing is defined as the on-demand delivery of IT resources over the internet with a pay-as-you-go pricing model.

Instead of heavily investing in physical data centers, organizations can access computing resources as needed from a cloud provider like AWS.

Cloud Computing vs On-Prem Computing

This is a comparison between various cloud computing and on-prem computing aspects:

AspectCloud ComputingOn-Prem Computing
Hardware OwnershipCloud Provider, (e.g. AWS, Azure, etc.).Organization.
Pricing ModelsElastic scale up/down and pay accordingly.Fixed capacity. Scaling requires buying new hardware upfront, which is expensive.
ResposibilityThe provider manages infrastructure maintenance.The organization is responsible for all hardware and software management.
FlexibilityWide range of services available on demand.Limited to installed hardware/software.
LatencyDepends on the internet connectivity and cloud region.Generally lower latency as resources are local.

Which is more advantageous?

Depends on the needs. Often cloud computing is the way to go, but that may not always be the case.

Cloud computing models

Cloud computing consists of three primary models:

Infrastructure as a Service (IaaS)

Provides building blocks for cloud IT, such as virtual servers and networks.

  • E.g. Amazon EC2.

Platform as a Service (PaaS)

Provides platforms for developers to build applications on, without having to manage the infrastructure.

  • E.g. AWS Elastic Beanstalk.

Software as a Service (SaaS)

Provides fully managed software applications delivered over the internet.

  • E.g. Amazon Chime, Gmail.

Fundamental principles of “the cloud”

High availability, Elasticity & Scalability are fundamental principles when working with cloud providers.

High Availability

High Availability refers to a system’s ability to remain operational and accessible without interruption for a minimum amount of time, even in the event of failures, (e.g. hardware, software or network failures).

Elasticity

Elasticity means that, once a system is scalable, there will be some form of auto-scaling so that the system can scale based on it’s current load.

Scalability

Scalability refers to the ability of a system to accommodate a larger load by making the hardware stronger, (scaling up), or by adding nodes, (scaling out).

There are two types of scaling in the cloud:

Horizontal Scaling

Horizontal scaling means increasing the number of instances/systems of an application.

It is possible to scale in, (decreasing the number of instances), or scale out (increasing the number of instances).

Horizontal Scaling

Vertical Scaling

Vertical scaling means increasing the size of a single instance to handle more load.

It is possible to scale down, (decreasing the size of the instance), or scale up (increasing the size of the instance).

Vertical Scaling

Load Balancing

Load Balancing is the process of distributing incoming network traffic across multiple resources/servers to ensure that no single server becomes overwhelmed and to maximize performance, reliability and availability. (Ensuring high availability across zones and seamlessly handling failures in instances)

Load Balancing

Other advantages of using a load balancer include:

  • Exposing a single point of access (DNS), to an application;
  • Performing regular health checks to instances;
  • Providing SSL termination (HTTPS) to websites.