System Design: The Big Archive
The book on system design covers a wide range of topics essential for understanding modern software systems and architectures. It begins with fundamental concepts like database isolation levels and the different models of cloud services (IaaS, PaaS, SaaS). It explores various popular programming languages, the future of online payments, and Single Sign-On (SSO) mechanisms. The book delves into best practices for storing passwords securely and explains the workings of HTTPS. It offers guidance on learning design patterns and choosing the right database, as well as generating globally unique IDs and understanding the inner workings of Twitter. There are in-depth discussions on the differences between processes and threads, designing applications like Google Docs, and deployment strategies. Visual aids such as flowcharts for notification systems (e.g., Slack) and insights into Amazon's software operations are included.
Security-focused topics like designing secure web APIs, microservice collaboration, and the nuances between virtualization and containerization (e.g., VMware vs. Docker) are covered. It provides advice on selecting cloud providers for big data solutions, handling duplicate URLs, and the speed benefits of SSDs. The book also addresses large-scale outage handling, the workings of AWS Lambda, and the evolution of HTTP protocols. It includes strategies for scaling websites, an overview of key DevOps books, and comparisons of communication protocols (SOAP, REST, GraphQL, RPC).
Further, it covers browser operations, caching strategies, performance diagnostics, and the differences between caching tools like Redis and Memcached. It discusses optimistic locking, latency vs. consistency tradeoffs, and cache miss attacks. Practical topics like uploading large files, the speed of Redis, the SWIFT payment network, and data partitioning methods are also included. The book explains CDN usage, erasure coding, DNS lookup, and the process of typing a URL in a browser. Advanced topics like AI coding engines, read replica patterns, and email flow designs are examined.
Additional system design challenges, such as designing Gmail and Google Maps, pull vs. push models, money movement, reconciliation processes, and selecting databases for metrics systems are explored. The book concludes with insights into metrics monitoring, big data papers, avoiding double charges, payment security, and tips for system design interviews. It also covers big data evolution, the quadtree structure, finding nearby restaurants on Yelp, stock exchange latency, matching buy and sell orders, and designing systems for payments, flash sales, and back-of-the-envelope estimations.
Source: ByteByteGo