All software systems can be grouped in either a 2-tier or a 3-tier formation.
The former is essentially where all clients contain application and business logic code to read from a datastore themselves (STC, n.d.) and the latter by comparison relies on a thin client that talks to an application layer server that contains business logic which in turn communicates with the datastore.
The two-tiered approach to application modelling is to run a fat client – one which contains all business logic code – and communicate directly with a database server itself.
Most desktop software uses this approach where you run the actual application executable binary and it stores and retrieves data to it?s local or remote database. Most traditional software has been known to work on this basis (Hui, Fong, 1999).
The three-tiered view focuses around removing business logic and heavy application code from the client and placing it on a central application server (McGrath, 2010). This keeps the client lighter and easier to maintain as well as giving more power to the middleware so that it can control a group of clients independently.
Web applications are the most obvious example of this type of architecture.
The website/web application acts as the client view or presentation layer which communicates to a web server which in turn processes the requests and queries a database; passing back the information all the way through to the end client which made the request.
The major difference here is in the placement of business logic and heavy application layer code.
It is harder to maintain and upgrade a two-tiered system by comparison to a three-tiered system (Panda, 2016) because each two-tiered system would need its own upgrade cycle.
However, by resigning oneself to a three-tier system, one only has to upgrade the middle layer and push out a single change request to all clients that access it.
If this is in the example of a web application, there is a great chance that the client and server application code is maintained by the same controlling organisation that has access to both layers and can synonymously affect the update as required (Wright, 2015).
If a breaking change in either application code or database layer is made, the three-tiered approach gives more control to the client not being affected. Whereas, if a breaking change in the database layer was applied to a two-tiered system, then all clients would need to be updated synchronously in order to not be affected.
STC (n.d.) What is Difference Between Two-Tier and Three-Tier Architecture? [Online] SoftwareTestingClass.com, Available from: http://www.softwaretestingclass.com/what-is-difference-between-two-tier-and-three-tier-architecture/
Hui, R., fong, J. (1999) Application of middleware in the three tier client/server database design methodology [Online] Scielo.br, Available from: http://www.scielo.br/scielo.php?script=sci_arttext&pid=S0104-65001999000200005
McGrath, D. (2010) Explain the different tiers of 2 tier & 3 tier architecture? [Online] StackOverflow, Available from: https://stackoverflow.com/questions/2199176/explain-the-different-tiers-of-2-tier-3-tier-architecture
Panda, N (2016) What is Difference between Two-Tier and Three-Tier Architecture? [Online] Tuturself.com, Available from: https://www.tuturself.com/posts/view?menuId=90&postId=465
Wright, M. (2015) 2-Tier vs. 3-Tier Application Architecture? Could the Winner be 2-Tier? [Online] Nitrosphere.com, Available from: http://nitrosphere.com/2-tier-vs-3-tier-application-architecture-could-the-winner-be-2-tier-2/
Featured image credits go to: nitrosphere.com