This client—which we will call BubbleCorp from now on—had a big problem that is all too common and well known to big enterprises: one massive monolithic application.
Besides making them move slow, as individual components can't be evolved independently, this application makes deployment incredibly hard due to its environment constraints: all infrastructure needs to be available in order for the application to work at all.
As a result, developing new features and bug fixes involves having only a handful of development environments shared across dozens of developers each. This requires a wasteful amount of coordination between teams just so that they won't step on each other's toes, contributing to slow the whole life-cycle further.
The long-term solution to this problem is to break down this big application into smaller components, which can be deployed and worked on independently, but as good as this sounds, it's a laborious and lengthy process.
As a first step, BubbleCorp decided...