TE
TechEcho
Home24h TopNewestBestAskShowJobs
GitHubTwitter
Home

TechEcho

A tech news platform built with Next.js, providing global tech news and discussions.

GitHubTwitter

Home

HomeNewestBestAskShowJobs

Resources

HackerNews APIOriginal HackerNewsNext.js

© 2025 TechEcho. All rights reserved.

The System Design Primer

508 pointsby donnemartinabout 8 years ago

14 comments

contingenciesabout 8 years ago
High level observations:<p>1. Business level constraints (time, human, fiscal and other resources, stakeholders) trump technical constraints <i>every time</i>. Identifying these should be <i>step zero</i> in any design process.<p>2. A business-level risk model assists with appropriate design with respect to both security and availability and should ultimately drive component selection.<p>3. Content seems very much focused on public IP services provided through multiple networked subsystems. While this is a very popular category of modern systems design, not all systems fall in to this category (eg. embedded), and even if they do many complex systems are internal, and public-facing interfaces are partly shielded&#x2F;outsourced (Cloudflare, AWS, etc.).<p>4. Existing depth in areas such as database replication could perhaps be grouped in a generic fashion as examples of fault tolerance and failure &#x2F; issue-mitigation strategies.<p>5. Asynchronicity and communication could be grouped together under architectural paradigms (eg. state, consistency and recovery models), since they tend to define at least subsystem-local architectural paradigms. (Ever tried restoring a huge RDBMS backup or performing a backup between major RDBMS versions where downtime is a concern? What about debugging interactions between numerous message queues, or disparate views of a shared database (eg. blockchain, split-capable orchestration systems) with supposed eventual consistency?)<p>6. Legal and regulatory considerations are often very powerful architectural concerns. In a multinational system with components owned by disparate legal entities in different jurisdictions, potential regulatory ingress (eg. halt&#x2F;seize&#x2F;shut down national operations) can become a significant consideration.<p>7. The new&#x2F;greenfield systems design perspective is a valid and common one. However, equally commonly, established organizations&#x27; subsystems are (re-)designed&#x2F;upgraded, and in this case system interfaces may be internal or otherwise highly distinct from public service design. Often these sorts of projects are harder because of downtime concerns, migration complexity and organizational&#x2F;technical inertia.
评论 #13838474 未加载
评论 #13835557 未加载
phamiltonabout 8 years ago
I very much want to hear the words &quot;failure isolation&quot; during a systems design interview. Usually as the answer to &quot;Why did you break that functionality out into a separate service?&quot;. The answer should involve &quot;independent scaling&quot; and &quot;failure isolation&quot;.
评论 #13826593 未加载
评论 #13827012 未加载
评论 #13830294 未加载
评论 #13826702 未加载
评论 #13825534 未加载
评论 #13825488 未加载
评论 #13828463 未加载
评论 #13826378 未加载
评论 #13826524 未加载
评论 #13825322 未加载
alkonautabout 8 years ago
Does &quot;system&quot; here mean &quot;system of internet services&quot;? I&#x27;m designing large systems and hope to learn more - but none of my systems have servers. Anywhere.
评论 #13829280 未加载
arslanahmadabout 8 years ago
I recently gave interviews and did my preparation from <a href="https:&#x2F;&#x2F;www.educative.io&#x2F;collection&#x2F;5668639101419520&#x2F;5649050225344512" rel="nofollow">https:&#x2F;&#x2F;www.educative.io&#x2F;collection&#x2F;5668639101419520&#x2F;5649050...</a>. It was pretty useful.
reacharavindhabout 8 years ago
Haven&#x27;t read the entire guide yet. But, I hope it has a few lines somewhere about over-engineering a solution. Yes, fault-tolerance, Asynchronousism, individual scalability are virtues you want, but not for a super simple problem that needs functional work. I&#x27;ve been in so many discussions with people that talk about all these virtues and speend too little a time on making that core function do what it is supposed to do.
movedxabout 8 years ago
Brilliant work. I may convert this into MkDocs &quot;formatted&quot; project using the Materials theme. I&#x27;ve done the same thing for the Open Guide to AWS which I&#x27;m still working on. It vastly improves the readability and accessible of the information.
评论 #13827105 未加载
评论 #13838538 未加载
评论 #13827050 未加载
0x54MUR41about 8 years ago
That&#x27;s amazing. Thank you for creating this. It&#x27;s very useful for preparing an interview in system design.<p>I think you miss &quot;Show HN&quot; on your post.
javajoshabout 8 years ago
I wonder what this would look like for Erlang system designers.
评论 #13830206 未加载
crudbugabout 8 years ago
Great resource.<p>Which tool is used for creating diagrams ?
评论 #13825159 未加载
pfistaabout 8 years ago
This looks like a great guide, thanks! Makes me wonder how effective things like Google&#x27;s app engine are in autoscaling your web apps. &quot;Serverless&quot; code seems too good to be true.
abraaeabout 8 years ago
Nice concept!<p>A missing area is identity management. Most likely this should be separated from your system (e.g. don&#x27;t have a table somewhere with username, password in it).<p>In consumer facing systems, OpenID Connect (better) as practiced by Google, OAuth is used by most others.<p>In enterprise software, SAML is the common parlance.<p>That leads naturally to questions about API authorization (are API calls made on behalf of system users? If not, start probing further).<p>Always enlightening to start asking questions about identity management very early on in designing systems.
评论 #13838483 未加载
chidabout 8 years ago
This looks awesome, is there a collection of these around other fields?
oferzeligabout 8 years ago
Beautiful document. Clearly written and clearly drawn.
sna1labout 8 years ago
Great idea, thanks for doing this!