Numerous resources are readily available for learning about system design, and specific problems can easily be found online. I can still see people struggling with System Design. What is missing then?
Therefore, instead of delving into a particular system design, let's focus on some essential considerations.
When studying or designing a system, it's crucial to think whether each decision you make aligns with your understanding. If you're not convinced about your choices, can you effectively explain and justify them to others?
Another perspective involves the ability to rationalize each decision you make. Why opt for Kafka or DynamoDB? What necessitates these choices, and are there alternatives? Consider their pros and cons, as well as potential bottlenecks.
My recommendation is to examine every word used in your system design with the simple question: "Why?"