What are the benefits of N-tier architecture?
From here :
- Other apps will be able to reuse functionality exposed by your layers.
- You will be able to distribute your layers across multiple physical layers. This can have a huge impact on your application, improving performance (sometimes), scalability, and fault tolerance.
- Maintaining your application is easier due to the low communication between layers.
- Adding more functionality to your application is simplified.
- Layers make your application more robust.
- The creation of well-formed layers makes it easier to navigate the application.
- Unless your application is tiered, you have to deal with all security threats in one place, which is very difficult. Having your application layered makes it easy to design and implement
- Without a good deployment plan, it's not trivial to distribute your layers across multiple physical layers in distributed computing. You must plan your layers when creating a distributed application.
a source to share
The solution is easier to maintain and improve because of the low coupling between layers, high cohesion between layers, and the ability to switch between different layer interface implementations.
Other solutions should be able to reuse functionality displayed by different layers, especially if layer interfaces are designed with reuse.
Distributed development is easier if work can be distributed across layer boundaries.
Spreading layers across multiple physical layers can improve scalability, resiliency, and performance. For more information, see the Layered Distribution Template.
Testing capability benefits from having well-defined layer interfaces as well as the ability to switch between different implementations of layer interfaces.
Summary
Benifits
- Reusing layers
- Support for standardization
- Dependencies are stored locally
- interchangeability
a source to share
Firs of all, layered architecture is a type of "modular design". Therefore, to appreciate the benefits of a layered architecture, you need to know what modular design is. Secondly, it is a special type of modular design, specially organized to manage dependencies to minimize hard coupling, thereby achieving the goals of modular design - standalone modules / components. Once we have standalone / independent modules, they can be reused, extended, tested, etc. Compared to when the architecture / design is not modular.
I have an article on layered architecture where I discuss these things in more detail. This might be helpful.
a source to share