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:
| Aspect | Cloud Computing | On-Prem Computing |
|---|---|---|
| Hardware Ownership | Cloud Provider, (e.g. AWS, Azure, etc.). | Organization. |
| Pricing Models | Elastic scale up/down and pay accordingly. | Fixed capacity. Scaling requires buying new hardware upfront, which is expensive. |
| Resposibility | The provider manages infrastructure maintenance. | The organization is responsible for all hardware and software management. |
| Flexibility | Wide range of services available on demand. | Limited to installed hardware/software. |
| Latency | Depends 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).
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).
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)
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.