Monolithic applications must be built, tested, and
deployed as a single unit. Often, the operating
system, middleware, and language stack for the
application are customized or custom-configured
for each application. The build, test, and deployment
scripts and processes are typically also unique to
each application. This is simple and effective for
greenfield applications, but as they grow, it
becomes harder to change, test, deploy, and
operate such systems.