{"id":17133760,"url":"https://github.com/slavikdev/system-design-interview-framework","last_synced_at":"2026-02-20T00:02:25.022Z","repository":{"id":142155556,"uuid":"224511079","full_name":"slavikdev/system-design-interview-framework","owner":"slavikdev","description":"How to structure a system design interview","archived":false,"fork":false,"pushed_at":"2019-12-17T13:05:36.000Z","size":16,"stargazers_count":4,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-10-20T08:32:13.184Z","etag":null,"topics":["design","interview","interview-practice","interview-preparation","system-design","systems-design"],"latest_commit_sha":null,"homepage":null,"language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/slavikdev.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-11-27T20:22:56.000Z","updated_at":"2025-09-05T05:30:41.000Z","dependencies_parsed_at":null,"dependency_job_id":"9bbc0e2b-0385-4e1c-90ec-6cf1c5afb93d","html_url":"https://github.com/slavikdev/system-design-interview-framework","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/slavikdev/system-design-interview-framework","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/slavikdev%2Fsystem-design-interview-framework","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/slavikdev%2Fsystem-design-interview-framework/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/slavikdev%2Fsystem-design-interview-framework/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/slavikdev%2Fsystem-design-interview-framework/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/slavikdev","download_url":"https://codeload.github.com/slavikdev/system-design-interview-framework/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/slavikdev%2Fsystem-design-interview-framework/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29637400,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-19T22:32:43.237Z","status":"ssl_error","status_checked_at":"2026-02-19T22:32:38.330Z","response_time":117,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["design","interview","interview-practice","interview-preparation","system-design","systems-design"],"created_at":"2024-10-14T19:42:59.137Z","updated_at":"2026-02-20T00:02:24.986Z","avatar_url":"https://github.com/slavikdev.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# System Design Interview Framework\n\nThis document defines a suggested system design interview structure, which can be used as a guideline. Please feel free to open a PR with suggestions!\n\n## Interview Steps\n\n### 1. Collect requirements\n\n#### 1.1 Functional requirements\n\n##### Clarifying questions\n\n* What will the system do?\n* What exactly are we going to build: API, web app, mobile app?\n\n##### Examples\n\n* TODO\n\n#### 1.2 Main stakeholders of the system\n\n##### Clarifying questions\n\n* Who are the main users of the system?\n\n##### Examples\n\n* TODO\n\n#### 1.3 Non-functional requirements\n\n##### Clarifying questions\n\n* How can we tell that the system is working?\n* Is there a bottleneck in the design?\n* How do the components work together?\n* How do we provide great service to everyone?\n\n##### Examples\n\n* TODO\n\n-------\n\n\n### 2. Back-of-the-envelope calculation\n\n#### Clarifying questions\n\n* What scale is expected from the system?\n* How much storage will we need?\n* What network bandwidth usage are we expecting?\n\n#### Examples\n\n* TODO\n\n\n#### Numeric estimates for properties like this:\n\n* Latency\n* Throughput\n* Storage\n\n#### Cost of operations:\n\n* Read from memory\n* Read from disk\n* Local area network (LAN) round-trip\n* Cross-continental network\n\n-------\n\n### 3. Define system interface\n\n#### Clarifying questions\n\n* If it’s an API, what endpoints will we need?\n\n#### Examples\n\n* TODO\n\n-------\n\n### 4. Define data model\n\n#### Clarifying questions\n\n* TODO\n\n#### Examples\n\n* TODO\n\n-------\n\n### 5. Create high-level design (draw a block diagram)\n\n#### Examples\n\n* TODO\n\n-------\n\n### 6. Add details (cache, replicas, detalization of individual components)\n\n#### Clarifying questions\n\n* Since we will be storing a massive amount of data, how should we partition our data to distribute it to multiple databases? Should we try to store all the data of a user on the same database? What issue could it cause?\n* How will we handle X?\n* What data access models will we have?\n* How much and at which layer should we introduce cache to speed things up?\n* What components need better load balancing?\n\n#### Examples\n\n* TODO\n\n-------\n\n### 7. Identifying bottlenecks\n\n#### Clarifying questions\n\n* Is there any single point of failure in our system? What are we doing to mitigate it?\n* Do we have enough replicas of the data so that if we lose a few servers we can still serve our users?\n* Similarly, do we have enough copies of different services running such that a few failures will not cause total system shutdown?\n* How are we monitoring the performance of our service? Do we get alerts whenever critical components fail or their performance degrades?\n* How does system respond to various failures\n\n#### Examples\n\n* TODO\n\n-------\n\n### 8. Add telemetry: monitoring, logging\n\n#### Clarifying questions\n\n* TODO\n\n#### Examples\n\n* TODO\n\n-------\n\n## Must know\n\n* Sharding data\n* Replication types\n* Write-ahead logging\n* Separating data and metadata storage\n* Load distribution\n\n## General guidelines\n\n* Layout trade-offs and compromises and explain reasoning.\n* Explain thought process\n* Keep going, don't stop, don't give up.\n\n## Resources\n\n* TODO \n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fslavikdev%2Fsystem-design-interview-framework","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fslavikdev%2Fsystem-design-interview-framework","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fslavikdev%2Fsystem-design-interview-framework/lists"}