Most enterprise IT teams maintain dozens or even hundreds of monolithic applications that serve the unique needs of their organizations. Written by developers using techniques honed by decades of experience, those pieces of software are highly useful. But they’re also difficult to maintain, and adding new functionality is often deemed too risky.