Learning System Design

Book description

Through real-world examples and case studies, this book provides a comprehensive exploration of the most intricate system design concepts, strategies, and best practices. Author Rohit Bhardwaj covers the entire spectrum of system design from the bedrock of good design principles to the complexities of scalability, availability, fault tolerance, data storage and retrieval, messaging and communication, and security.

With this book, software engineers and software architects will gain the power to make calculated trade-offs in design decisions with precision, enabling them to articulate their choices with confidence. Whether you're a seasoned software veteran or just starting your career, this essential book is your go-to guide for elevating your skills to new heights. You'll gain access to a wealth of additional resources and strategies to fuel your ongoing growth and learning.

This book will help you:

  • Gain in-depth knowledge and comprehension of system design concepts and principles
  • Develop an expertise in scalability, fault tolerance, data management, messaging and communication, and security
  • Make effective trade-offs in design decisions and communicate them clearly to stakeholders
  • Identify potential design pitfalls and evaluate scalability
  • Develop efficient and fault-tolerant systems
  • Tackle the most intricate and complex system design problems
  • Excel in your next system design interview, equipped with unparalleled insights

Publisher resources

View/Submit Errata

Table of contents

  1. 1. System Design Methodology
    1. System Design Framework
    2. System Design Process
      1. Stage 1: Engage with Business Stakeholders
      2. Stage 2: Identifying Vital Business Capabilities
      3. Stage 3: Understand the Internal and External Personas
      4. Stage 4: Develop a New Value Proposition
      5. Stage 5: Define Solution Architecture
      6. Stage 6: Define Component Process Flows
      7. Stage 7: Review, Refine, and Finalize
    3. Summary
  2. 2. Designing for Scale and Performance
    1. Understanding Scalability: Scale From Zero to Millions Of Users
      1. Server Setup
      2. Scaling
      3. Fluctuation of load
      4. Monitoring, Alarms, and Auto-Healing
    2. Load balancing and distributed systems
    3. Caching
      1. Cache Fundamentals
      2. Strategic Considerations for Using Cache
      3. Design Patterns for Cache
      4. Anti-Patterns for Cache
      5. Common Design Trade-offs for Cache
    4. Content Delivery Network (CDN)
      1. How CDN Helps with Static and Dynamic Content
      2. Considerations When Using CDN
    5. Message Queue
      1. How Message Queue Helps
      2. Considerations When Using Message Queue
      3. Design Patterns for Message Queue
      4. Anti-Patterns for Message Queue
      5. Common Design Trade-offs for Message Queue
    6. Database sharding and replication
      1. Database Sharding
      2. Database Replication
      3. Common Design Trade-offs for Database Replication
    7. Performance monitoring and optimization
      1. E-Commerce Site Example
      2. How Performance Monitoring and Optimization Help
      3. Considerations for Performance Monitoring and Optimization
      4. Design Patterns for Performance Monitoring and Optimization
      5. Anti-Patterns for Performance Monitoring and Optimization
      6. Common Design Trade-offs for Performance Monitoring and Optimization
    8. Summary

Product information

  • Title: Learning System Design
  • Author(s): Rohit Bhardwaj
  • Release date: August 2025
  • Publisher(s): O'Reilly Media, Inc.
  • ISBN: 9781098157883