The 3 tier architecture is a client-server architecture, in which tier represents physical separation and layer represent logical separation.
In this architecture each layer can potentially run on a different machine.
Each tier (Presentation, Logic & Data) developed and maintained as independent modules, most often on separate platforms.
Unconnected tiers should not communicate.
It follows component-oriented approach, generally uses platform specific methods for communication instead of a message-based approach.
Data transfer between tiers is part of the architecture. Protocols involved may include one or more of SNMP, CORBA, Java RMI, .NET Remoting, Windows Communication Foundation, sockets, UDP, web services or other proprietary protocols.
Change in platform affects only the layer running on that particular platform. For example, a change of operating system in the presentation tier would only affect the user interface code.
This is the topmost level of the application.
Provides user interface, handles the interaction with the user. Sometimes called the GUI or client view or front-end.
It sends content to browsers in the form of HTML/JS/CSS. This might leverage frameworks like React, Angular, Ember, Aurora, etc.
It communicates with other tiers by which it provides the results to the browser/client side.
Application Tier (Business Logic or Middle Tier)
This contains set of rules for processing information, business logic and able to accommodate many users. Sometimes also called as middleware.
It processes the inputs received from the clients and interacts with the database.
The logic tier will have the JSP, Java Servlets, Ruby, PHP, C++, Python and other programs. The logic tier would be run on a Web server.
A database, comprising both data sets and the database management system or RDBMS software that manages and provides access to the data (back-end).
It provides security, data integrity and support application.
The data tier would be some sort of database, such as a MySQL, SQLite or PostgreSQL database. All of these are run on a separate database server.
Maintainability - Because each tier is independent of the other tiers, updates or changes can be carried out without affecting the application as a whole.
Scalability - Because tiers are based on the deployment of layers, scaling out an application is reasonably straightforward.
Flexibility - Because each tier can be managed or scaled independently, flexibility is increased.
Availability - Applications can exploit the modular architecture of enabling systems using easily scalable components, which increases availability.
Reusability - Components are reusable
Faster development - Because of division of work web designer does presentation, software engineer does logic, DB admin does data model.
High installation cost.
Structure is more complex as compare to 1 & 2 tier architectures.