In a previous post N-Tier Architecture we looked at what that was. Great we know what N-Tier Architecture is but what is it good for and why should you use it?
Each tier can be scaled independently as and when needed.
It could be argued by separating out the overall system into this architecture provides added security. If the web server get's hacked your app server and database servers are still secure etc.
In a big company/enterprise you may have various teams looking after different elements of the overall system. For example the Database Team manages the database, the Windows Team manages the OS. The Application Team manages the application. If everything were installed on one box this presents two main problems:
- If something stopped working it could become hard to identify what change/update by who.
- Lack of a segregation of duties. This means the application team could potentially have permissions that would allow them to do stuff or have access to data they shouldn't.
No single point of failure
This basically means, if everything was installed on one server and that server failed the whole system would be useless until that server was repaired or replaced. Separating out the different elements onto their own server decreases the likelihood of this.
Because each tier is responsible for a specific function it makes the tier more easier to reuse. For example the database server can be used to host multiple databases for multiple applications.