Chapter 2. Application Architecture
Cloud applications can seem exotic, but their fundamentals evolved from traditional IT. The architectures for applications are largely the same for the traditional IT and cloud. Some of what can make cloud applications seem advanced is that they incorporate advanced architectures that are used less commonly in traditional IT.
The three patterns in this chapter embody three broad approaches for how to architect an entire application. These architectures are not specific to the cloud; they apply equally well to both traditional IT and to the cloud. Developers experienced with developing architectures for traditional IT applications may well already be familiar with these patterns.
Introduction to Application Architecture
Before we dive into the architectures, we’ll review some background information that is helpful for understanding them. An application architecture is a kind of software architecture, so first we will define software architecture itself. Architectures are all about trade-offs, so we will discuss the design constraints these architectures resolve and the trade-offs they balance. Architectures arrange functionality into components, so we’ll introduce some terminology for describing the components in an architecture.
Once we have that background, we will then present the three application architecture patterns in this chapter—Big Ball of Mud, Modular Monolith, and Distributed Architecture—and discuss the evolution they embody.