A tour of MallBots
Our MallBots application is a modular monolith, which, if you recall from Chapter 2, Supporting Patterns in Brief, is an application design that sits somewhere between a classic monolith design and a microservices application design. We have most of the benefits of both designs with only a few downsides.
The responsibilities of the monolith
The root directory of our code is kept minimal and what stands out is the module names. We intentionally avoid the use of generic or general layer names, such as controllers, config, or models, in the root directory. We use application component names, such as baskets, stores, depot, and ordering instead, so that we end up with a code repository that looks like an application that deals with shopping and not like some generic, no-idea-what-it-does application. Each of these modules is a different bounded context in our application.
Screaming architecture
The organization we’re using for our root level directory...