> Markdown version of [/videos/218-seven-myths-three-reasons-one-goal?t=2671](https://www.wearedevelopers.com/videos/218-seven-myths-three-reasons-one-goal?t=2671). Every page supports `.md` or `Accept: text/markdown`. Links point to the HTML versions so they work for humans too. Agent guide: [/agents.md](https://www.wearedevelopers.com/agents.md). --- # Seven Myths, Three Reasons, One Goal Blindly layering a REST API over a legacy database creates a fragile distributed monolith. Learn to leverage use-case-driven architectures to modernize systems without triggering expensive, boil-the-ocean rewrites. - **Speakers:** Stefan Priebsch - **Event:** World Congress 2021 - **Published:** June 29, 2021 - **Duration:** 46:48 - **URL:** https://www.wearedevelopers.com/videos/218-seven-myths-three-reasons-one-goal ## Summary Engineering teams rarely get to build a greenfield city; they must strategically manage and integrate with existing infrastructure. Assessing legacy software often begins with developers claiming they "did not write this," which actually masks a reluctance to admit they do not understand the system's original business intent. Legacy applications frequently become victims of their own success, buckling under massive organizational growth because they were never designed for enterprise scale. Consequently, technical debt is offloaded to the product backlog where it lacks strategic ownership, slowly forcing the entire organization to adjust its internal processes to accommodate the software's functional limitations. Instead of embarking on highly disruptive rewrites, organizations should embrace case-by-case modernization frameworks. A common anti-pattern is blindly layering a REST API over a legacy database, which often creates a fragile distributed monolith fraught with pull-model inefficiencies and complex interdependencies. Furthermore, swap-and-replace technology upgrades merely trade known problems for unknown ones. Rather than refactoring dozens of functional legacy use cases, teams can implement the next functional requirement as an isolated, self-contained system sitting behind a router. This approach prevents expensive, boil-the-ocean migrations by physically separating stable legacy features from the demands of new business cases. True modernization requires shifting from data-centric designs to use-case-driven architectures. By adopting polyglot persistence and CQRS processing, teams can define a canonical source of truth without forcing all analytical and transactional data into a heavily abstracted, normalized relational database. Small microservices should reject enterprise-level abstraction layers; if a service is small enough to be rewritten in a week, its internal storage is merely an implementation detail. Ultimately, successful legacy management relies on leaving functioning old code largely untouched, constructing deployment bridges to new event-driven modules, and viewing legacy oversight as an active architectural discipline. **Keywords:** legacy system modernization, technical debt backlogs, distributed monolith anti-pattern, polyglot persistence, CQRS architecture, self-contained system patterns, use case driven design, REST API limitations, event sourcing transitions, database normalization challenges, software abstraction layers, greenfield architecture routing, executable test specifications ## Chapters 1. **Comparing legacy architecture to the evolution of cities** (00:00) — How the continuous development of ancient cities provides a parallel for working with legacy systems. 1. **Failing to understand the intent of legacy code** (10:28) — Why the instinctive developer reaction to legacy code actually highlights a lack of communicated business intent. 1. **Dealing with outgrown assumptions in successful software systems** (15:51) — How software that drives business growth eventually breaks due to architectural assumptions that no longer scale. 1. **The lack of responsibility over technical debt** (18:26) — How placing technical debt into a product backlog diffuses responsibility and prevents architectural progress. 1. **The danger of adopting default REST APIs** (21:33) — Why defaulting to REST for internal communication often leads to the anti-pattern of a distributed monolith. 1. **Refuting the immediate need for newer frameworks** (24:32) — How wholesale technology replacements often just swap known problems for unknown ones without adding clear business value. 1. **Avoiding the temptation to rewrite legacy systems entirely** (27:50) — How to introduce new features without rewriting existing business cases by focusing on specific software use cases. 1. **Embracing polyglot persistence versus strictly relational databases** (31:22) — Why defining clear data working sets and canonical sources of truth defeats the requirement for strict database normalization. 1. **Overcoming the perceived expense of major system migrations** (34:44) — How separating functional platform migrations from code refactoring efforts helps consistently keep software upgrade costs manageable. 1. **Eliminating unnecessary layers of abstraction inside microservices** (38:47) — Why self-contained units of deployment do not require the internal layered abstractions typical of large enterprise applications. 1. **Introducing beneficial architectural patterns like event sourcing** (44:31) — How to gradually integrate new methodologies transparently by safely bridging the architectural gap between legacy and greenfield systems. ## Related Moments - [Strategies for modernizing and mitigating legacy system risks](https://www.wearedevelopers.com/videos/100215-smart-test-automation-the-experience-of-legacy-transformation) (from "SMART Test Automation - the experience of legacy transformation") - [Transforming legacy monoliths into modern software systems](https://www.wearedevelopers.com/videos/845-domain-driven-transformation-how-to-bring-back-sustainable-architecture-to-legacy-and-monoliths) (from "Domain-Driven Transformation—How to Bring (Back) Sustainable Architecture to Legacy and Monoliths") - [Modernizing legacy applications through proactive leadership](https://www.wearedevelopers.com/videos/1223-coffee-with-developers-babette-wagner) (from "Coffee with Developers - Babette Wagner") - [Five core strategies for handling legacy applications](https://www.wearedevelopers.com/videos/120-application-modernization-and-rabbits) (from "Application Modernization and Rabbits") - [Managing technical debt in legacy web applications](https://www.wearedevelopers.com/videos/917-coffee-with-developers-robby-russell) (from "Coffee with Developers - Robby Russell") - [Refactoring a complex legacy monolith into microservices](https://www.wearedevelopers.com/videos/371-retooling-and-refactoring-an-investment-in-people) (from "Retooling and refactoring - an investment in people.") ## Related Articles - [How to Avoid Over-Engineering](https://www.wearedevelopers.com/magazine/546-how-to-avoid-over-engineering) - [Get Old, go Slow, Write Code!](https://www.wearedevelopers.com/magazine/81-get-old-go-slow-write-code) - [Why Event-Driven Architecture Isn’t About Speed (and When You Actually Need It)](https://www.wearedevelopers.com/magazine/745-why-event-driven-architecture-isn-t-about-speed-and-when-you-actually-need-it) - [Now is the time for industrialized software development](https://www.wearedevelopers.com/magazine/601-now-is-the-time-for-industrialized-software-development) ## Related Jobs - [Senior Software Engineer, Client Apps Platform](https://www.wearedevelopers.com/jobs/ext/1773893-senior-software-engineer-client-apps-platform) at **GitHub** - [Principal Software Engineer, Database Infrastructure](https://www.wearedevelopers.com/jobs/ext/1465908-principal-software-engineer-database-infrastructure) at **GitHub** - [Staff Software Engineer](https://www.wearedevelopers.com/jobs/ext/1425755-staff-software-engineer) at **GitHub** - [Tribe Lead - ( Software) Engineering Centre of Excllence](https://www.wearedevelopers.com/jobs/ext/1475530-tribe-lead-software-engineering-centre-of-excllence) at **SD Worx** - [Mid/Senior Full-Stack Engineer (Web-first)](https://www.wearedevelopers.com/jobs/ext/1210833-mid-senior-full-stack-engineer-web-first) at **SMG Swiss Marketplace Group** - [Senior Software Engineer, Enterprise Products](https://www.wearedevelopers.com/jobs/ext/1841248-senior-software-engineer-enterprise-products) at **GitHub**