/legacy-modernization-kata

A kata to practice modernizing a large legacy system

Apache License 2.0Apache-2.0

Legacy Modernization Kata

A kata to practice modernizing a large legacy system

Problem Statement

You're in charge of modernizing a legacy system for selling tickets for shows like theater, concerts etc.

  • The system has approximately 400kLOC (lines of code), built by 8 developers in average over 7+ years.
  • The system is composed of a large monolith plus 3 microservices recently added (Booking, Inventory and Ticketing), which call the legacy through REST calls.
  • The monolith is currently connected to 50+ external partners (through several XML, csv connectors, along with direct access to some of its DB tables).

The system as a monolith + 3 services

You're given the following information as well:

system weaknesses

  • code around catalog of shows is unmaintainable

system opportunities

  • invoicing is well tested (80% test coverage)

system roadmap

  • need to invoice in other currencies
  • need to be able to list much more complex shows
  • we also expect several brand new features that are not similar to anything we've ever done before

company technology roadmap

  • going towards a service platform

Your work

Draft a progressive modernization trajectory for the system.

You can do it as a brief text memo, or on a diagram (base diagram provided for Excalidraw or as image for any whiteboarding tool in this repo)

You may want to quickly identify potential boundaries inside the monolith, then use some of the following legacy patterns:

  • Keep as-is / Extract and repair (as lib or as a service) / Rewrite with Strangler Application pattern / Add microservice
  • Legacy Macro-service / Change Data Capture / Legacy Read Model