DEV Community

Abdulla Ansari
Abdulla Ansari

Posted on

Top 20 System Design Terminologies You Must Know

System design is a critical aspect of software development that ensures scalable, reliable, and maintainable applications. Whether you’re a beginner or an experienced engineer, understanding key system design terminologies is essential to develop high-quality systems. In this blog, we’ll cover the Top 20 System Design Terminologies that every engineer should know.


1. Load Balancer

A load balancer distributes incoming network traffic across multiple servers to ensure no single server bears too much load. This enhances system reliability and helps maintain optimal performance, preventing potential server failures.

Example: An e-commerce website uses a load balancer to manage incoming requests during high-traffic periods like Black Friday.

2. Caching

Caching stores copies of frequently accessed data in a high-speed storage layer, allowing quicker data retrieval and reducing load on the primary database.

Example: A news website caches popular articles to ensure rapid loading and reduce pressure on the database.

3. Database Sharding

Sharding splits a large database into smaller, more manageable pieces (shards) distributed across multiple servers. This approach helps in managing large datasets and enhances performance.

Example: Social media platforms shard user data based on geographical locations to reduce latency.

4. Replication

Replication involves creating duplicate instances of a database across multiple servers to improve reliability and data availability. If one database server goes down, others can take over seamlessly.

Example: For a financial app, critical transaction data is replicated across servers in multiple data centers to prevent data loss.

5. Partitioning

Partitioning divides data within a single database into segments based on specific criteria, such as date, region, or customer ID. Partitioning improves query performance by limiting data scanning.

Example: E-commerce sites partition data by categories like “Electronics” or “Clothing” to enhance search speed and user experience.

6. Microservices

Microservices architecture breaks down applications into smaller, independent services that communicate over APIs. Each microservice focuses on a specific function, making the system more modular and easier to scale.

Example: Netflix utilizes a microservices architecture, with separate services for user profiles, content delivery, and recommendations.

7. Monolithic Architecture

Monolithic architecture is a traditional approach where all functions of an application are built as a single unit. While simpler for small applications, it becomes challenging to maintain and scale as the application grows.

Example: Small blogs or informational websites often use monolithic architecture for simplicity and ease of deployment.

8. Horizontal Scaling

Horizontal scaling (or scaling out) adds more servers to the system to handle increased demand, rather than enhancing the capability of a single server.

Example: Amazon scales horizontally by adding more servers to meet the demands during holiday shopping seasons.

9. Vertical Scaling

Vertical scaling (or scaling up) enhances the power of existing servers by adding more CPU, memory, or storage to a single machine. It’s simpler than horizontal scaling but limited by hardware constraints.

Example: An accounting application may vertically scale by adding more memory to process large financial datasets.

10. CAP Theorem

The CAP theorem states that in a distributed database, it’s impossible to achieve Consistency, Availability, and Partition Tolerance simultaneously. Generally, only two out of the three can be guaranteed.

  • Consistency: All nodes see the same data.
  • Availability: Every request receives a response, regardless of success or failure.
  • Partition Tolerance: The system continues to function even if there’s a network partition.

11. Rate Limiting

Rate limiting restricts the number of requests a user or client can make within a specific timeframe. This protects the system from abuse and overuse, ensuring fair access and stability.

Example: An API for a social media platform may allow users to make up to 500 requests per hour to prevent spam.

12. Message Queue

A message queue temporarily holds messages sent between different parts of a system, ensuring reliable communication between microservices. It allows services to communicate asynchronously.

Example: E-commerce platforms use message queues to handle order processing events, sending them to appropriate services (inventory, shipping, etc.).

13. CDN (Content Delivery Network)

A CDN stores copies of data (such as images and videos) in servers located globally. It speeds up data delivery by serving content from the server closest to the user.

Example: Video streaming platforms like YouTube use CDNs to deliver content faster based on user locations.

14. API Gateway

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

Example: When accessing Netflix, the API gateway routes requests to specific services (profiles, recommendations, etc.).

15. Failover

Failover is a backup operational mode where a secondary system takes over if the primary system fails. It’s a critical feature in high-availability systems.

Example: Banking systems have failover mechanisms to ensure continuous service during hardware or software failures.

16. Data Consistency Models

Data consistency models ensure data reliability across distributed systems. Common models include:

  • Strong Consistency: Every read returns the latest write.
  • Eventual Consistency: Guarantees data consistency over time, often used in systems requiring high availability.
  • Causal Consistency: Ensures operations dependent on each other are performed in order.

Example: Amazon DynamoDB uses eventual consistency for its shopping cart data, as immediate consistency isn’t critical.

17. Idempotency

Idempotency ensures that multiple identical requests produce the same outcome without side effects. It’s crucial in systems where repeated actions could lead to unintended results.

Example: A “like” button on a social media post is idempotent. Regardless of how many times a user clicks it, the post is only liked once.

18. Circuit Breaker

A circuit breaker prevents a system from performing operations that are likely to fail by cutting off requests when errors occur above a set threshold. This helps protect services from crashing under pressure.

Example: In payment systems, circuit breakers block further requests if a particular payment provider fails repeatedly.

19. Throttling

Throttling manages the rate of incoming requests, controlling traffic to prevent overloading a system. Unlike rate limiting, which sets hard limits, throttling allows requests to a point but then delays further requests.

Example: During peak traffic hours, some websites throttle incoming requests to ensure servers don’t overload.

20. Observability (Logs, Metrics, and Traces)

Observability refers to the tools and practices used to monitor system health and performance. It includes:

  • Logs: Detailed records of system events.
  • Metrics: Key measurements (e.g., latency, memory usage).
  • Traces: Tracks the path of a request across multiple services.

Example: Observability tools like Prometheus and Grafana track system metrics and alert teams to performance issues.


Conclusion

Mastering these system design terminologies can significantly enhance your understanding and effectiveness in creating robust, scalable systems. Whether you’re preparing for an interview, planning an architecture overhaul, or simply curious about the inner workings of complex systems, familiarizing yourself with these concepts is crucial for any software engineer aiming to build high-performance applications.

Top comments (0)