System Design Interview - An Insider's Guide (Volume 2)
This book can be seen as a sequel to the book: System Design Interview - An Insider’s Guide. It covers a different set of system design interview questions and solutions. Although reading Volume 1 is helpful, it is not required. This book should be accessible to readers who have a basic understanding of distributed systems.
This volume provides a reliable strategy and knowledge base for approaching a broad range of system design questions that you may encounter. It will help you feel confident during this important interview. This book provides a step-by-step framework for how to tackle a system design question. It also includes many real-world examples to illustrate a systematic approach, with detailed and well-explained steps you can follow.
What’s inside? - An insider’s take on what interviewers really look for and why. - A 4-step framework for solving any system design interview question. - 13 real system design interview questions with detailed solutions. - 300+ diagrams to visually explain how different systems work.
Table of Contents Chapter 1: Proximity Service Chapter 2: Nearby Friends Chapter 3: Google Maps Chapter 4: Distributed Message Queue Chapter 5: Metrics Monitoring Chapter 6: Ad Click Event Aggregation Chapter 7: Hotel Reservation Chapter 8: Distributed Email Service Chapter 9: S3-like Object Storage Chapter 10: Real-time Gaming Leaderboard Chapter 11: Payment System Chapter 12: Digital Wallet Chapter 13: Stock Exchange
It waited on my shelf long enough, so I decided to finally deal with it during my vacation ;)
Why do I read such books? Mainly for 3 reasons: 1. double-check my own thinking (am I getting blind spots? are my choices rational & adequate?) 2. compare my own clarifying questions with the ones given in the book (that is the section I find most interesting - as it's a clear indication you understand when are the risks/challenges) 3. learn a bit about some complex and unobvious cases (in this book, these were the three final chapters, if I remember correctly)
SDI2 didn't disappoint. Yes, some of the initial chapters feel similar (at least in problem space, not necessarily in solution space), the final chapters sometimes do not go deep enough when things get interesting :), yes - some solution suggestions lack practical explanations when things get really tricky (event sourcing in practice), but it was still a lot of fun - especially when I was going for a stroll deeply in my thoughts: could I do it even better, what would happen if I had ...
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.
Really good for any system design interview prep. Significantly better than Volume 1, as it contains way more details and information about each topic, thus providing more value.
The book covers a lot of breadth without going much in-depth into any of the topics. It fulfills its promise to provide the reader with topics for interview preparation however if the reader is looking to actually understand something deeply then the links at the end of each chapter are much better rather than the chapter itself.
I'm not sure what this book (Volume 2) is about. While the first really was focused on SD interview, this one tries to cover a lot of theory in every chapter. So you are a bit lost re: interview question. And the "answers" are in many cases more theoretical, but when they become more specific, they make a lot of strange decisions -without explanation. E.g., they put filterId in data tables for "better querying " -without any discussion on how do they plan to maintain such queries for new data. Or, in Hotel reservation system they put totals table (per room type) but believe that "daily batch update" is enough to be synced with real room availability...
I liked this more than Vol. 1. First of all, systems that author focuses on in this book are more interesting and challenging. Second, author takes different systems as opportunities to discuss very different design bits, not just reiterating on usual "these services on backend, db schema would look like this, also put a queue here" - instead one system is used as opportunity to discuss different ways of supporting distributed transactions for example. S9me examls went a bit over the top in discussing business domain in depth, but overall content is quite good and would definitely be helpful in interview prep.
I read the book carefully by taking notes. This book is harder than the former one. Last 2 chapters(Digital Wallet and Stock Exchange) were the hardest chapters IMHO. Looking for the first one which will be published in 2024.
Good follow-up from the first version. I felt the first version was too simple and this one makes a lot of progress on that front. At times, it reads like a condensed version of Martin Kleppmanns' book due to the sheer number of references. The title of the book should have been system design concepts or summaries - as sharing this much content in an interview setting may not be practical. Still a good overview of inner workings of some of the complex systems currently running on the web.
A better enhancement to the first volume, contains better organized chapters with new content that outcome the famous Grokking System Design Interviews, the only drawback I can see is that the diagrams are not colored for a book that costs almost 40 euros,that is cheap.
Being honest, I enjoyed volume 2 a bit better than volume 1. I suspect the reason might be my familiarity with design and architecture of infrastructure-level systems - such as databases, message queues etc. - which made the business use cases covered in this book more interesting. I think this book can serve a dual purpose of both making you better in thinking about how to design software systems, while also preparing you for the (now quite standardised) system design interview for more senior engineering levels. I think the best value I got from the book was the curated set of case studies along with a good list of references that could be used in areas where I wanted to go in more depth. The examples around geolocation services were the newest and most interesting to me and gave me an opportunity to dive deeper into ways to index spatial data, which is a very interesting topic. My only slight complaint about the book is that there were a few cases where I felt the author was handwaving some potential issues (e.g. the potential for partial write failures in some scenarios or the issue of knowing at which point to restart processing after a secondary failover in the stock exchange example), some solutions feeling a bit overcomplicated (e.g. the event sourcing solution for the digital wallet just for the sake of satisfying the auditability requirements didn't feel justified to me, since this could be addressed simply by adding an extra ledger table that's updated atomically with everything else - in fact the linked blog post from Square describes such an approach), or sometimes trying to dumb down some things from the average reader which could lead to confusion or the reader actually making wrong conclusions (e.g. the time complexity calculations for the order book didn't take into account all the cases, since in the case of a new price it wouldn't be constant O(1) but linear O(n) if a linked hash map is used as shown shown in the book or logarithmic O(logn) if a skip list is used - in fact, when I read the linked blog post about building an order book this issue was clarified there). This was the main thing that kept me from a 5-star review for a book that was otherwise time very well spent.
a continuation of volume 1, from the same author, includes more system design problems discussed in the same style as the previous book. by reading both books you get a very wide variety of problem examples broken down for you, to help you adapt to most system design interview questions. like this, the information is conveniently aggregated for you in one place, as opposed to scattered in more articles/posts/comments all over the internet. please note, this is for a System Design focused interview, so it is more focused on the server-data-backend. it is also possible for you to have a question that focuses on the client-interaction-front/backend (sometimes named a Product Design for some companies, like Facebook/Meta, for example), in this case you will need to complete your learning from additional sources to include answers for things like: what happens when a user scrolls, what types of API calls are made and what do they contain, what happens if i open this app on two devices after i just updated something from one device, and similar.
I recently purchased the ByteByteGo System Design Interview course, which comprehensively covers both System Design Interview books by Alex Xu. And let me say—this is an absolute game-changer for any software engineer aiming to level up their design thinking.
The course is not an easy read. It demands your full attention, deep focus, and a lot of time. I spent hours breaking down every flow, analyzing diagrams, digesting core concepts, and mentally simulating implementations from a high-level perspective. But it’s this very challenge that makes the material so rewarding.
Each topic is tackled with clarity, depth, and real-world relevance—from load balancing and caching to CAP theorem trade-offs and scalable architecture blueprints. Whether you’re prepping for interviews or designing production systems, this content equips you with not just answers, but frameworks for thinking.
Highly recommended if you’re serious about mastering system design. Just be prepared to invest the effort—it’s worth it.
This book has more depth than the first book but with the expense of accuracy. Some chapters have some issues. Hotel reservation system solution is not good enough for instance. If you follow that in a Senior+ interview you'd fail. Some pseudo codes have issues too. Stock Exchange chapter had some hand wavy algorithms and data structures. The core of any stock exchange is the matching algorithm. You have to provide a passable pseudocode for that. They explain the algorithm and it is correct in the high level but then when you get into the details, some issues start to emerge.
It does have some good depth though. So know that it introduces good details especially if you never worked on these type of areas but don't strictly accept the details as is. Use a critical lens while digesting it.
In line with the trend of self-published technical books, this book may not have undergone rigorous professional editing. The target audience likely seeks content exposure over refined writing. Its quality is less crucial as the material resembles edited study notes. Following the prior Volume , this installment widens its scope to discuss various software systems and their scalable development. It is a bit depressing how this kind of template knowledge needs to be hashed out in job interviews by candidates with ample experience. Purely for learning, though, it is interesting to know how scalable systems are built in general, as not many engineers can have hands on experience building them from scratch. This book earns a high rating for its ability to aggregate and summarize complex content that can be challenging to access in one source.
"System Design Interview – An Insider's Guide: Volume 2" by Alex Xu is an invaluable resource for anyone preparing for system design interviews. The book provides a structured approach to understanding complex system design concepts, breaking down intricate topics like scalable architecture, distributed systems, and cloud-native design into digestible parts. It offers clear explanations, practical examples, and step-by-step solutions to real-world problems, which are essential for both interview preparation and improving system design skills in the workplace. Volume 2 builds on the foundation laid in the first volume, offering more advanced scenarios and deeper insights, making it a must-read for serious candidates aiming to excel in technical interviews.
After reading the chapters of domains in which i have experience, this would've been an excellent introduction. Also I've probably would've done things a little bit differently but feels really good to know that we were not that far from these blueprints. Also it became really clear that this is an oversimplification to extreme.
If I ever get into architecture interviews I'll know that that I'm not as dumb as they make you feel. There is no way anybody can reason this over a 1 hr interview unless citing from memory or exact experience.
A pretty good resource for system design interviews. Definitely better than the first version. I give 4/5 because I think that some concepts (e.g. distributed transactions) could be covered more broadly. If you read the book without doing some deep dives on your own it's like a cheatsheet that may help you pass the interview but won't help you understand the details of how distributed systems should be built.
More of a reference book than a book that is supposed to be read sequentially.
Prior knowledge of distributed systems makes it quicker to read and easier to understand. It is better to get this book after one has read the first volume and still feels curious to explore further. Design and their deep dives are extremely detailed despite of the possibility of large variations and preferences by people actually working and building those systems.
Some of the chapters felt like a description of how to use particular technologies to solve a particular problem. I still feel this edition was slightly better than the first edition but both have similar challenges - typos, disjoint descriptions, superficial expositions, and so on.
Acceptable book though for preparing for interviews.
The second version also has some exceptional content covering a wide variety of architecture flows. The links at the end of each chapter helps with additional information if you want a deep-dive.
Needless to say, this book acts as a great reference guide that I'll keep going back to. But on the flip side, some designs were same/similar to previous ones - such repetitions could've been avoided.
So so good! A detailed goldmine of system design knowledge with high-quality material overall including well-done detailed diagrams and tons of references to explore further for each system design topic/chapter. I will visit this book at least a couple of times in the future to fully grasp the content.
Much more complex than the first book, requires more time to digest but it's definitely worth it. Described problems are often reused by tech companies during hiring. Last 2-3 chapters felt not deep enough - especially the one about Stock Exchange Market. Reading part 1 before part 2 is not required but I highly recommend it. Overall a good position!
I’d recommend for any software engineer at any level, regardless of whether you’re currently prepping for an interview.
Demonstrates workings of complex, large scale systems in a succinct and simple manner. Introduces and explains key concepts in an actionable way without getting bogged down in details. Fantastic!
Alex Xu does deliver with his second book in the series. Once again I heavily recommend this to everyone wanting to get a more hands on approach to system design.