About Me

My photo
Rohit is an investor, startup advisor and an Application Modernization Scale Specialist working at Google.

Saturday, January 28, 2017

Application Modernization Surgery Techniques

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
Breaking Monolith Strategy details ----

  • 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