Rapid, reliable, frequent and sustainable software development requires an architecture that is loosely coupled and modular. Teams need to be able to complete their work with minimal coordination and communication with other teams. They also need to be able keep the software’s technology stack up to date. However, the microservice architecture isn’t always the only way to satisfy these requirements. Yet, neither is the monolithic architecture. In this talk, I describe loose coupling and modularity and why they are essential. You will learn about three architectural patterns: traditional monolith, modular monolith and microservices. I describe the benefits, drawbacks and issues of each pattern and how well it supports rapid, reliable, frequent and sustainable development. You will learn some heuristics for selecting the appropriate pattern for your application.