Let’s think of an imaginary company that has a product, built as a software monolith. This is not hard to imagine, right?
So, now let’s imagine a situation where the time comes for the company to slice the product technically, into a set of independent services.
The reason may be that codebase becomes hard to manage due to too big complexity, technical debts, or different scalability required for some parts of the application.