This repository contains coding exercise projects to practice system design implementations and evaluate the trade-offs of architectural decisions.
I believe that there's a common issue among developers: while we use a lot of tools to do the job, we often lack a deeper understanding of them. For some of these tools, we don't get the opportunity to explore them in depth, especially when working within the constraints of a limited business domain—whether in a commercial project or an open-source one. To gain a deeper understanding of the individual components that make up the systems we build, we need to deliberately practice creating them. Understanding these smaller blocks will help us see the bigger picture more clearly.
I don't plan to have a usual process of understanding the domain, discovering the numbers, and evaluating the high-level design (HLD). If there are any diagrams, they will be strictly related to low-level design.
- DNS - DNS resolver and forwarder, the first project in the repository.
- DistributedScheduler - Distrubuted task scheduler with failover.