In the lifetime of an application, you sometimes get to a point where using a simple design architecture like the one we built isn't enough. As traffic keeps on increasing and you start seeing millions of users, you may need to start looking into changing parts of your architecture to make it more efficient. Ideally, you want to analyze your application and figure out which parts are hard to scale or hard to develop against and carve off those pieces of your monolith to create dedicated services. This is commonly called adopting a service-oriented architecture. This is, of course, a very complex and disruptive exercise, but the benefits offset those inconveniences.
From an architecture/operations standpoint, breaking out services in the manner described will allow for:
- Better reusability of the service as...