Monolithic architecture
Monoliths are essentially one deployment unit housing all services and dependencies, making them easy to develop, easy to test, relatively easy to deploy and, initially, easy to scale. However, this style does not meet the requisite needs for most modern enterprise applications (N-tier) and web development at scale, and certainly not (microservices) applications being deployed to the Cloud. Change cycles are tightly coupled-any changes made, even to the smallest parts of an application, require wholesale rebuilds and redeployments for the entire monolith. As the monolith matures, any attempts at scaling require scaling of the entire application rather than the individual parts, which specifically require greater resources, becoming altogether nightmarish, if not improbable. At this point, a monolithic application has become overly complex, weighted with vast lines of code that is ever-increasingly difficult to decipher, such that business-critical items like bug fixes...