Essential system design components for building scalable applications.
These are divided into 6 broad categories
Distributed message queues facilitate async communication and decouple services
Distributed caching improves performance by storing frequently accessed data in memory
A Distributed task scheduler manages and coordinates the execution of tasks
Scaling services help adjust the capacity of services to handle changes in demand
CDNs serve content from geographically closer locations to improve performance and reduce latency.
Consistent hashing minimizes the remapping of keys when nodes are added or removed
DNS translates human-readable domain names into IP addresses
Load Balancer distributes incoming network traffic across multiple servers
API Gateway acts as a single entry point for a group of microservices
Databases store and manage structured data
Object storage helps store complex objects like images, videos, and documents
Sharding helps horizontally partition data across multiple nodes
Replication helps horizontally scale the database by copying data to multiple nodes
Gain insights into the system’s internal state through metrics, logging, and tracing.