Production-Ready Microservices

Book description

One of the biggest challenges for organizations that have adopted microservice architecture is the lack of architectural, operational, and organizational standardization. After splitting a monolithic application or building a microservice ecosystem from scratch, many engineers are left wondering what’s next. In this practical book, author Susan Fowler presents a set of microservice standards in depth, drawing from her experience standardizing over a thousand microservices at Uber. You’ll learn how to design microservices that are stable, reliable, scalable, fault tolerant, performant, monitored, documented, and prepared for any catastrophe.

Explore production-readiness standards, including:

  • Stability and Reliability: develop, deploy, introduce, and deprecate microservices; protect against dependency failures
  • Scalability and Performance: learn essential components for achieving greater microservice efficiency
  • Fault Tolerance and Catastrophe Preparedness: ensure availability by actively pushing microservices to fail in real time
  • Monitoring: learn how to monitor, log, and display key metrics; establish alerting and on-call procedures
  • Documentation and Understanding: mitigate tradeoffs that come with microservice adoption, including organizational sprawl and technical debt

Publisher resources

View/Submit Errata

Table of contents

  1. Preface
    1. Who This Book Is Written For
    2. What This Book Is Not
    3. How To Use This Book
    4. How This Book Is Structured
    5. Conventions Used in This Book
    6. O’Reilly Safari
    7. How to Contact Us
    8. Acknowledgments
  2. 1. Microservices
    1. From Monoliths to Microservices
    2. Microservice Architecture
    3. The Microservice Ecosystem
      1. Layer 1: Hardware
      2. Layer 2: Communication
      3. Layer 3: The Application Platform
      4. Layer 4: Microservices
    4. Organizational Challenges
      1. The Inverse Conway’s Law
      2. Technical Sprawl
      3. More Ways to Fail
      4. Competition for Resources
  3. 2. Production-Readiness
    1. The Challenges of Microservice Standardization
    2. Availability: The Goal of Standardization
    3. Production-Readiness Standards
      1. Stability
      2. Reliability
      3. Scalability
      4. Fault Tolerance and Catastrophe-Preparedness
      5. Performance
      6. Monitoring
      7. Documentation
    4. Implementing Production-Readiness
  4. 3. Stability and Reliability
    1. Principles of Building Stable and Reliable Microservices
    2. The Development Cycle
    3. The Deployment Pipeline
      1. Staging
      2. Canary
      3. Production
      4. Enforcing Stable and Reliable Deployment
    4. Dependencies
    5. Routing and Discovery
    6. Deprecation and Decommissioning
    7. Evaluate Your Microservice
      1. The Development Cycle
      2. The Deployment Pipeline
      3. Dependencies
      4. Routing and Discovery
      5. Deprecation and Decommissioning
  5. 4. Scalability and Performance
    1. Principles of Microservice Scalability and Performance
    2. Knowing the Growth Scale
      1. The Qualitative Growth Scale
      2. The Quantitative Growth Scale
    3. Efficient Use of Resources
    4. Resource Awareness
      1. Resource Requirements
      2. Resource Bottlenecks
    5. Capacity Planning
    6. Dependency Scaling
    7. Traffic Management
    8. Task Handling and Processing
      1. Programming Language Limitations
      2. Handling Requests and Processing Tasks Efficiently
    9. Scalable Data Storage
      1. Database Choice in Microservice Ecosystems
      2. Database Challenges in Microservice Architecture
    10. Evaluate Your Microservice
      1. Knowing the Growth Scale
      2. Efficient Use of Resources
      3. Resource Awareness
      4. Capacity Planning
      5. Dependency Scaling
      6. Traffic Management
      7. Task Handling and Processing
      8. Scalable Data Storage
  6. 5. Fault Tolerance and Catastrophe-Preparedness
    1. Principles of Building Fault-Tolerant Microservices
    2. Avoiding Single Points of Failure
    3. Catastrophes and Failure Scenarios
      1. Common Failures Across an Ecosystem
      2. Hardware Failures
      3. Communication-Level and Application Platform–Level Failures
      4. Dependency Failures
      5. Internal (Microservice) Failures
    4. Resiliency Testing
      1. Code Testing
      2. Load Testing
      3. Chaos Testing
    5. Failure Detection and Remediation
    6. Incidents and Outages
      1. Appropriate Categorization
      2. The Five Stages of Incident Response
    7. Evaluate Your Microservice
      1. Avoiding Single Points of Failure
      2. Catastrophes and Failure Scenarios
      3. Resiliency Testing
      4. Failure Detection and Remediation
  7. 6. Monitoring
    1. Principles of Microservice Monitoring
    2. Key Metrics
    3. Logging
    4. Dashboards
    5. Alerting
      1. Setting up Effective Alerting
      2. Handling Alerts
    6. On-Call Rotations
    7. Evaluate Your Microservice
      1. Key Metrics
      2. Logging
      3. Dashboards
      4. Alerting
      5. On-Call Rotations
  8. 7. Documentation and Understanding
    1. Principles of Microservice Documentation and Understanding
    2. Microservice Documentation
      1. Description
      2. Architecture Diagram
      3. Contact and On-Call Information
      4. Links
      5. Onboarding and Development Guide
      6. Request Flows, Endpoints, and Dependencies
      7. On-Call Runbooks
      8. FAQ
    3. Microservice Understanding
      1. Architecture Reviews
      2. Production-Readiness Audits
      3. Production-Readiness Roadmaps
      4. Production-Readiness Automation
    4. Evaluate Your Microservice
      1. Microservice Documentation
      2. Microservice Understanding
  9. A. Production-Readiness Checklist
    1. A Production-Ready Service Is Stable and Reliable
    2. A Production-Ready Service Is Scalable and Performant
    3. A Production-Ready Service Is Fault Tolerant and Prepared for Any Catastrophe
    4. A Production-Ready Service Is Properly Monitored
    5. A Production-Ready Service Is Documented and Understood
  10. B. Evaluate Your Microservice
    1. Stability and Reliability
      1. The Development Cycle
      2. The Deployment Pipeline
      3. Dependencies
      4. Routing and Discovery
      5. Deprecation and Decommissioning
    2. Scalability and Performance
      1. Knowing the Growth Scale
      2. Efficient Use of Resources
      3. Resource Awareness
      4. Capacity Planning
      5. Dependency Scaling
      6. Traffic Management
      7. Task Handling and Processing
      8. Scalable Data Storage
    3. Fault Tolerance and Catastrophe-Preparedness
      1. Avoiding Single Points of Failure
      2. Catastrophes and Failure Scenarios
      3. Resiliency Testing
      4. Failure Detection and Remediation
    4. Monitoring
      1. Key Metrics
      2. Logging
      3. Dashboards
      4. Alerting
      5. On-Call Rotations
    5. Documentation and Understanding
      1. Microservice Documentation
      2. Microservice Understanding
  11. Glossary
  12. Index

Product information

  • Title: Production-Ready Microservices
  • Author(s): Susan J. Fowler
  • Release date: November 2016
  • Publisher(s): O'Reilly Media, Inc.
  • ISBN: 9781491965924