Building Microservices: Designing Fine-Grained Systems Edition: 2

by Sam Newman

Software Development

Book Details

Book Title

Building Microservices: Designing Fine-Grained Systems Edition: 2

Author

Sam Newman

Publisher

O'Reilly Media City: Sebastopol, CA

Publication Date

2021

ISBN

9781492034025

Number of Pages

615

Language

English

Format

PDF

File Size

11MB

Subject

Software Architecture / Microservices

Table of Contents

  • Copyright
  • Table of Contents
  • Preface
  • PART I: Foundation
  • Chapter 1: What Are Microservices?
  • Microservices at a Glance
  • Key Concepts of Microservices
  • The Monolith
  • Enabling Technology
  • Advantages of Microservices
  • Microservice Pain Points
  • Should I Use Microservices?
  • Summary
  • Chapter 2: How to Model Microservices
  • Introducing MusicCorp
  • What Makes a Good Microservice Boundary?
  • Types of Coupling
  • Just Enough Domain-Driven Design
  • The Case for Domain-Driven Design for Microservices
  • Alternatives to Business Domain Boundaries
  • Mixing Models and Exceptions
  • Summary
  • Chapter 3: Splitting the Monolith
  • Have a Goal
  • Incremental Migration
  • The Monolith Is Rarely the Enemy
  • What to Split First?
  • Decomposition by Layer
  • Useful Decompositional Patterns
  • Data Decomposition Concerns
  • Summary
  • Chapter 4: Microservice Communication Styles
  • From In-Process to Inter-Process
  • Technology for Inter-Process Communication: So Many Choices
  • Styles of Microservice Communication
  • Pattern: Synchronous Blocking
  • Pattern: Asynchronous Nonblocking
  • Pattern: Communication Through Common Data
  • Pattern: Request-Response Communication
  • Pattern: Event-Driven Communication
  • Proceed with Caution
  • Summary
  • PART II: Implementation
  • Chapter 5: Implementing Microservice Communication
  • Looking for the Ideal Technology
  • Technology Choices
  • Serialization Formats
  • Schemas
  • Handling Change Between Microservices
  • Avoiding Breaking Changes
  • Managing Breaking Changes
  • DRY and the Perils of Code Reuse in a Microservice World
  • Service Discovery
  • Service Meshes and API Gateways
  • Documenting Services
  • Summary
  • Chapter 6: Workflow
  • Database Transactions
  • Distributed Transactions—Two-Phase Commits
  • Distributed Transactions—Just Say No
  • Sagas
  • Summary
  • Chapter 7: Build
  • A Brief Introduction to Continuous Integration
  • Build Pipelines and Continuous Delivery
  • Mapping Source Code and Builds to Microservices
  • Summary
  • Chapter 8: Deployment
  • From Logical to Physical
  • Principles of Microservice Deployment
  • Deployment Options
  • Which Deployment Option Is Right for You?
  • Kubernetes and Container Orchestration
  • Progressive Delivery
  • Summary
  • Chapter 9: Testing
  • Types of Tests
  • Test Scope
  • Implementing Service Tests
  • Implementing (Those Tricky) End-to-End Tests
  • Should You Avoid End-to-End Tests?
  • Developer Experience
  • From Preproduction to In-Production Testing
  • Cross-Functional Testing
  • Summary
  • Chapter 10: From Monitoring to Observability
  • Disruption, Panic, and Confusion
  • Single Microservice, Single Server
  • Single Microservice, Multiple Servers
  • Multiple Services, Multiple Servers
  • Observability Versus Monitoring
  • Building Blocks for Observability
  • Standardization
  • Selecting Tools
  • The Expert in the Machine
  • Getting Started
  • Summary
  • Chapter 11: Security
  • Core Principles
  • The Five Functions of Cybersecurity
  • Foundations of Application Security
  • Implicit Trust Versus Zero Trust
  • Securing Data
  • Authentication and Authorization
  • Summary
  • Chapter 12: Resiliency
  • What Is Resiliency?
  • Failure Is Everywhere
  • How Much Is Too Much?
  • Degrading Functionality
  • Stability Patterns
  • Spreading Your Risk
  • CAP Theorem
  • Chaos Engineering
  • Blame
  • Summary
  • Chapter 13: Scaling
  • The Four Axes of Scaling
  • Combining Models
  • Start Small
  • Caching
  • Autoscaling
  • Starting Again
  • Summary
  • PART III: People
  • Chapter 14: User Interfaces
  • Toward Digital
  • Ownership Models
  • Toward Stream-Aligned Teams
  • Pattern: Monolithic Frontend
  • Pattern: Micro Frontends
  • Pattern: Page-Based Decomposition
  • Pattern: Widget-Based Decomposition
  • Constraints
  • Pattern: Central Aggregating Gateway
  • Pattern: Backend for Frontend (BFF)
  • GraphQL
  • A Hybrid Approach
  • Summary
  • Chapter 15: Organizational Structures
  • Loosely Coupled Organizations
  • Conway’s Law
  • Team Size
  • Understanding Conway’s Law
  • Small Teams, Large Organization
  • On Autonomy
  • Strong Versus Collective Ownership
  • Enabling Teams
  • Shared Microservices
  • Internal Open Source
  • Pluggable, Modular Microservices
  • The Orphaned Service
  • Case Study: realestate.com.au
  • Geographical Distribution
  • Conway’s Law in Reverse
  • People
  • Summary
  • Chapter 16: The Evolutionary Architect
  • What’s in a Name?
  • What Is Software Architecture?
  • Making Change Possible
  • An Evolutionary Vision for the Architect
  • Defining System Boundaries
  • A Social Construct
  • Habitability
  • A Principled Approach
  • Guiding an Evolutionary Architecture
  • Architecture in a Stream-Aligned Organization
  • Building a Team
  • The Required Standard
  • Governance and the Paved Road
  • Technical Debt
  • Exception Handling
  • Summary
  • Afterword: Bringing It All Together
  • Bibliography
  • Glossary
  • Index
  • About the Author
  • Colophon