What is System Design? According to Wikipedia, “Systems Design is the process of defining the architecture, modules, interfaces, and data for a system to satisfy specified requirements”.
This is 100% correct, but is too abstract… In plain words, System Design is a task to:
System Design focuses on the high-level business requirement and workflow, without really worrying about how they are implemented or any code-level details. Example topics for System Design are:
Notice none of these topics require you to think about code in a specific language?
Object-Oriented Design (OOD) focuses more on the code. Great OOD produces code that is readable and easy-to-maintain. Example topics are:
Notice you start thinking about code when you see these topics?
This is called an appetizer because Tiny URL is probably the simplest first System Design task to discuss. You can quickly play with the Tiny URL feature in this link. In the future stories, I will work on entrees like Design Twitter.
In short, Tiny URL does two things:
How would you approach this appetizer and design Tiny URL? I will take a stab at it.
I will provide sample clarification for this demo purpose, including some basic math to demonstrate the thinking process.
#tinyurl #interview #backend #database-design #design-systems