
Foundations of Scalable Systems
Description
Alles über E-Books | Antworten auf Fragen rund um E-Books, Kopierschutz und Dateiformate finden Sie in unserem Info- & Hilfebereich.
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 foundational principles of 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 will 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
More details
Other editions
Additional editions

Content
- Cover
- Copyright
- Table of Contents
- Preface
- Why Scalability?
- Who This Book Is For
- What You Will Learn
- Note for Educators
- Conventions Used in This Book
- Using Code Examples
- O'Reilly Online Learning
- How to Contact Us
- Acknowledgments
- Part I. The Basics
- Chapter 1. Introduction to Scalable Systems
- What Is Scalability?
- Examples of System Scale in the Early 2000s
- How Did We Get Here? A Brief History of System Growth
- Scalability Basic Design Principles
- Scalability and Costs
- Scalability and Architecture Trade-Offs
- Performance
- Availability
- Security
- Manageability
- Summary and Further Reading
- Chapter 2. Distributed Systems Architectures: An Introduction
- Basic System Architecture
- Scale Out
- Scaling the Database with Caching
- Distributing the Database
- Multiple Processing Tiers
- Increasing Responsiveness
- Systems and Hardware Scalability
- Summary and Further Reading
- Chapter 3. Distributed Systems Essentials
- Communications Basics
- Communications Hardware
- Communications Software
- Remote Method Invocation
- Partial Failures
- Consensus in Distributed Systems
- Time in Distributed Systems
- Summary and Further Reading
- Chapter 4. An Overview of Concurrent Systems
- Why Concurrency?
- Threads
- Order of Thread Execution
- Problems with Threads
- Race Conditions
- Deadlocks
- Thread States
- Thread Coordination
- Thread Pools
- Barrier Synchronization
- Thread-Safe Collections
- Summary and Further Reading
- Part II. Scalable Systems
- Chapter 5. Application Services
- Service Design
- Application Programming Interface (API)
- Designing Services
- State Management
- Applications Servers
- Horizontal Scaling
- Load Balancing
- Load Distribution Policies
- Health Monitoring
- Elasticity
- Session Affinity
- Summary and Further Reading
- Chapter 6. Distributed Caching
- Application Caching
- Web Caching
- Cache-Control
- Expires and Last-Modified
- Etag
- Summary and Further Reading
- Chapter 7. Asynchronous Messaging
- Introduction to Messaging
- Messaging Primitives
- Message Persistence
- Publish-Subscribe
- Message Replication
- Example: RabbitMQ
- Messages, Exchanges, and Queues
- Distribution and Concurrency
- Data Safety and Performance Trade-offs
- Availability and Performance Trade-Offs
- Messaging Patterns
- Competing Consumers
- Exactly-Once Processing
- Poison Messages
- Summary and Further Reading
- Chapter 8. Serverless Processing Systems
- The Attractions of Serverless
- Google App Engine
- The Basics
- GAE Standard Environment
- Autoscaling
- AWS Lambda
- Lambda Function Life Cycle
- Execution Considerations
- Scalability
- Case Study: Balancing Throughput and Costs
- Choosing Parameter Values
- GAE Autoscaling Parameter Study Design
- Results
- Summary and Further Reading
- Chapter 9. Microservices
- The Movement to Microservices
- Monolithic Applications
- Breaking Up the Monolith
- Deploying Microservices
- Principles of Microservices
- Resilience in Microservices
- Cascading Failures
- Bulkhead Pattern
- Summary and Further Reading
- Part III. Scalable Distributed Databases
- Chapter 10. Scalable Database Fundamentals
- Distributed Databases
- Scaling Relational Databases
- Scaling Up
- Scaling Out: Read Replicas
- Scale Out: Partitioning Data
- Example: Oracle RAC
- The Movement to NoSQL
- NoSQL Data Models
- Query Languages
- Data Distribution
- The CAP Theorem
- Summary and Further Reading
- Chapter 11. Eventual Consistency
- What Is Eventual Consistency?
- Inconsistency Window
- Read Your Own Writes
- Tunable Consistency
- Quorum Reads and Writes
- Replica Repair
- Active Repair
- Passive Repair
- Handling Conflicts
- Last Writer Wins
- Version Vectors
- Summary and Further Reading
- Chapter 12. Strong Consistency
- Introduction to Strong Consistency
- Consistency Models
- Distributed Transactions
- Two-Phase Commit
- 2PC Failure Modes
- Distributed Consensus Algorithms
- Raft
- Leader Election
- Strong Consistency in Practice
- VoltDB
- Google Cloud Spanner
- Summary and Further Reading
- Chapter 13. Distributed Database Implementations
- Redis
- Data Model and API
- Distribution and Replication
- Strengths and Weaknesses
- MongoDB
- Data Model and API
- Distribution and Replication
- Strengths and Weaknesses
- Amazon DynamoDB
- Data Model and API
- Distribution and Replication
- Strengths and Weaknesses
- Summary and Further Reading
- Part IV. Event and Stream Processing
- Chapter 14. Scalable Event-Driven Processing
- Event-Driven Architectures
- Apache Kafka
- Topics
- Producers and Consumers
- Scalability
- Availability
- Summary and Further Reading
- Chapter 15. Stream Processing Systems
- Introduction to Stream Processing
- Stream Processing Platforms
- Case Study: Apache Flink
- DataStream API
- Scalability
- Data Safety
- Conclusions and Further Reading
- Chapter 16. Final Tips for Success
- Automation
- Observability
- Deployment Platforms
- Data Lakes
- Further Reading and Conclusions
- Index
- About the Author
- Colophon
System requirements
File format: ePUB
Copy protection: Adobe-DRM (Digital Rights Management)
System requirements:
- Computer (Windows; MacOS X; Linux): Install the free reader Adobe Digital Editions prior to download (see eBook Help).
- Tablet/smartphone (Android; iOS): Install the free app Adobe Digital Editions or the app PocketBook before downloading (see eBook Help).
- E-reader: Bookeen, Kobo, Pocketbook, Sony, Tolino and many more (not Kindle).
The file format ePub works well for novels and non-fiction books – i.e., „flowing” text without complex layout. On an e-reader or smartphone, line and page breaks automatically adjust to fit the small displays.
This eBook uses Adobe-DRM, a „hard” copy protection. If the necessary requirements are not met, unfortunately you will not be able to open the eBook. You will therefore need to prepare your reading hardware before downloading.
Please note: We strongly recommend that you authorise using your personal Adobe ID after installation of any reading software.
For more information, see our ebook Help page.