An approach to create physical division of activities as separate standalone processes called tiers. Tiers might contain multiple layers.
- Each tier can scale horizontally and can be load balances independently as needed.
- The use of layers as tiers helps to control and encapsulate the complexity of large applications.
- Better performance under load. As you scale tiers that are under load the distributed application performs better.
- Low coupling.
- Each tier can be unit tested and performance tested.
- Allows for maintenance on tiers without affecting application as a whole.
- Allows for better security by isolation access to resources.
- Higher maintenance
- Lower performance due to communication between tiers.
- Complicated deployment strategy
- Complicated Security Setups