DEV Community

HappyBug
HappyBug

Posted on

System Design the Agentic Way — How I'm Using AI Agents to Actually Learn Distributed Systems

System Design the Agentic Way

I wanted to learn system design. Not "memorize CAP theorem for interviews" learn — actually understand why things break at scale and what to do about it.

The problem: most resources give you theory without pain. You read about load balancers without ever watching one fail. You learn about replication without seeing stale data appear in front of you.

So I built something different.


The Idea

What if I had a pair-programmer that:

  • Starts every topic with a real production failure (so I feel why it matters)
  • Makes me predict what will happen before I run anything
  • Forces me to build minimal prototypes, not just read
  • Then makes me break them deliberately
  • And finally tests my judgment with ambiguous 3am scenarios

That's what I built — using GitHub Copilot's custom agents and skills as a structured teaching system.


The Curriculum

12 phases. Each one builds on the previous. No skipping.

Phase What Goes Wrong Without It
1. Single Machine Ceiling Your server hits 15K connections and starts refusing
2. Stateless Horizontal Scaling You deploy and lose 47 payments during the restart
3. Data Storage Trade-offs Redis crashes and your last 30 seconds of writes vanish
4. Caching & Invalidation Users see stale prices and buy at the wrong amount
5. Async Processing & Queues Payment service is down for 2 seconds, 500 orders lost
6. Replication & Consistency Read replicas serve yesterday's data as if it's current
7. Partitioning & Sharding One customer has 90% of the data, hot partition melts
8. Coordination & Consensus Two nodes both think they're the leader, split-brain
9. Service Decomposition Distributed transaction fails halfway, money vanishes
10. Observability Something is wrong. You have no idea what.
11. Resilience Patterns One slow dependency freezes your entire service
12. Capacity Planning Black Friday hits 10x predictions, everything collapses

The Method

Every phase follows the same loop:

Motivate → Model → Decide → Build → Break → Gate

🔥 War Story    → Feel the pain
🧠 Concepts     → Understand the mechanism
⚖️ Trade-off   → Pick an approach (and own the downsides)
🔨 Build       → Minimal prototype with real code
💥 Break It    → Deliberately kill components
🎯 Gate Check  → Scenario-based judgment test
Enter fullscreen mode Exit fullscreen mode

The "Break It" step is where most of the learning happens. My prediction is almost always wrong the first time. That gap — between what I expected and what actually happened — is the lesson.


The Tooling

The whole system runs inside VS Code using GitHub Copilot's custom agent features:

  • 5 agents — instructor, gate-keeper, adversary, reviewer, orchestrator
  • 8 skills — war stories, concept deep-dives, prototype specs, failure labs, etc.
  • Knowledge files — real production patterns, failure catalogs, anti-patterns
  • Learning journal — auto-captured insights, predictions, and mistakes

The agents don't give me answers. They ask me to predict, let me fail, then explain why.


Where I Am

I've completed Phase 1 (single machine limits) and Phase 2 (horizontal scaling with Docker + Nginx + Redis). In the next posts, I'll walk through each phase — what I built, what I broke, and what surprised me.


Try It Yourself

The full system is open source:

👉 system-design-agenticway


What I'd Love From You

  • ⭐ Star the repo if this approach resonates
  • 🐛 Open issues if something's broken or confusing
  • 💡 Suggest improvements to the curriculum
  • 📝 Tell me: how do YOU learn system design? What works? What doesn't?

Next up: Phase 1 — The Single Machine Ceiling. I'll show you what happens when 15,965 TCP connections hit one Node.js process, and what it taught me about operating systems.


Follow for the full series. Each post covers one phase of the journey.

Clone it, open in VS Code with Copilot, and start Phase 1. All you need is Node.js and Docker.


What I'd Love From You

  • ⭐ Star the repo if this approach resonates
  • 🐛 Open issues if something's broken or confusing
  • 💡 Suggest improvements to the curriculum
  • 📝 Tell me: how do YOU learn system design? What works? What doesn't?

Next up: Phase 1 — The Single Machine Ceiling. I'll show you what happens when 15,965 TCP connections hit one Node.js process, and what it taught me about operating systems.


Follow for the full series. Each post covers one phase of the journey.

Top comments (0)