Appendix A. Adantages of serices
Appendix A. Disadantages of monoliths
Appendix A. Disadantages of serices
Appendix A. Monoliths s. microserices
Appendix A. References
Appendix B. Disadantages of simple login
Appendix B. OAuth 2.0 authorization and OpenID Connect authentication
Appendix B. OAuth 2.0 flow
Appendix B. OpenID Connect authentication
Appendix B. Other OAuth 2.0 flows
Appendix B. Prelude Simple login, cookie-based authentication
Appendix B. Single sign-on
Appendix C. C4 Model
Appendix D. Two-phase commit (2PC)
Chapter 1. A walkthrough of system design concepts
Chapter 1. Oeriew of this book
Chapter 1. Prelude A brief discussion of scaling the arious serices of a system
Chapter 1. Should you read this book
Chapter 1. Summary
Chapter 2. A typical system design interiew flow
Chapter 2. Connections and processing between users and data
Chapter 2. Design the data model
Chapter 2. Draft the API specification
Chapter 2. Interiewing the company
Chapter 2. Logging, monitoring, and alerting
Chapter 2. Other discussions
Chapter 2. Post-interiew reflection and assessment
Chapter 2. Search bar
Chapter 2. Summary
Chapter 3. Aailability
Chapter 3. Accuracy
Chapter 3. Cloud natie
Chapter 3. Complexity and maintainability
Chapter 3. Consistency
Chapter 3. Cost
Chapter 3. Fault-tolerance
Chapter 3. Further reading
Chapter 3. Non-functional requirements
Chapter 3. Performancelatency and throughput
Chapter 3. Priacy
Chapter 3. Security
Chapter 3. Summary
Chapter 4. Aggregating eents
Chapter 4. Batch and streaming ETL
Chapter 4. Cache inalidation
Chapter 4. Cache warming
Chapter 4. Caching
Chapter 4. Caching as a separate serice
Chapter 4. Denormalization
Chapter 4. Examples of different kinds of data to cache and how to cache them
Chapter 4. Further reading
Chapter 4. Replication
Chapter 4. Scaling databases
Chapter 4. Scaling storage capacity with sharded databases
Chapter 4. Summary
Chapter 4. When to use s. aoid databases
Chapter 5. Change Data Capture (CDC)
Chapter 5. Comparison of eent sourcing and CDC
Chapter 5. Distributed transactions
Chapter 5. Eent sourcing
Chapter 5. Further reading
Chapter 5. Other transaction types
Chapter 5. Saga
Chapter 5. Summary
Chapter 5. Transaction superisor
Chapter 6. Common API paradigms
Chapter 6. Common serices for functional partitioning
Chapter 6. Functional partitioning and arious frameworks
Chapter 6. Library s. serice
Chapter 6. Metadata serice
Chapter 6. Serice discoery
Chapter 6. Serice meshsidecar pattern
Chapter 6. Summary
Chapter 7. API
Chapter 7. A monolith architecture
Chapter 7. CDN
Chapter 7. Caching
Chapter 7. Design Craigslist
Chapter 7. Email serice
Chapter 7. Functional partitioning
Chapter 7. Initial high-leel architecture
Chapter 7. Migrations are troublesome
Chapter 7. Monitoring and alerting
Chapter 7. Other possible discussion topics
Chapter 7. Remoing old posts
Chapter 7. SQL database schema
Chapter 7. Scaling reads with a SQL cluster
Chapter 7. Scaling write throughput
Chapter 7. Search
Chapter 7. Summary
Chapter 7. Summary of our architecture discussion so far
Chapter 7. Using an SQL database and object store
Chapter 7. Writing and reading posts
Chapter 8. Design a rate-limiting serice
Chapter 8. Discuss user stories and required serice components
Chapter 8. Employing a sidecar pattern
Chapter 8. Functional requirements
Chapter 8. Further reading
Chapter 8. High-leel architecture
Chapter 8. Logging, monitoring, and alerting
Chapter 8. Non-functional requirements
Chapter 8. Proiding functionality in a client library
Chapter 8. Rate-limiting algorithms
Chapter 8. Stateful approachsharding
Chapter 8. Storing all counts in eery host
Chapter 8. Summary
Chapter 8. When not to do rate limiting
Chapter 9. Aailability monitoring and alerting on the notificationalerting serice
Chapter 9. Client-side considerations regarding duplicate notifications
Chapter 9. Design a notificationalerting serice
Chapter 9. Final notes
Chapter 9. Handling failed delieries
Chapter 9. Initial high-leel architecture
Chapter 9. Monitoring and alerting
Chapter 9. Non-functional requirements
Chapter 9. Notification addressee groups
Chapter 9. Notification templates
Chapter 9. Object store Configuring and sending notifications
Chapter 9. Other possible discussion topics
Chapter 9. Priority
Chapter 9. Scheduled notifications
Chapter 9. Search
Chapter 9. Summary
Chapter 9. Unsubscribe requests
Chapter 10. Auditing a data pipeline
Chapter 10. A simple SQL batch auditing serice
Chapter 10. Constraints on database queries
Chapter 10. Defining a alidation with a conditional statement on a SQL query s result
Chapter 10. Design a database batch auditing serice
Chapter 10. High-leel architecture
Chapter 10. Logging, monitoring, and alerting
Chapter 10. Other possible discussion topics
Chapter 10. Other possible types of audits
Chapter 10. Other users of database schema metadata
Chapter 10. Preent too many simultaneous queries
Chapter 10. References
Chapter 10. Requirements
Chapter 10. Summary
Chapter 11. Autocompletetypeahead
Chapter 11. Detailed implementation
Chapter 11. Functional requirements
Chapter 11. Handling phrases instead of single words
Chapter 11. Handling storage requirements
Chapter 11. Logging, monitoring, and alerting
Chapter 11. Non-functional requirements
Chapter 11. Other considerations and further discussion
Chapter 11. Planning the high-leel architecture
Chapter 11. Sampling approach
Chapter 11. Search s. autocomplete
Chapter 11. Summary
Chapter 11. Weighted trie approach and initial high-leel architecture
Chapter 12. Design Flickr
Chapter 12. Downloading images and data
Chapter 12. High-leel architecture
Chapter 12. Monitoring and alerting
Chapter 12. Non-functional requirements
Chapter 12. Organizing directories and files on the CDN
Chapter 12. Other possible discussion topics
Chapter 12. SQL schema
Chapter 12. Some other serices
Chapter 12. Summary
Chapter 12. Uploading a photo
Chapter 13. CDN authentication and authorization
Chapter 13. Cache inalidation
Chapter 13. Common operations
Chapter 13. Design a Content Distribution Network
Chapter 13. High-leel architecture
Chapter 13. Logging, monitoring, and alerting
Chapter 13. Other possible discussions on downloading media files
Chapter 13. Requirements
Chapter 13. Storage serice
Chapter 13. Summary
Chapter 14. Connection serice
Chapter 14. Design a text messaging app
Chapter 14. Initial high-leel design
Chapter 14. Initial thoughts
Chapter 14. Logging, monitoring, and alerting
Chapter 14. Message serice
Chapter 14. Message-sending serice
Chapter 14. Other possible discussion topics
Chapter 14. Search
Chapter 14. Sender serice
Chapter 14. Summary
Chapter 15. Aailability serice
Chapter 15. Approal serice
Chapter 15. Booking serice
Chapter 15. Create or update a listing
Chapter 15. Design Airbnb
Chapter 15. Design decisions
Chapter 15. Functional partitioning
Chapter 15. High-leel architecture
Chapter 15. Logging, monitoring, and alerting
Chapter 15. Other possible discussion topics
Chapter 15. Summary
Chapter 16. Design a news feed
Chapter 16. High-leel architecture
Chapter 16. Logging, monitoring, and alerting
Chapter 16. Other possible discussion topics
Chapter 16. Prepare feed in adance
Chapter 16. Summary
Chapter 16. Validation and content moderation
Chapter 17. Aggregation serice
Chapter 17. Approximation
Chapter 17. Batch pipeline
Chapter 17. Dashboard with Lambda architecture
Chapter 17. Design a dashboard of top 10 products on Amazon by sales olume
Chapter 17. Initial high-leel architecture
Chapter 17. Initial thoughts
Chapter 17. Kappa architecture approach
Chapter 17. Logging, monitoring, and alerting
Chapter 17. Other possible discussion topics
Chapter 17. References
Chapter 17. Streaming pipeline
Chapter 17. Summary
Part 1
Part 2