The instinct facing a legacy system is tempting: ‘let's rewrite it from scratch and be done’. In my experience, that decision usually costs twice the time and puts the business at risk for months.

Phased, evolutionary modernisation

I prefer to isolate the legacy behind clear boundaries and replace pieces with business value at each step. Patterns like strangler fig, hexagonal and CQRS let old and new coexist without a risky big-bang.

  • Start with observability: you can't modernise what you don't measure.
  • Attack single points of failure and bottlenecks first.
  • Introduce resilience (circuit breakers, graceful degradation) before scaling.

I did this at Enterticket, modernising a legacy architecture toward microservices and serverless, and at RD Station, unifying seven tools into a single editor. In both cases, the business never stopped running.

Paulo Bischof
Paulo Bischof
CTO · Product Manager · Software Developer
Vamos conversar