Justified Code/Web Applications Scalability

  • $49

Web Applications Scalability

  • Course
  • 11 Lessons

This course includes lessons on the 5 components of highly scalable web applications. From caching and queueing to minimizing storage locks, handling asynchrony, and building redundancy,

Scalability is the thing that separates good web applications from excellent ones. If you’re serious about building apps that don’t crumble under load, this is for you.

📝 Learning checks included

Selected Diagrams

Caching

Each section covers practical examples.

Cache-aside Pattern

The next time a user hits the server, the data is fetched from the cache, a fact known as a cache hit, because it is there. This improves the application's performance because there is no call to the database.

Retail Customer

The staff member updated the database records (6) that have a corresponding cache key stored in the distributed cache. Once data has changed in the database (8), we want to prevent fetching data from the cache thus we invalidate the cache key (9).

Selected Diagrams

Reducing Database Storage Locking

Each section covers practical examples.

CQRS

Used when the write database is a relational PostgreSQL, and the read database is a nosql AWS DynamoDB. Read & Write models are different in schema and/or technology.

Partitioning or Sharding

Splitting the table horizontally and storing each part of the table in a separate database section or shard.

Selected Diagrams

Queueing

Each section covers practical examples.

Queueing Pattern

Decouple the request response model and send a message to a queue. The sender is then free to attend other requests. The receiving part is also free to read the message at its own pace.

Scaling Out

The queue status can be monitored and if too many messages are waiting in the queue, we can spin additional processing components to handle them.

Selected Diagrams

Asynchrony & Redundancy

Each section covers practical examples.

Asynchrony

The initial request thread #1 is forwarded to the component together with a callback address. When the result is ready, the calling thread picks up the result. During the wait, thread #1 is ready to attend another request.

Scaling Out/Up

Increasing loads put more strain on our application and ultimately the hardware fails. Redundant architecture shields the application from that failure and keeps it running.

Contents

Caching

The Easiest Way to Increase Our Application Throughput
The Cache-aside Pattern
Preview

Minimizing Storage Locks

Why Relational Databases Are NOT Scalable By Default
The Cure to RDBMS Scalability Limitation: Database Replication & CQRS

Queueing

What Can Go Wrong with Traditional Web Application Architecture?
Preview
Scaling the Bills Payment for a Digital Banking App
Async Messaging Tradeoffs Analysis - Prepare Loan Offer Use Case for a Fintech Backend System
Availability, Scalability and Cost: A Fintech Mobile App Story

Asynchrony

Scale Beyond Web Apps Limited Number of Threads

Redundancy

The Auto Scaling Pattern

Learning checks

Check your knowledge