How do you detangle a monolithic system and migrate it to a microservice architecture? How do you do it while maintaining business-as-usual? As a companion to Sam Newman’s extremely popular Building Microservices, this new book details a proven method for transitioning an existing monolithic system to a microservice architecture.
With many illustrative examples, insightful migration patterns, and a bevy of practical advice to transition your monolith enterprise into a microservice operation, this practical guide covers multiple scenarios and strategies for a successful migration, from initial planning all the way through application and database decomposition. You’ll learn several tried and tested patterns and techniques that you can use as you migrate your existing architecture.
- Ideal for organizations looking to transition to microservices, rather than rebuild
- Helps companies determine whether to migrate, when to migrate, and where to begin
- Addresses communication, integration, and the migration of legacy systems
- Discusses multiple migration patterns and where they apply
- Provides database migration examples, along with synchronization strategies
- Explores application decomposition, including several architectural refactoring patterns
- Delves into details of database decomposition, including the impact of breaking referential and transactional integrity, new failure modes, and more
Table of Contents
1. Just Enough Microservices
- What Are Microservices?
- The Monolith
- On Coupling and Cohesion
- Just Enough Domain-Driven Design
2. Planning a Migration
- Understanding the Goal
- Why Might You Choose Microservices?
- When Might Microservices Be a Bad Idea?
- Taking People on the Journey
- Changing Organizations
- Importance of Incremental Migration
- Cost of Change
- So Where Do We Start?
- Domain-Driven Design
- A Combined Model
- Reorganizing Teams
- How Will You Know if the Transition Is Working?
3. Splitting the Monolith
- To Change the Monolith, or Not?
- Migration Patterns
- Pattern: Strangler Fig Application
- Changing Behavior While Migrating Functionality
- Pattern: UI Composition
- Pattern: Branch by Abstraction
- Pattern: Parallel Run
- Pattern: Decorating Collaborator
- Pattern: Change Data Capture
4. Decomposing the Database
- Pattern: The Shared Database
- But It Can’t Be Done!
- Pattern: Database View
- Pattern: Database Wrapping Service
- Pattern: Database-as-a-Service Interface
- Transferring Ownership
- Data Synchronization
- Pattern: Synchronize Data in Application
- Pattern: Tracer Write
- Splitting Apart the Database
- Splitting the Database First, or the Code?
- Schema Separation Examples
- Pattern: Split Table
- Pattern: Move Foreign-Key Relationship to Code
5. Growing Pains
- More Services, More Pain
- Ownership at Scale
- Breaking Changes
- Monitoring and Troubleshooting
- Local Developer Experience
- Running Too Many Things
- End-to-End Testing
- Global Versus Local Optimization
- Robustness and Resiliency
- Orphaned Services
- 6. Closing Words
- A. Bibliography
- B. Pattern Index
- Title: Monolith to Microservices
- Release date: November 2019
- Publisher(s): O'Reilly Media, Inc.
- ISBN: 9781492047841