Typically, there are limits to how large and complex a code base can be before it starts to become unmaintainable. Applications that approach that point are called monoliths.
Monoliths typically have these types of problems:
Break up the large monolithic application into smaller, more manageable sections. These smaller sections, called microservices, are supported independently. Most new features affect only one or two microservices.
Microservices, if implemented properly, will eliminate or greatly reduce the problems listed above. The words “if implemented properly” need to be emphasized. Being successful with this approach means observing the fine print. For instance, how you break up the monolith matters. That is, figuring out which microservices will provide which pieces of functionality is easier said than done.
There are many ways to screw up a microservices implementation in a way that will prevent you from seeing the benefits. Here are a few:
As part of the refactoring effort, we can help you run on the cloud. Any code we write is cloud "capable". Whether or not you choose to run on the cloud, it should be an option. We would be happy to discuss the particulars. Any software we write can run in the cloud.