Skip to content

Topic · 56 articles

System Design

Designing systems that scale without falling over.

System design is where the individual pieces — services, databases, caches, queues — have to work as one system. This hub covers scaling strategies, distributed-systems trade-offs, consistency and concurrency, and the architecture decisions that decide whether a system stays up as traffic grows.

It is the connective tissue between the Node.js, PostgreSQL, and Redis hubs, and it draws on the patterns from those series.

Subscribe to System Design via RSS

All System Design articles

The Senior Engineer's Guide to Coding Interviews — Aman Kumar Singh
Scaling PostgreSQL: Vertical, Read Replicas, and Sharding — Aman Kumar Singh
Streaming Replication and Read Replicas in PostgreSQL — Aman Kumar Singh
Connection Pooling with PgBouncer in PostgreSQL — Aman Kumar Singh
Table Partitioning in PostgreSQL — Aman Kumar Singh
MVCC, Dead Tuples, and VACUUM in PostgreSQL — Aman Kumar Singh
SELECT FOR UPDATE and Row-Locking Patterns in PostgreSQL — Aman Kumar Singh
Optimistic vs Pessimistic Locking in PostgreSQL — Aman Kumar Singh
Understanding and Preventing Deadlocks in PostgreSQL — Aman Kumar Singh
Locks in PostgreSQL and How to Avoid Contention — Aman Kumar Singh
PostgreSQL Isolation Levels Explained — Aman Kumar Singh
Transactions and ACID in PostgreSQL — Aman Kumar Singh
A NestJS Production Checklist — Aman Kumar Singh
Unit Testing Services — Aman Kumar Singh
gRPC Services in NestJS — Aman Kumar Singh
Microservices with NestJS — Aman Kumar Singh
The Outbox Pattern — Aman Kumar Singh
Event-Driven Architecture — Aman Kumar Singh
CQRS in NestJS — Aman Kumar Singh
Pagination and Filtering — Aman Kumar Singh
API Versioning — Aman Kumar Singh
Health Checks and Readiness Probes — Aman Kumar Singh
Logging with a Custom Logger — Aman Kumar Singh
Handling File Uploads in NestJS — Aman Kumar Singh
Show all 56 articles
WebSockets and Gateways — Aman Kumar Singh
Scheduling and Cron Tasks — Aman Kumar Singh
Background Jobs with BullMQ — Aman Kumar Singh
Caching with Redis in NestJS — Aman Kumar Singh
Transactions and Data Integrity — Aman Kumar Singh
Connecting PostgreSQL with TypeORM — Aman Kumar Singh
Exception Filters and Error Handling — Aman Kumar Singh
Custom Pipes and Transformation — Aman Kumar Singh
Interceptors Explained — Aman Kumar Singh
Guards and Authorization — Aman Kumar Singh
DTOs and Validation Pipes — Aman Kumar Singh
Controllers and Routing — Aman Kumar Singh
Providers and Custom Providers — Aman Kumar Singh
Modules and Dependency Injection — Aman Kumar Singh
Internationalization (i18n) in Next.js — Aman Kumar Singh
An Enterprise Folder Structure for Next.js — Aman Kumar Singh
Choosing a State Management Approach — Aman Kumar Singh
Authentication in Next.js — Aman Kumar Singh
Building a UI with shadcn/ui — Aman Kumar Singh
Server Actions for Mutations — Aman Kumar Singh
Route Handlers and APIs in Next.js — Aman Kumar Singh
The Next.js App Router Explained — Aman Kumar Singh
Compound Components and Slots — Aman Kumar Singh
React Performance Optimization — Aman Kumar Singh
Understanding React Hooks in Depth — Aman Kumar Singh
Caching Strategies for a SaaS — Aman Kumar Singh
Scaling a SaaS Beyond One Server — Aman Kumar Singh
Feature Flags and Safe Rollouts — Aman Kumar Singh
Multi-Tenancy Architecture for SaaS — Aman Kumar Singh
Subscription Billing and Plans — Aman Kumar Singh
Sending Transactional Emails — Aman Kumar Singh
A Folder Structure That Scales for Full Stack SaaS — Aman Kumar Singh

Frequently asked questions

Are these system design articles interview prep or real engineering?

Both, but the emphasis is real engineering — how scaling, caching, queues, and consistency actually behave in production. That grounding is exactly what makes the interview version credible.