In many systems, scalability becomes the primary driver as the user base grows. Attractive features and high utility breed success, which brings more requests to handle and more data to manage. But organizations reach a tipping point when design decisions that made sense under light loads suddenly become technical debt. This practical book covers design approaches and technologies that make it possible to scale an application quickly and cost-effectively.

Author Ian Gorton takes software architects and developers through the principles of foundational distributed systems. You'll explore the essential ingredients of scalable solutions, including replication, state management, load balancing, and caching. Specific chapters focus on the implications of scalability for databases, microservices, and event-based streaming systems.

You'll focus on:

  • Foundations of scalable systems: Learn basic design principles of scalability, its costs, and architectural tradeoffs
  • Designing scalable services: Dive into service design, caching, asynchronous messaging, serverless processing, and microservices
  • Designing scalable data systems: Learn data system fundamentals, NoSQL databases, and eventual consistency versus strong consistency
  • Designing scalable streaming systems: Explore stream processing systems and scalable event-driven processing

Table of Contents

  1. Preface
    1. Why Scalability?
    2. Who This Book Is For
    3. What You Will Learn
  2. I. Scalability in Modern Software Systems
  3. 1. Introduction to Scalable Systems
    1. What is Scalability?
    2. System scale in early 2020’s: Examples
    3. How Did We Get Here? A Brief History of System Growth
    4. Scalability Basic Design Principles
    5. Scalability and Costs
    6. Scalability and Architecture Trade-offs
    7. Performance
    8. Availability
    9. Security
    10. Manageability
    11. Summary and Further Reading
    12. References
  4. 2. Distributed Systems Architectures: An Introduction
    1. Basic System Architecture
    2. Scale Out
    3. Scaling the Database with Caching
    4. Distributing the Database
    5. Multiple Processing Tiers
    6. Increasing Responsiveness
    7. Systems and Hardware Scalability
    8. Summary and Further Reading
  5. 3. Distributed Systems Essentials
    1. Communications Basics
    2. Communications Hardware
    3. Communications Software
    4. Remote Method Invocation
    5. Partial Failures
    6. Consensus in Distributed Systems
    7. Time in Distributed Systems
    8. Summary and Further Reading
  6. 4. An Overview of Concurrent Systems
    1. Why Concurrency?
    2. Threads
    3. Order of Thread Execution
    4. Problems with Threads
    5. Race Conditions
    6. Deadlocks
    7. Thread States
    8. Thread Coordination
    9. Thread Pools
    10. Barrier Synchronization
    11. Thread-Safe Collections
    12. Summary and Further Reading