Fantastic Four of System Design

Published on: September 10, 2025

Tags: #scalability #performance #availability #reliability


Scalability

graph TD
    subgraph Scalability
        direction TB
        A[Load] --> B{System}
        B --> C[Performance]

        subgraph "Implementation Techniques"
            direction LR
            subgraph Vertical Scaling
                D[Server] --> E[Larger Server];
            end

            subgraph Horizontal Scaling
                LB[Load Balancer] --> S1[Server 1]
                LB --> S2[Server 2]
                LB --> S3[...]
                LB --> SN[Server N]
            end

            subgraph Microservices
                K[Monolithic App] --> L{Break Down};
                L --> M[Product Service];
                L --> N[Order Service];
                L --> O[Shipping Service];
            end
        end
    end

Availability

graph TD
    subgraph Availability
        direction TB

        subgraph "Implementation Techniques"
            direction LR
            subgraph Load Balancing
                A[User Request] --> B{Load Balancer};
                B --> C[Server 1];
                B --> D[Server 2];
                B --> E[Server 3];
            end

            subgraph Replication
                F[Primary DB] --> G[Replica 1];
                F --> H[Replica 2];
            end

            subgraph Failover
                I{Failover Decision} -- Failure Detected --> J(Active Server Fails);
                I -- Switch Over --> K[Passive Server 
Becomes Active]; end end end

Reliability

graph TB
    subgraph Reliability
        direction TB

        subgraph "Implementation Techniques"
            direction TB
            subgraph "Monitoring & Logging"
                direction TB
                A[Service A] -- Log --> D[Logstash];
                B[Service B] -- Log --> D;
                C[Service C] -- Log --> D;
                D -- Processes & Forwards --> E[Elasticsearch];
                E -- Data for Visualization --> F[Kibana];
            end

            subgraph Error Handling
                G[Service A] -- Request --> H[Service B];
                H -- Error --> G;
                G -- Retry --> H;
                H -- Success --> G;
            end

            subgraph Automated Tests
               I[Developer] -- Writes Code --> J{Test Framework};
               J -- Runs Tests --> K[Automated Test Suite];
               K -- Feedback --> I;
            end
        end
    end

Performance

graph TD
    subgraph Performance
        direction TB

        subgraph "Implementation Techniques"
            direction LR
            subgraph Database Indexing
                A[Query without Index] --> B[Full Table Scan];
                C[Query with Index] --> D[Fast Index Lookup];
            end

            subgraph Caching
                E[Application] -- Request --> F{Is Data in Cache?};
                F -- Yes --> G[Read from Cache];
                F -- No --> H[Read from DB];
                H -- Store in Cache --> G;
                G -- Response --> E;
            end

            subgraph "Async Processing"
                I[User Request] --> J[Server];
                J -- Quick Response --> I;
                J -- Offloads Task --> K[Worker 1];
                J -- Offloads Task --> L[Worker 2];
                K -- Processes Task --> M((Result));
                L -- Processes Task --> N((Result));
            end
        end
    end

Share this post

Share on X  •  Share on LinkedIn  •  Share via Email