Goals

Learn about vertical and linear scaling, as well as basic terminology such as concurrency, response time, performance, and latency distribution. Get to know commonly used cloud architecture patterns, which involve horizontal scaling, queue-centric workflow management, database sharding, and content delivery networks. Implement some key patterns to gain a better understanding.

Examples

Exercises

Introduction

Context

Scalability

Scalability is the property of a system to handle a changing demand for resources over time by adding and removing resources from the system. The changing demand can be based on many of reasons, for example:

Scalability

Vertical Scaling

Vertical scaling, also known as scaling up, is the most traditional form of scaling. It involves utilizing better hardware, such as faster CPUs, CPUs with more cores, larger amounts of memory, faster network switches, or bigger hard drives.

vertical_scaling.svg

Pros Cons
Straight forward Often involves downtime
Easy to understand Not able to scale once hardware limits are reached
No distributed system Relatively expensive
Easy to deploy Hard to scale down

Horizontal Scaling

Horizontal scaling, also known as scaling out, involves adding more nodes to a system. The total workload is then distributed across all nodes.

horizontal_scaling.svg

Pros Cons
Virtually limitless scalability More complex
Low price per node Distributed system
Easy to scale out and in Hard to deploy

Terminology