If you want to get better at system design, there is a single question that you should ask yourself at every single step:<p><pre><code> Do you really understand what is going on?
</code></pre>
You already noticed that system design interviews don't necessarily represent reality. Together with all the content from self-proclaimed system design "experts", you risk fooling yourself by thinking that your knowledge of high-level concepts actually makes you competent. Don't fool yourself, ask the question.<p>I suggest you start small and don't jump into the deep water (yet).<p>1. Pick a really simple project that has potential to scale, for example a webshop that sells a single item.<p>2. Limit the scope to the absolute minimum, since it's a learning project. Don't bother with layout or design or fancy JavaScript. Plain HTML will do, anything else is a distraction.<p>3. Set up a single webserver and make the project work (be able to create a user, log in and buy a quantity of the item; ignore payment systems, just make up a currency).<p>4. Your first thought is good: build some bots that make purchases, test parts of the system or otherwise simulate real usage.<p>5. Now start thinking: What can you do with this single server? How many users does it support and why? What can you do to support more users? How many requests can the server handle? What happens when the requests exceed this threshold? Where are the bottlenecks of the system? What happens if the server is unexpectedly shutdown? One question will lead to another. By adding features you will come up with even more questions.<p>Assuming that you want to build large web systems, you must first understand what you can and cannot do with a single webserver. There is no point going further, until you got that.<p>In order to get better at system design, you must gain understanding. In order to gain understanding, you must observe systems and ask questions (and find answers). There is no easy way, pick one question at a time and work your way forward. That is how you become an expert.<p>Good luck.<p>PS: This is a book I personally found useful because it covers many aspects you will inevitably encounter in a large system:<p><a href="https://ocw.mit.edu/courses/res-6-004-principles-of-computer-system-design-an-introduction-spring-2009/pages/online-textbook/" rel="nofollow">https://ocw.mit.edu/courses/res-6-004-principles-of-computer...</a>