Is Three-Tiered Architecture a Relic from the Past?
Three-Tier Architecture came to the fore in the last decade to overcome the shortcomings of the Two-Tier architecture in which the user interface runs on the client server and the database is stored on the server. For a three-tier architecture, a middle layer was developed and was sandwiched between the data management server and the user interface. Termed as process management layer, it is the layer where all the business related logic is executed and can be termed as the core of the Three-tier system.
In a three-tier model several hundreds of users can be accommodated, whereas in Two-Tier architecture only a hundred can be accommodated. This makes it more popular among the users.
Points to Ponder:
There are many arguments and counter arguments over the use of a three-tier architecture. Some of these have been listed below:
• Flexibility- By separating the business logic of an application from its presentation logic, a three-tier architecture makes the application much more flexible to changes. Another benefit advantage is that it becomes possible to develop a new framework for building new applications around this architecture. As each of the layers specializes in just one area of the application it is possible to have more reusable components which deal with each of those areas.
• Maintainability–In 3-tier architecture, changes to the component in one layer has no effect on other layers. Also, if different layers require different abilities (such as HTML/CSS is the presentation layer, PHP/Java in the business layer, SQL in the data access layer) then these can be handled by teams having knowledge in the specified areas.
• Scalability–The biggest advantage of 3-tier architecture is scalability and many application components can be deployed across multiple servers, thus making the system much more scalable.
• Management: Managing data is easier and independent from physical storage.
• Hidden Database: The actual structure of the database often remains hidden from requesters enabling any change of the database to be transparent. Thus a process in the middle tier which exchanges data with other applications can sustain its current interface while a modification of the underlying database structure.
• Security: The addition of the middle layer increases the security as an extra layer comes between the web server and database. If the web server gets hacked, your application server is safe. As a counter-argument, adding a level doesn't necessarily guarantee security. It depends on how good and efficient we are as developers at creating secure middle-tiers.
• Performance: A three-tier architecture is more scalable and efficient than a two-tier architecture because the web-tier and middle-tier can be scaled differently. Counter-arguments stress the fact that scaling just a web server is easier and caching could be done either locally in the web server or by duplicating the data.
• Maintenance: It is a common fact that the addition of a single middle layer can be shared by a number of clients, thus putting more pressure on the maintenance process. The counter-argument is that reusable components can be created and deployed multiple times.
There are also certain drawbacks that go against a three-tier architecture. These are:
• Complexity of Communication: Usually more effort is required when creating 3-tier applications as the communication points are increased (client to middle tier to server, instead of directly client to server).
• Fewer Tools: Additional effort is required due to increase of performance of a 3-tier architecture, whereas the 2-tier model can handle the particular function using an automated tool.
It is very important to put a particular function on a tier based on the following rules: the ease of testing and development; the context of deployment; the scalability of server and performance. To ordinary eyes the three-tier architecture may seem to be a complex and cagey affair, but when used in the right manner, it might prove economical and go a long way in helping you achieve your goals.