Monolith Application vs Microservices

Microservices decouple major business domain specific concerns into separate independent code bases. A Monolithic application architecture can be thought of as the inverse of Microservices. A Monolith is one code base that couples all of the business concerns together. Monoliths can be convenient early on in a projects life for ease of code management cognitive overhead, and deployment. This allows everything in the monolith to be released at once.
Many projects initially start out as a Monolith and then evolve into a Microservice architecture. As new features are added to a Monolith it may start to become cumbersome to have many developers working on a singular codebase. Code conflicts become more frequent and the risk of updates to one feature introducing bugs in an unrelated feature increases. When these undesirable patterns arise, it may be time for a discussion on a migration to Microservices.