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

Business agility and legacy applications

Business agility and legacy applications

Presentation at Agile Business Day 2017

Matteo Vaccari

September 06, 2017
Tweet

More Decks by Matteo Vaccari

Other Decks in Technology

Transcript

  1. …The ability to change quickly and cheaply What is business

    agility? 3 TURN ON A DIME… FOR A DIME Craig Larman
  2. Most valuable software is hard to change • It’s a

    tangle of IFs. It can only be changed by adding more IFs, thus making the situation worse. • Depends on a legacy DB, accessed by many apps and nobody is sure anymore what all the tables and columns are for. • Has a tangle of configuration options, and nobody is sure of which combination of options work correctly together. • Or worse, there are many forks, one per customer, and it is hell to backport new features to all forks
  3. Ideally, we’d like to be able to… implement new features

    in new files 9 …without touching existing files
  4. Can I rewrite my legacy app then? • Stop all

    new developments • Wait for 12-24 months • On day X we replace the old app • And voilà: it works
  5. Can I rewrite my legacy app then? • Stop all

    new developments • Wait for 12-24 months • On day X we replace the old app • And voilà: it works
  6. Strangler application Database nuovo App Nuova Database legacy App Legacy

    Batch Sync Utenti Apache Perl filter Utenti migrati Utenti non migrati Router Old and new apps Update mechanism
  7. The router is inside the legacy app BAD ⇒ have

    a separate router component Old App New App Batch sync
  8. Sharing the same VM Old App New App ⇒ old

    and new should not share any resources BAD
  9. The update mechanism is a new API in the old

    app Update Mechanism Old App New App Router ⇒ implement the update mechanism as a separate component BAD
  10. The update mechanism is a separate component GOOD The old

    app is not aware of the new app Old App New App Router Update
  11. The new app and the legacy should not be aware

    of each other! • Reduced need to involve the developers of the legacy • Reduced risk to break the legacy • You can start, test and change the new app on the developer machine, with no need to start or connect to the legacy So that strangulation is faster, safer and cheaper