Most system design conversations start at the end: load balancers, caches, queues, and shards on a whiteboard before the first user has signed up. Real systems rarely grow that way. They start small, and every new box in the diagram is there because something hurt. In this session we take one ordinary application, a single server with a single database, and grow it one bottleneck at a time. At every step we ask the same three questions: what is actually failing, what is the cheapest change that fixes it, and what does that change cost us? ? Sometimes the answer is just a bigger machine or a missing index. For the times it isn’t, we walk through scaling out, moving state out of the application, connection pooling and read replicas, caching, background work with queues, and sharding as the last resort it should be. You will leave with a way to judge when a system has earned its next layer of complexity, and which parts of it can afford to be briefly out of date.
I am a Microsoft MVP and Software Development Engineer. A frequent regional and international speaker at Microsoft-related events and User Group meetings. While spending my free time, love to play chess, run in nature, write blog posts, help the community on StackOverflow to contribute to open-source projects, or be an instructor at NGO programming-related events. Completely dedicated to Software Development, mostly on the .NET platform, crafting apps using C# & .NET. Truly been in love with programming since my childhood days. ♥️