![]() |
VOOZH | about |
Download the free Kindle app and start reading Kindle books instantly on your smartphone, tablet, or computer - no Kindle device required.
Read instantly on your browser with Kindle for Web.
Using your mobile phone camera - scan the code below and download the Kindle app.
OK
Explore your book, then jump right back to where you left off with Page Flip.
View high quality images that let you zoom in to take a closer look.
Enjoy features only possible in digital β start reading right away, carry your library with you, adjust the font, create shareable notes and highlights, and more.
Discover additional details about the events, people, and places in your book, with Wikipedia integration.
Alex Xu is an experienced software engineer and entrepreneur. Previously, he worked at Twitter, Apple and Zynga. He can be found online at LinkedIn and twitter (@alexxubyte)
Sahn Lam is a software engineer with decades of experience in building scalable systems at high-growth companies like Discord, Zynga, and NetApp. Twitter: @sahnlam
Customer Reviews, including Product Star Ratings help customers to learn more about the product and decide whether it is the right product for them.
To calculate the overall star rating and percentage breakdown by star, we donβt use a simple average. Instead, our system considers things like how recent a review is and if the reviewer bought the item on Amazon. It also analyzed reviews to verify trustworthiness.
Learn more how customers reviews work on AmazonThis is the best book I have read about System Design and is useful for every backend engineer - whether they are preparing for an interview or not. This book covers some of the most important topics in todayβs software industry and provides cutting-edge designs in a well-defined structure.
Being an engineering manager and technical architect, I have interviewed 100+ engineers for many years, and successful candidates nail each individual section as structured in the book - whether it is about asking relevant questions, giving proper back-of-the-envelope estimation, giving high-level design of APIs/databases, detailed design or even identifying bottlenecks and solve for them. Successful candidates discuss multiple relevant solutions before choosing the best and this book provides many such solutions with pros/cons for each approach.
Each section is well illustrated with clear and simple diagrams that even a new college graduate can follow. A picture is worth a thousand words and this book has beautifully used illustrations to convey the concepts. Even experienced engineers and architects learn from what they havenβt been working on. For example, an engineer at one company might want to know the challenges involved in building cutting-edge designs for other complex systems like Google maps Or Uber-like systems. This book provides practical, well-thought-through, beautifully written solutions.
The links/references at the end I have found super helpful too. You can go to those links, read them if you want to drill even further down on any topic. I have tried a few other books and websites but others are either too theoretical or donβt have the quality content that this book has, having been written by experienced engineers and architects.
This is a must-have book for anyone pursuing a backend engineering career, and glad to be owning and reading this book. This will certainly make you stand out in the interview and will make you a better engineer.
I read Alexβs first book when preparing for my job change and it helped me land a job that I really enjoy. When I heard there was volume 2, I immediately bought it and read it. After doing interviews on both sides as a candidate and an interviewer, I could say these two books are truly useful. This volume 2 book even has broader and deeper technical content than volume 1.
I particularly liked the proximity service and hotel reservation chapters.
The proximity service chapter explained some of the most important geospatial algorithms: geohash, quadtree, Google S2, etc. It not only explained how those algorithms work at the high level but also when and why we should use them. Many other resources jump into sharding immediately. This book actually did the math about the memory and storage requirement, and came to the conclusion that sharding may not be required as the memory footprint was usually small for the geospatial index. I really appreciate the book authors doing this as this is exactly what we do in real design. We back our design with napkin math.
I also liked the hotel reservation chapter. It defined the problem and scope really well. Not everything needed to be distributed. For a hotel reservation system, the QPS is not high and the challenge of this system lies in handling concurrent requests. This chapter gave a good overview of optimistic locking, pessimistic locking, and caching. Iβve heard about those terms from time to time but never used them in real life. Itβs really nice to see how they were actually used in real systems.
Are the books good for interview training and learning some new knowledge? Absolutely yes.
PROs:
+ A lot of visuals. There are visuals every 2-3 pages.
+ The book is easy to digest despite covering some of the advanced topics such as distributed transactions, S3, stock exchange, etc.
+ This book might increase your chance to get into FAANG.
CONs:
- It doesnβt cover all the system design topics.
- It probably will increase your chance to get into FAANG, but you will likely need other resources as well.
Other materials for system design:
+ For those who like YouTube, the SystemDesignInterview channel is good. It is taught by someone from Amazon(?).
+ Uber, Airbnb, Meta eng blogs are pretty awesome.
+ DDIA book
+ Do mock interviews.
+ Harvard CS75 Lecture 9 Scalability Web Development David Malan. You can find the video on YouTube.
+ System Design primer GitHub repository.
This book is a great step up from their previous release. It goes in depth into each topic/system, exploring different potential approaches and options, compare their pros and cons before making the decision on which option to pick; and when necessary, it explains some key algorithms and data structures like 2-phase-commit, skip-list, etc. which really helps you gain deep understanding of the proposed solutions and reason of choosing them.
For comparison, their volume 1 is a much lighter read, where it often jump to the conclusion of picking a solution for a certain task, if you're not already an experienced industry veteran that familiar with those solutions and techniques, you may find yourself keep wondering "why do we choose this?" and "What are other alternatives and why don't we choose them?". Volume 1 is arguably only good for entry level interviews that don't usually go in depth, or to help industry veterans to refresh their memory; while volume 2 is good for more senior level interviews and in general a very good read to help enrich your knowledge on some of the latest trend and practices in the industry.
After reading volume 2, I really hope they can revisit the problems and topics on volume 1 and go similar depth on them. Look forward to their next release.
Disclaimer - I am neither prepping for an interview nor I myself quiz candidates on such open-ended system design topics. Curious after viewing design diagram for a prototypical "Payment Engine" by the author in LinkedIn, I purchased the book. It proved to be a very good investment of money, time and energy. Just ordered Alex's first book!
Contents -
SDI-Vol 2 has 13 chapters, on how to design Proximity Service (TenCent influenced), Nearby Friends (Amazon), Distributed Message Queue, Real-time Gaming Leaderboard, Payments Engine, Digital Wallet and a few more. Each spans about 30 pages with clearly drawn workflow diagram, high level design (e.g., API stubs, push vs. pull, choice of data store etc), BOTE calculation to plan throughput/capacity, bullet-pointed wrap up, a one-page mind map of the design and reasonably exhaustive index of useful reference materials.
Particularly impressive is the way authors have (a) briefly introduced key, but slightly less mainstream concepts like HdrHistorgram, Hamilton Curve, FIX protocol, Secure-ID etc, and (b) discussed possible alternative solutions (e.g., TC/C vs. Saga for distributed transactions), where applicable. I now work in FinTech and both the "Payment System" (heavily influenced by stripe) and "Digital Wallet" sections are extremely well done, concise and useful abstractions for real enterprise systems.
Second-order Applicability -
Apart from SDI - and I doubt many companies would ask "Design a service to find nearby friends" to most interviewees - this should be a very useful book for three reasons.
One - Flight Simulator mode. If you're familiar with "core concepts" like Nearest-N neighbors, distributed time-series database, different aggregation windows streaming, Hotspot shard, idempotency and immutability in strongly consistent systems, write-ahead log etc but have not used most of them in "real life", this book offers a quick walkthrough of systems where it gets used, and how. Investing time here is like practicing how to land during Category 5 storm in a flight simulator. Even if you may never need to land the plane like that, it is good to at least have an idea how it is done.
Two - Scalability-Consistency-Availability Triad. This could be a one- or two- week long crash course in "how to scale system". Especially, early back-of-the-envelope (BOTE) calculations shown here were fundamental arbiter on the final design choice. e.g., Payment Systems do not usually have a problem of scale. They rarely process more than ~10 tps. In such systems, however, each transaction must be "strongly consistent" (no double payment!). Some systems can manage transient loss of availability with minimal operational friction (e.g., blips in a monitoring system are unlikely to cause massive disruption), while some others (e.g., Object Storage) need to build for availability grounds-up. In all real-life systems there are certain "Day Zero Decisions" that can only be done right during design. Going through this book stretches those decision muscles well.
Three - Up-leveling (or, clear communication). This is, I guess, where the SDI - or the interview part - comes in to filter out understanding from verbosity. Fundamentally, designing a system is not the most difficult part in engineering software. Decision binding right choice with key players - each with varying ego, objectives and goals - is where effort cycles are spent. This book is a good way to communicate these decisions in a structured, objective and somewhat universal language to both technical and executive leadership. The mind maps accompanying each design were the best parts of the book and they provide a good, repeatable framework to work on similar initiatives. Frameworks rule in complex domain of "system design" as the practitioner has a good starting point with good framework and can then focus on the other unique aspects of the system to be built/managed.
Great book. Perhaps the language could have been a tightened a bit here and there with an expert editor. But very very close to 5-stars! Looking forward to a premium publisher doing justice to this series.
Disclaimer - I am neither prepping for an interview nor I myself quiz candidates on such open-ended system design topics. Curious after viewing design diagram for a prototypical "Payment Engine" by the author in LinkedIn, I purchased the book. It proved to be a very good investment of money, time and energy. Just ordered Alex's first book!
Contents -
SDI-Vol 2 has 13 chapters, on how to design Proximity Service (TenCent influenced), Nearby Friends (Amazon), Distributed Message Queue, Real-time Gaming Leaderboard, Payments Engine, Digital Wallet and a few more. Each spans about 30 pages with clearly drawn workflow diagram, high level design (e.g., API stubs, push vs. pull, choice of data store etc), BOTE calculation to plan throughput/capacity, bullet-pointed wrap up, a one-page mind map of the design and reasonably exhaustive index of useful reference materials.
Particularly impressive is the way authors have (a) briefly introduced key, but slightly less mainstream concepts like HdrHistorgram, Hamilton Curve, FIX protocol, Secure-ID etc, and (b) discussed possible alternative solutions (e.g., TC/C vs. Saga for distributed transactions), where applicable. I now work in FinTech and both the "Payment System" (heavily influenced by stripe) and "Digital Wallet" sections are extremely well done, concise and useful abstractions for real enterprise systems.
Second-order Applicability -
Apart from SDI - and I doubt many companies would ask "Design a service to find nearby friends" to most interviewees - this should be a very useful book for three reasons.
One - Flight Simulator mode. If you're familiar with "core concepts" like Nearest-N neighbors, distributed time-series database, different aggregation windows streaming, Hotspot shard, idempotency and immutability in strongly consistent systems, write-ahead log etc but have not used most of them in "real life", this book offers a quick walkthrough of systems where it gets used, and how. Investing time here is like practicing how to land during Category 5 storm in a flight simulator. Even if you may never need to land the plane like that, it is good to at least have an idea how it is done.
Two - Scalability-Consistency-Availability Triad. This could be a one- or two- week long crash course in "how to scale system". Especially, early back-of-the-envelope (BOTE) calculations shown here were fundamental arbiter on the final design choice. e.g., Payment Systems do not usually have a problem of scale. They rarely process more than ~10 tps. In such systems, however, each transaction must be "strongly consistent" (no double payment!). Some systems can manage transient loss of availability with minimal operational friction (e.g., blips in a monitoring system are unlikely to cause massive disruption), while some others (e.g., Object Storage) need to build for availability grounds-up. In all real-life systems there are certain "Day Zero Decisions" that can only be done right during design. Going through this book stretches those decision muscles well.
Three - Up-leveling (or, clear communication). This is, I guess, where the SDI - or the interview part - comes in to filter out understanding from verbosity. Fundamentally, designing a system is not the most difficult part in engineering software. Decision binding right choice with key players - each with varying ego, objectives and goals - is where effort cycles are spent. This book is a good way to communicate these decisions in a structured, objective and somewhat universal language to both technical and executive leadership. The mind maps accompanying each design were the best parts of the book and they provide a good, repeatable framework to work on similar initiatives. Frameworks rule in complex domain of "system design" as the practitioner has a good starting point with good framework and can then focus on the other unique aspects of the system to be built/managed.
Great book. Perhaps the language could have been a tightened a bit here and there with an expert editor. But very very close to 5-stars! Looking forward to a premium publisher doing justice to this series.
fter reading Volume 1, I finally had the chance to dive into System Design Interview: Volume 2, and it exceeded my expectations. The author once again delivers a clear, structured, and highly practical approach to one of the most crucial topics for interviews in big tech companies.
This book helped me connect the dots that were missing for years. The explanations are intuitive, the frameworks are actionable, and the real-world examples make complex concepts feel accessible. I genuinely learned a lot β and canβt help but think that if I had read this a few years earlier, I might have had a very different career trajectory, possibly transitioning to a product company much sooner.
Huge thanks to the author for creating such a valuable resource. Itβs more than a book β itβs a confidence booster and a roadmap for anyone aiming to level up their system design skills.
Love this book especial the design questions on E-wallet, exchange and payment gateway
I have been waiting for this book for months! It has been a while since Iβve done an interview. After joining many interview forums and chat groups, I learn of Alexβs first book, System Design Interview. Almost daily I get notifications about someoneβs successful interview story after reading Alexβs book. They were passing interviews with the FAANG+ companies with βflying colors!β The excitement was literally contagious. I ordered this 2nd edition book the day it hit Amazon. I finally understand all the craze. This book is truly unique. It is NOT your ordinary boring technical textbook. The chapters are actually structured like a real life interview. As a reader I can feel myself sitting in the interview room working through the problems step-by-step. I think the best part of each chapter is the βfellow-upβ or βextension-to-the-problemβ discussions. This is literally how real-life interviews work. Having good understanding of the solution to a problem is important, but understanding alternatives, trade offs, and limitations are even more important. I feel like Iβm ready for interviews again. This book very worth while.
I have been searching for a book for system design for quite a while, and this is exactly what I am looking for! Though there are a lot of free resource scattered around, nothing is comparable to a well organized book like this one.
System design is hard, as it has a lot of variations (covered by this book), a lot of trade-off considerations (covered by this book), a lot of real-world estimates (covered by this book), and a lot of back-and-forth clarifications between the candidate and the interviewer (covered by this book!).
This book has layers and layers of explanations at different abstraction levels, with good detailed examples. Each example in the book has a lot of graphs to help understand, and the examples are also frequently asked questions in interviews.
I do hope there will be video (youtube?) series based on the book for even broader and more interactive learning opportunities available to all Software Engineers, seeking or will be seeking jobs.
I have been searching for a book for system design for quite a while, and this is exactly what I am looking for! Though there are a lot of free resource scattered around, nothing is comparable to a well organized book like this one.
System design is hard, as it has a lot of variations (covered by this book), a lot of trade-off considerations (covered by this book), a lot of real-world estimates (covered by this book), and a lot of back-and-forth clarifications between the candidate and the interviewer (covered by this book!).
This book has layers and layers of explanations at different abstraction levels, with good detailed examples. Each example in the book has a lot of graphs to help understand, and the examples are also frequently asked questions in interviews.
I do hope there will be video (youtube?) series based on the book for even broader and more interactive learning opportunities available to all Software Engineers, seeking or will be seeking jobs.
I would say you want to buy Volume 1 aswell
Bon livre et bien arrivΓ©
This book is a very good introduction to System Design, providing very good insights, some basic knowledge is assumed, so, I would suggest to possibly read a more basic book before approaching this one, especially for readers new to the topic. Recommended
Very good book. All the chapters present unique problem and system design . The details and structuring is also perfect .
Although some descriptions could be better from a software architecture perspective and the relation qualities-reasoning is not very rigorous, the case studies are OK, they are rich of content, to give students to work in classes.
