Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Breaking The Monolith

Breaking The Monolith

In any system of significant size, the same problem occurs again and again: What starts out as a light-weight, modern, efficient development effort using the technology of the day – be it Java and Java EE or Spring, Microsoft .NET, Ruby on Rails or any other of the well-known development stacks – ends up as a hard to change, monolithic, maintenance-intensive behemoth that everybody wants to get away from. But what are the core reason for this recurring pattern? In this session, we will discuss how and why things always seem to end up this way, and what strategies we can use to avoid this from the start.

Stefan Tilkov

March 07, 2012
Tweet

More Decks by Stefan Tilkov

Other Decks in Programming

Transcript

  1. © 2012 innoQ Deutschland GmbH Modularization & Size Size Modularization

    1-50 LOC single le 50-500 LOC few les, few functions 500-1000 LOC Library, class hierarchy 1000-2000 LOC Framework + application >2000 LOC multiple applications
  2. © 2012 innoQ Deutschland GmbH System characteristics Separate (redundant) persistence

    Internal, separate logic Domain models & implementation strategies Separate UI Separate development & evolution Autonomous operations Limited interaction with other systems
  3. © 2012 innoQ Deutschland GmbH Necessary Rules & Guidelines Cross-system

    System-internal Responsibilities Programming languages UI integration Development tools Communication protocols Frameworks Data formats Process/Workflow control Redundant data Persistence BI interfaces Design patterns Logging, Monitoring Coding guidelines (Deployment, Operations)
  4. © 2012 innoQ Deutschland GmbH t Domain Architecture 1.0 1.1

    System-internal Rules 1.0 1.1 2.0 2.1 Cross-system Rules 1.0 1.1 1.2
  5. © 2012 innoQ Deutschland GmbH t Simplicity Homogeneity Cohesion Decoupling

    Modularity (Support for) Heterogeneity Autonomy Main objectives over time Ease of development
  6. © 2012 innoQ Deutschland GmbH Data Replication Backend Integration Frontend

    Integration Integration options Data Logic UI Data Logic UI
  7. © 2011 innoQ Deutschland GmbH <Customer Change> Order Management GET

    Customer XYZ Submit Order Orders Customer Management Customers Customers Event notification
  8. © 2012 innoQ Deutschland GmbH Browser HTML Page Backend 1

    UI 1 Frontend Server UI 2 Server-side integration Backend 2 Examples: ESI-Caches SSI Portal Server
  9. © 2012 innoQ Deutschland GmbH Browser HTML Page Backend 1

    UI 1 UI 2 Client-side integration Backend 2 Examples: AJAX Proprietary Frameworks
  10. © 2012 innoQ Deutschland GmbH Browser HTML Page 1 Links

    Backend 1 Backend 2 Asset Server HTML Page 2 CSS <<creates>> <<creates>>
  11. © 2012 innoQ Deutschland GmbH SSO Backend 1 Backend 2

    Auth-Provider Browser Login Credentials Ticket Validation Request + Ticket Request + Ticket Algorithmic Validation
  12. © 2012 innoQ Deutschland GmbH 1. Think about the systems

    that make up your system 2. Separate micro and macro architectures 3. Address UI integration and SSO Summary
  13. © 2012 innoQ Deutschland GmbH Thanks! Q&A innoQ Deutschland GmbH

    http://www.innoq.com Krischerstr. 100 40789 Monheim am Rhein Germany Phone: +49 2173 3366-0 innoQ Schweiz GmbH [email protected] Gewerbestr. 11 CH-6330 Cham Switzerland Phone: +41 41 743 0116
  14. © 2012 innoQ Deutschland GmbH Bounded Context Customer/Supplier Conformist Anticorruption

    Layer Open Host Service Published Language Shared Kernel Separate Ways Strategic DDD
  15. © 2012 innoQ Deutschland GmbH CQRS (Command Query Responsibility Segregation)

    Write-UI Logic (Tx) Persistence Read-UI Persistence Event Handling