The benefits of decomposing your business’s large monoliths are well established. Your company’s systems may have started small, and their simplicity may have allowed for rapid initial development. However, as they’ve grown, complexity has increased, and work has slowed. It’s time to break things up into loosely coupled systems so that a slowdown in one area doesn’t affect the whole system, and multiple teams can make rapid iterations without getting bogged down in negotiating dependencies with other parts of the system.
Now the question is how. You’ve got ideas, and some of the components to break out seem obvious, but do those ideas add up to a coherent vision that puts you where you want to be a few years down the road? Or are you likely to hit stumbling blocks, like systems not getting the data they need via a reasonable path, complications arising from unexpected dependencies, or user experiences made complex by asynchronous data? Where should you start if you want to avoid troubles down the line?