Currently, I'm designing the Project based on Clean Architecture composing with 4 layers:
- Domain
- Application
- Infrastructure
- Presentation
Since the project is pretty huge, I'm now considering to separate the Application Layer into Multiple Module Layers. For e.g. Application.BackOffice, Application.FrontOffice, Application.Commerce.
There might also be multiple Presentation Layers which consume their related Application Module Layers.
For the Domain Layer, there will only be one layer since the project is within the Single Domain Boundary.
For the Infrastructure Layer, it also only one layer that implementing the Interfaces from the above Multiple Application Module Layers mainly related with Persistence and Third-Party Web Services.
There are 2 main reasons of separating Multiple Application Module Layers:
- Just separation of concerns and clean code perspective,
- Each application module layer might be published as separated service
Conceptually, I think it is valid but I haven't found any resources that mention to separate multiple Application Module Layers.
So, is the above approach the reasonable one and not deviated from the main Clean Architecture concept.
Also would like to know if there are other options that can fulfill the above conceptual requirement.