DEV Community

Cover image for System Design Basics ๐Ÿ• + Spring Boot
Abdulfatai Abdulwasiu Aremu
Abdulfatai Abdulwasiu Aremu

Posted on

System Design Basics ๐Ÿ• + Spring Boot

I explained System Design to my friend using a pizza shop ๐Ÿ•
Turns out itโ€™s the easiest way to get Scalability, Latency, Throughput, Consistency, and Availability!

1๏ธ Scalability โ€“ More chefs, more pizzas

@RestController
class PizzaController {
    @GetMapping("/order")
    String orderPizza() { return "๐Ÿ• Pizza ready!"; }
}
Enter fullscreen mode Exit fullscreen mode

1 instance = 10 orders/min
10 instances = 100 orders/min

2๏ธ Latency โ€“ How long until your pizza arrives?

@GetMapping("/order")
String orderPizza() throws InterruptedException {
    Thread.sleep(3000); // 3 sec delay
    return "๐Ÿ• Pizza ready after wait!";
}
Enter fullscreen mode Exit fullscreen mode

Delays = unhappy customers

3๏ธ Throughput โ€“ Pizzas per minute

Run a load test:

ab -n 1000 -c 50 http://localhost:8080/order
Enter fullscreen mode Exit fullscreen mode

One endpoint, but throughput depends on kitchen โ€œpower.โ€

4๏ธ Consistency โ€“ Pizza means pizza

@RestController
class PizzaController {
    @GetMapping("/order")
    String orderPizza() {
        return Math.random() > 0.7 ? "๐Ÿ Pasta?" : "๐Ÿ• Pizza";
    }
}
Enter fullscreen mode Exit fullscreen mode

Users want the same result every time!

5๏ธ Availability โ€“ Always open

@GetMapping("/health")
String health() { return "โœ… Iโ€™m alive!"; }
Enter fullscreen mode Exit fullscreen mode

Service stays open, even if one instance crashes.

Takeaway

System design is like running a pizza shop ๐Ÿ•

  • Scalability โ†’ more chefs
  • Latency โ†’ wait time
  • Throughput โ†’ orders per min
  • Consistency โ†’ pizza = pizza
  • Availability โ†’ always open

Whatโ€™s your favorite system design analogy?

Top comments (0)