Scalability Fundamentals
Overview
In the first part of the course, we explore key scalability concepts, including its definition, traditional perspectives, and the theoretical limits of scaling software. We introduce architectural patterns for building scalable web applications, linking them to the scale cube model. Additionally, we cover performance metrics, as well as performance and load testing. Finally, we begin developing a walking skeleton with both server-side and client-side functionality, along with basic performance tests.
The structure of this part is as follows:
- Defining Scalability presents the term scalability and showcases how it has been defined in the literature. It also introduces vertical and horizontal scaling, which are classic strategies for scaling software.
- Scalability Laws introduces Amdahl’s Law and Gunther’s Universal Scalability Law, which can be used to calculate the potential speedup from parallelization.
- Architectural Patterns introduces architectural patterns from web software development, monolithic architecture, microservice architecture, and event-driven architecture
- Scale Cube introduces the Scale Cube, which provides a way to think about scaling software over three dimensions.
- Quantifying Performance introduces performance metrics and load testing, which are essential for understanding the performance of a web application and how it behaves under different loads.
- Walking Skeleton introduces a walking skeleton that we build on in the subsequent parts. The walking skeleton consists Docker project with a server-side service using Deno, a client-side application using Astro, and a basic setup for measuring application performance.
Finally, at the end of the part, there is a recap and feedback chapter that briefly summarizes the part and asks for feedback on the part.
Loading Exercise...