Our day job involves running around euthanizing monoliths and modernizing apps when porting them to Pivotal Cloud Foundry. App Modernization typically involves open heart surgery. During the recently conducted Partner Acceleration Lab in Denver, I had the opportunity to come up with a taxonomy of modernization patterns with partner in crime Shaun Anderson to break apart monoliths, megaliths, Big Ball of Muds, Hair Scary apps, whatever you want to call it.....
Deployment Patterns
- Feature flags
- Dynamic routing
- Dark launching
- Canary Routing
- Service Control (versioning)
Behavior Control Patterns
- Message Based (Event Shunting / Starving)
- Decorator
- Bridge
- Router
- Proxy
- Facade
- Application
- Class Decorator
- Bridge
- Router
- Proxy
- Facade
- Wrapping
- Java Agent
- AOP
- AspectJ
Discovery Patterns - Breaking apart a complex domain
- Event Storming/Event Sourcing
- Top Down Analysis
- Duplo / Lego Arch
Management Patterns
- Inverse Conway maneuver
- Evolve the right team structure
Data Refactoring Patterns
- Migrating Schemas
- Data Sync
- Data Replication
- Migrating DB (eg. DB2 -> MySQL)
- Pulling Data from Master to Child
- TCP Proxy for JDBC
- CQRS
Edge Entry Controller Patterns
- Bridge
- Router
- Proxy
- Facade
- Backends 4 Frontends
Process Flow
- SOA / ESB -> Microservice
- Workflow (Central orchestration) -> Choreography
- Batch / ETL Jobs
- Scheduled Messaging to real-time services
- Starvation
- Transactional to Eventual Consistency
App Control
- Define layers and control points
- Routing
- Network
- Data
- App endpoint
- Messaging
- All above can use
- Bridge
- Router
- Proxy
- Facade
- Wrapping
DDD Tactical Patterns Angle of Attack/Approach -----
- ACL -- Anti-corruption Layer
- Context Mapping
- Strangling the Monolith
- Review process of decomposition
- Identify sections
- Understand Data Arch
- Understand Deployment Arch
- Determine initial target app / component / service / unit of work
- Already Bounded Context
- Small in scope
- Vertical
- Impact analysis
- Goal is to gain control of App
- I/O
- Top Down analysis of app (APIs, entry points, behavior)
- Data impact
- Should drive out domain
- Should drive out downstream dependencies
- May help drive the next candidate app because of touch points
- Modernize app
No comments:
Post a Comment
Note: Only a member of this blog may post a comment.