Justified Code/System Design Patterns

  • $99

System Design Patterns

  • Course
  • 36 Lessons

System design heavily relies on established design patterns. Software architects combine these patterns to design robust systems.

They are crucial for building reliable, secure, operationally efficient architectures that are optimized for cost and performance.

📝 Learning checks included

đź“‚ Excalidraw architecture diagrams included

Selected Patterns

Reliability Design Patterns

Each pillar covers specific system design patterns with practical examples.

Publisher Subscriber Pattern

You don’t want to miss a payment. Let the ordering service create the order in a queue and continue serving more orders without blocking the caller.

Transactional Outbox Pattern

So you decided to distribute your services, fine. But, what about data consistency across the different data stores. What can go wrong here?

Competing Consumers Pattern

What happens when your one Email Service is drowning in messages because your product suddenly went viral?

Selected Patterns

Operations Design Patterns

Each pillar covers specific system design patterns with practical examples.

Backends For Frontends Pattern

One backend is good until your mobile app screams for smaller payloads, your web app demands richer data, and your backend team is drowning in conflicting requests.

External Configuration System Pattern

This is a system that provides configuration as a service, and it is external to the application.

Selected Patterns

Modernization Design Patterns

Each pillar covers specific system design patterns with practical examples.

Anti Corruption Layer Pattern

Reduces transformation risk and business disruption by reducing the impact of changes in the monolith. Works hand in hand with the Strangler Fig Pattern.

Messaging Bridge Pattern

Your company merged with another organization and your boss wants to plug in Azure Service Bus without touching the legacy code.

Selected Patterns

Cost Optimization Design Patterns

Each pillar covers specific system design patterns with practical examples.

Claim-Check Pattern

Store the large payload in external storage, send only a small message with a reference, and let consumers fetch the payload only when they actually need it. Only normal messages flow through the bus.

Azure Service Bus Premium

Sending large payloads directly can cost hundreds of dollars per month even when traffic is low.

Azure Costs Drop Dramatically

Payloads are offloaded to Blob Storage. Events are forwarded by Event Grid to Azure Service Bus, while Azure Functions pick them up on demand.

AWS SQS Extended Client SDK

Large payloads are seamlessly offloaded to S3. Consumers handle claim checks, unaware that S3 is involved.

Selected Patterns

Security Design Patterns

Each pillar covers specific system design patterns with practical examples.

Gatekeeper Pattern

Secondary services (cache, message broker, database) live in a virtual network and reachable only from the web app.

Valet Key Pattern

Your application code doesn't have to deal with uploading and downloading data, as the external storage takes care of that.

Selected Patterns

Performance Design Patterns

Each pillar covers specific system design patterns with practical examples.

Static Content Hosting Pattern

Unburdens the application server from serving static content and leaves it to process more requests.

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.

Contents

Reliability

No more single point of failure. Use the publisher subscriber pattern
Never miss a payment again. The system design pattern every distributed system needs
Preview
The Competing Consumers Pattern
Azure Functions Competing For The Messages In Azure Service Bus
Autoscaling Takes Time. Meet Your SLA While Preserving Cost - The Throttling Pattern
The Auto Scaling Pattern
Decouple Your Application Processing with Queueing

Legacy Modernization

Modernizing your monolithic application? You need the anti-corruption layer.
Modernize Your Legacy System Incrementally - Follow The Strangler Fig Pattern
Integrate Legacy Systems With Minimal Need for Modification - Use the Messaging Bridge Pattern

Operations

Things Are Fine Until You Add a Mobile App. Meet The Backends For Frontends Pattern
Preview
The Backend For Frontend Is Not Your API Gateway
The External Configuration System Pattern
External Configuration System Example: Azure Key Vault
Centralized Logging Tradeoffs Analysis

Cost Optimization

Stop Sending Large Messages Through Your Message Broker - Use The Claim-Check Pattern
Claim-Check Examples: AWS SQS Extended Client SDK, Azure Serverless (ASB, Blobs, Event Grid, Functions)

Security

Building Your Own Identity Service Is Hard - Use The Federated Identity Pattern
Federated Identity Example: Azure Active Directory
The Gatekeeper Pattern
Gatekeeper Example: Azure Application Gateway, VNets, ASE
Gatekeeper Example: AWS WAF, NLB, EC2, Elastic Beanstalk, VPC, PrivateLink
The Valet Key Pattern
The Real Reasons Three-Tier Architecture Is Still Used.
Preview

Performance

The Static Content Hosting Pattern
The Easiest Way to Increase Our Application Throughput
The Cache-aside Pattern
Preview
Optimizing the services communication with gRPC protocol

Maintainability

The Humble Object Pattern
Preview
Don’t Make This Common Software Design Mistake!
The Gateway Pattern

Data

Dealing with Huge Data Tables: Millions of Records Slowing Our Business
Why Relational Databases Are NOT Scalable By Default
The Cure to RDBMS Scalability Limitation: Database Replication & CQRS

Excalidraw Diagrams

20260225_system_design_patterns_excalidraw.zip

Learning checks

Check your knowledge