TOP 20 SYSTEMS DESIGN TERMINOLOGIES YOU MUST KNOW

Hoa Dương

· 5 min read
TOP 20 SYSTEMS DESIGN TERMINOLOGIES YOU MUST KNOW

System design is a vital part of software development, focused on building applications that are scalable, reliable, and maintainable. Whether you're new to the field or a seasoned engineer, mastering key system design concepts is essential for creating robust systems. In this blog, we'll dive into the Top 20 System Design Terms every engineer should know.

1. Load Balancer

A load balancer is used to distribute incoming network traffic evenly across multiple servers, preventing any single server from becoming overwhelmed. This improves system reliability and maintains optimal performance, reducing the risk of server failures.

Example: An e-commerce platform deploys a load balancer to handle surges in user requests during peak events, like Black Friday sales.

2. Caching

Caching temporarily stores copies of frequently accessed data in a high-speed storage layer, enabling faster data retrieval and reducing demand on the main database.

Example: A news site caches frequently read articles, allowing them to load quickly for users while lessening the load on the primary database.

3. Database Sharding

Sharding divides a large database into smaller, more manageable segments, or "shards," which are distributed across multiple servers. This method improves performance and makes handling large datasets more efficient.

Example: Social media platforms often shard user data by region, reducing latency for users by keeping data closer to their location.

4. Replication

Replication is the process of creating duplicate copies of a database across multiple servers to enhance data availability and reliability. This setup ensures continuous operation, as other servers can seamlessly take over if one server fails.

Example: In a financial application, transaction data is replicated across servers in various data centers to safeguard against data loss and maintain service continuity.

5. Partitioning

Partitioning involves segmenting data within a database based on certain criteria, such as date, region, or customer ID. This approach improves query performance by reducing the amount of data scanned in each query, which speeds up data retrieval.

Example: E-commerce websites often partition data by categories, such as "Electronics" or "Clothing," to speed up search results and provide a smoother user experience.

6. Microservices

Microservices architecture divides an application into smaller, independent services that each handle a specific function and communicate through APIs. This modular structure makes the system easier to scale, update, and maintain.

Example: Netflix uses a microservices architecture with distinct services for user profiles, content streaming, and personalized recommendations, allowing each service to scale and improve independently.

7. Monolithic Architecture

Monolithic architecture is a traditional design in which all components of an application are built and deployed as a single unit. It works well for smaller applications due to its simplicity, but as the application grows, it can become harder to maintain and scale.

Example: Small blogs or portfolio websites often use monolithic architecture because it's straightforward to deploy and manage for basic needs.

8. Horizontal Scaling

Horizontal scaling, also known as scaling out, involves adding more servers to a system to increase capacity and handle higher traffic. This approach distributes the load across multiple servers rather than relying on a single server's resources.

Example: Amazon implements horizontal scaling by adding extra servers to accommodate the surge in traffic during peak shopping seasons like Black Friday and Cyber Monday.

9. Vertical Scaling

Vertical scaling, or scaling up, involves increasing the capacity of an existing server by adding resources like CPU, memory, or storage. While it’s often simpler to implement than horizontal scaling, it has limitations based on the maximum capacity of a single machine.

Example: An accounting software may scale vertically by adding more RAM to efficiently process large datasets, especially during peak financial reporting periods.

10. CAP Theorem

The CAP Theorem (Consistency, Availability, Partition Tolerance) asserts that in a distributed database, it is impossible to guarantee all three properties at once. Typically, only two of the three can be prioritized.

  • Consistency: Every read request will return the most recent write, ensuring all nodes reflect the same data.

  • Availability: Every request will receive a response, even if some nodes are down or unreachable.

  • Partition Tolerance: The system will continue to function despite network failures or partitions between nodes.

In practice, systems must choose between prioritizing Consistency and Availability, especially when faced with network issues.

11. Rate Limiting

Rate limiting controls the number of requests a user or client can make in a given time period. This prevents overuse, maintains fair access, and ensures system stability by avoiding excessive strain.

Example: A payment processing API may limit users to 100 requests per minute to prevent system overload and ensure fair usage among all clients.

12. Message Queue

A message queue temporarily stores messages sent between different components of a system, enabling reliable and asynchronous communication between microservices.

Example: In an e-commerce system, a message queue can handle order events, sending messages to services like inventory management, payment processing, and shipping for further actions.

13. CDN (Content Delivery Network)

A Content Delivery Network (CDN) caches copies of data (e.g., images, videos) on servers distributed worldwide, improving content delivery speed by serving it from the server closest to the user.

Example: Streaming services like YouTube rely on CDNs to ensure faster video playback by delivering content from servers near the user's location.

14. API Gateway

An API gateway acts as the entry point for client requests in a microservices architecture. It routes requests to the correct microservices, manages API calls, and can handle additional tasks like authentication, logging, and rate limiting.

Example: On Netflix, the API gateway routes requests to various services, such as user profiles, recommendations, or content streaming, ensuring smooth and efficient operation across multiple microservices.

15. Failover

Failover is a backup mechanism where a secondary system automatically takes over if the primary system fails. This ensures continuity and reliability, especially in high-availability environments.

Example: In banking systems, failover processes are in place to switch to backup servers seamlessly if the primary system experiences hardware or software failures, ensuring uninterrupted service for users.

16. Data Consistency Models

Data consistency models define how data is handled across distributed systems to ensure reliability and accuracy. Key models include:

  • Strong Consistency: Guarantees that every read reflects the most recent write, ensuring data is always up-to-date.

  • Eventual Consistency: Allows data to become consistent over time, which is suitable for systems prioritizing high availability over immediate consistency.

  • Causal Consistency: Ensures that operations with a dependency on one another are performed in a specific order, preserving logical relationships.

Example: Amazon DynamoDB employs eventual consistency for shopping cart data, as real-time synchronization is less critical than ensuring high availability during high traffic periods.

17. Idempotency

Idempotency ensures that repeated identical requests yield the same result, preventing unintended side effects. It’s essential for systems where repeating actions might cause errors or inconsistent behavior.

Example: A "like" button on a social media post is idempotent. No matter how many times the user clicks it, the post is liked only once, ensuring that the action doesn’t have multiple unintended effects.

18. Circuit Breaker

A circuit breaker protects a system by stopping operations that are likely to fail, cutting off requests when error rates exceed a predefined threshold. This prevents cascading failures and helps maintain system stability under stress.

Example: In payment systems, a circuit breaker will stop further requests to a payment provider if it experiences repeated failures, preventing additional strain on the system and ensuring service reliability.

19. Throttling

Throttling controls the flow of incoming requests to avoid system overload. Unlike rate limiting, which imposes strict request limits, throttling permits requests up to a certain point and delays additional ones once the threshold is reached.

Example: During peak traffic times, websites may throttle requests to ensure servers aren’t overwhelmed, maintaining a smooth user experience.

4o mini

20. Observability (Logs, Metrics, and Traces)

Observability involves using tools and practices to monitor and assess a system's health and performance. It includes:

  • Logs: Detailed records that capture system events and errors.

  • Metrics: Quantitative measurements, such as latency or memory usage, that provide insight into system performance.

  • Traces: A record of the journey a request takes across different services, helping to pinpoint bottlenecks.

Example: Tools like Prometheus and Grafana provide observability by collecting and visualizing system metrics, enabling teams to identify and respond to performance issues.


Conclusion

Mastering these system design terminologies is essential for any software engineer looking to build scalable, reliable systems. Whether you're preparing for a technical interview, planning an architecture overhaul, or simply curious about how complex systems function, understanding these concepts will greatly improve your ability to design high-performance applications. Familiarity with these terms not only boosts your technical knowledge but also enhances your problem-solving skills in real-world scenarios.

About Hoa Dương

Time is free, but it’s priceless. You can’t own it, but you can use it. You can’t keep it, but you can spend it. Once you’ve lost it you can never get it back