Explore tens of thousands of sets crafted by our community.
Scalability Design Patterns
10
Flashcards
0/10
Service Discovery
Implementation: Allows services in a distributed system to find each other and communicate. When to Use: To manage and discover services in a dynamic, often containerized, cloud-based environment.
Data Replication
Implementation: Copying data from one location to another to ensure consistency across distributed systems. When to Use: To improve the availability of data and resilience of the system against regional failures or network partitions.
Caching
Implementation: Temporarily store copies of frequently accessed data in fast storage systems. When to Use: To speed up data retrieval, reduce latency, and decrease the load on the database or service.
Microservices Architecture
Implementation: Break down a monolithic application into a collection of smaller, independent services. When to Use: To enable scaling of individual components of an app independently, improve fault isolation, and support a variety of languages and frameworks.
Circuit Breaker
Implementation: Automatically detect failures and prevent the application from trying to perform an action that is likely to fail. When to Use: To maintain high-availability and prevent cascading failures in distributed systems.
Database Sharding
Implementation: Split a database into smaller, faster, more easily managed parts called 'shards'. When to Use: When a database is too large to be served from a single machine or when write operations become a bottleneck.
Event Sourcing
Implementation: Store changes to the application state as a sequence of events. When to Use: When you need to rebuild the state of the application, perform complex temporal queries or audit changes.
Load Balancing
Implementation: Distribute incoming traffic among multiple servers using hardware or software load balancers. When to Use: To evenly distribute load across servers, prevent overloading any single resource, and to increase the availability of applications.
Queueing Systems
Implementation: Use message queues to orchestrate communication between distributed components decoupling senders and receivers. When to Use: To manage workloads, ensure resiliency in communication between services, and handle asynchronous processing.
Consistent Hashing
Implementation: Use a hash function to distribute data across nodes, minimizing reorganization when nodes are added or removed. When to Use: For distributing load to a large number of servers and dealing with dynamic addition or removal of servers with minimal disruption.
© Hypatia.Tech. 2024 All rights reserved.