Op werkdagen voor 23:00 besteld, morgen in huis Gratis verzending vanaf €20

Designing Distributed Systems

Patterns and paragidms for scalable, reliable services

Paperback Engels 2018 9781491983645
Verwachte levertijd ongeveer 8 werkdagen


In the race to compete in today’s fast-moving markets, large enterprises are busy adopting new technologies for creating new products, processes, and business models. But one obstacle on the road to digital transformation is placing too much emphasis on technology, and not enough on the types of processes technology enables. What if different lines of business could build their own services and applications—and decision-making was distributed rather than centralized?

This report explores the concept of a digital business platform as a way of empowering individual business sectors to act on data in real time. Much innovation in a digital enterprise will increasingly happen at the edge, whether it involves business users (from marketers to data scientists) or IoT devices. To facilitate the process, your core IT team can provide these sectors with the digital tools they need to innovate quickly.

This report explores:
- Key cultural and organizational changes for developing business capabilities through cross-functional product teams
- A platform for integrating applications, data sources, business partners, clients, mobile apps, social networks, and IoT devices
- Creating internal API programs for building innovative edge services in low-code or no-code environments
- Tools including Integration Platform as a Service, Application Platform as a Service, and Integration Software as a Service
- The challenge of integrating microservices and serverless architectures
- Event-driven architectures for processing and reacting to events in real time

You’ll also learn about a complete pervasive integration solution as a core component of a digital business platform to serve every audience in your organization.


Aantal pagina's:149
Hoofdrubriek:IT-management / ICT


Wees de eerste die een lezersrecensie schrijft!

Geef uw waardering

Zeer goed Goed Voldoende Matig Slecht

Over Brendan Burns

Currently: Distinguished Engineer at Microsoft Azure, working on containers and devops. Co-founder of Kubernetes, steering committee member, coder. Formerly: Google Cloud, Google Web Search, Professor at Union College, PhD University of Massachusetts Amherst, BA Williams College.

Andere boeken door Brendan Burns


Who Should Read This Book
Why I Wrote This Book
The World of Distributed Systems Today
Navigating This Book
Conventions Used in This Book
Online Resources
Using Code Examples
O’Reilly Safari
How to Contact Us

1. Introduction
A Brief History of Systems Development
A Brief History of Patterns in Software Development
Formalization of Algorithmic Programming
Patterns for Object-Oriented Programming
The Rise of Open Source Software
The Value of Patterns, Practices, and Components
Standing on the Shoulders of Giants
A Shared Language for Discussing Our Practice
Shared Components for Easy Reuse

I: Single-Node Patterns
2. The Sidecar Pattern
An Example Sidecar: Adding HTTPS to a Legacy Service
Dynamic Configuration with Sidecars
Modular Application Containers
Hands On: Deploying the topz Container
Building a Simple PaaS with Sidecars
Designing Sidecars for Modularity and Reusability
Parameterized Containers
Define Each Container’s API
Documenting Your Containers

3. Ambassadors
Using an Ambassador to Shard a Service
Hands On: Implementing a Sharded Redis
Using an Ambassador for Service Brokering
Using an Ambassador to Do Experimentation or Request Splitting
Hands On: Implementing 10% Experiments

4. Adapters
Hands On: Using Prometheus for Monitoring
Hands On: Normalizing Different Logging Formats with Fluentd
Adding a Health Monitor
Hands On: Adding Rich Health Monitoring for MySQL

II. Serving Patterns
Introduction to Microservices
5. Replicated Load-Balanced Services
Stateless Services
Readiness Probes for Load Balancing
Hands On: Creating a Replicated Service in Kubernetes
Session Tracked Services
Application-Layer Replicated Services
Introducing a Caching Layer
Deploying Your Cache
Hands On: Deploying the Caching Layer
Expanding the Caching Layer
Rate Limiting and Denial-of-Service Defense
SSL Termination
Hands On: Deploying nginx and SSL Termination

6. Sharded Services
Sharded Caching
Why You Might Need a Sharded Cache
The Role of the Cache in System Performance
Replicated, Sharded Caches
Hands On: Deploying an Ambassador and Memcache for a Sharded Cache
An Examination of Sharding Functions
Selecting a Key
Consistent Hashing Functions
Hands On: Building a Consistent HTTP Sharding Proxy
Sharded, Replicated Serving
Hot Sharding Systems

7. Scatter/Gather
Scatter/Gather with Root Distribution
Hands On: Distributed Document Search
Scatter/Gather with Leaf Sharding
Hands On: Sharded Document Search
Choosing the Right Number of Leaves
Scaling Scatter/Gather for Reliability and Scale

8. Functions and Event-Driven Processing
Determining When FaaS Makes Sense
The Benefits of FaaS
The Challenges of FaaS
The Need for Background Processing
The Need to Hold Data in Memory
The Costs of Sustained Request-Based Processing
Patterns for FaaS
The Decorator Pattern: Request or Response Transformation
Hands On: Adding Request Defaulting Prior to Request Processing
Handling Events
Hands On: Implementing Two-Factor Authentication
Event-Based Pipelines
Hands On: Implementing a Pipeline for New-User Signup

9. Ownership Election
Determining If You Even Need Master Election
The Basics of Master Election
Hands On: Deploying etcd
Implementing Locks
Hands On: Implementing Locks in etcd
Implementing Ownership
Hands On: Implementing Leases in etcd
Handling Concurrent Data Manipulation

III: Batch Computational Patterns
10. Work Queue Systems
A Generic Work Queue System
The Source Container Interface
The Worker Container Interface
The Shared Work Queue Infrastructure
Hands On: Implementing a Video Thumbnailer
Dynamic Scaling of the Workers
The Multi-Worker Pattern

11. Event-Driven Batch Processing
Patterns of Event-Driven Processing
Hands On: Building an Event-Driven Flow for New User Sign-Up
Publisher/Subscriber Infrastructure
Hands On: Deploying Kafka

12. Coordinated Batch Processing
Join (or Barrier Synchronization)
Hands On: Count
Hands On: An Image Tagging and Processing Pipeline

13. Conclusion: A New Beginning?


Managementboek Top 100


Populaire producten



        Designing Distributed Systems