Implies a division of responsibilities in logical components usually, presentation layer, business / domain layer & data Access layer within a single running process.
Benefits
- Core use of this architecture is for sake of Maintenance And reusability
- The use of layers helps to control and encapsulate the complexity of large applications.
- Easy deployment strategy
- Higher performance
Liabilities
- Lower performance under load.
- Dangers of coupling as there are no physical separation of layers
- No scaling of layers possible. Scaling only possible by duplication entire application process.
- Unable to perform maintenance on layers without affecting the application as whole.
- Unable to unit test and performance test each layer independently from the rest of the application.