What is a monolith?

In terms of Java EE, a monolith or a monolithic application is one that is usually distributed as a single unit, such as a WAR or an EAR archive. All the functionalities are packaged into this unit and divided into multiple layers that are responsible for implementing a specific area of the application:

  •  User experience in a frontend layer is implemented using the Model-View-Controller (MVC) or Model View/View Model patterns
  •  A business layer responsible for exposing business services to the frontend layer or third-party consumers
  •  A data layer that interacts with the database to manage the standard create, read, update, delete (CRUD) functions

This is only a minimal description of a monolith structure—the more complex the application, the more patterns and layers are used to implement it.

You can use the Java EE monolith example at https://developers.redhat.com/ticket-monster/ to better understand the structure of this type of application design.