A free, self-paced textbook in 7 chapters. Read a chapter, then drill it with the 50 companion flashcards using spaced repetition.
Scaling is the practice of increasing a system's capacity to handle growing demand. The two fundamental approaches are vertical scaling, which adds more power (CPU, RAM, disk) to a...
Caching accelerates data access by storing frequently used information closer to where it is needed. Redis (Remote Dictionary Server) is a popular open-source, in-memory key-value...
As data volumes grow, distributing them across multiple database nodes becomes necessary. Sharding is a horizontal partitioning strategy that splits data across multiple database i...
Monolithic architectures package all application functionality into a single deployable unit, which is simpler to develop and deploy initially but harder to scale individual compon...
Rate limiting controls the number of requests a client can make to a service within a given time window, protecting against abuse and ensuring fair resource usage. When limits are...
Asynchronous messaging decouples services and enables reliable communication at scale. Apache Kafka is a distributed event streaming platform used for building real-time data pipel...
Distributed systems face inherent trade-offs that shape every design decision. The CAP theorem states that a distributed data store can guarantee at most two of three properties si...