Its debatable what counts as “tiers,” but in my opinion it needs to at least cross the process boundary. Or else its called layers. But, it does not need to be in physically different machines. Although I dont recommend it, you can host logical tier and database on the same box.
Edit: One implication is that presentation tier and the logic tier (sometimes called Business Logic Layer) needs to cross machine boundaries “across the wire” sometimes over unreliable, slow, and/or insecure network. This is very different from simple Desktop application where the data lives on the same machine as files or Web Application where you can hit the database directly.
If I understand the question, then it seems to me that the questioner is really asking “OK, so 3-tier is well understood, but it seems that theres a mix of hype, confusion, and uncertainty around what 4-tier, or to generalize, N-tier architectures mean. So…whats a definition of N-tier that is widely understood and agreed upon?”
The classic 3-tier architecture: database, “business logic” and presentation, is a good way to clarify how to honor the principle of separation of concerns. Which is to say, if I want to change how “the business” wants to service customers, I should not have to look through the entire system to figure out how to do this, and in particular, decisions business issues shouldnt be scattered willy-nilly through the code.
Now, this model served well for decades, and it is the classic client-server model. Fast forward to cloud offerings, where web browsers are the user interface for a broad and physically distributed set of users, and one typically ends up having to add content distribution services, which arent a part of the classic 3-tier architecture (and which need to be managed in their own right).
The concept generalizes when it comes to services, micro-services, how data and computation are distributed and so on. Whether or not something is a tier largely comes down to whether or not the tier provides an interface and deployment model to services that are behind (or beneath) the tier. So a content distribution network would be a tier, but an authentication service would not be.
Now, go and read other descriptions of examples of N-tier architectures with this concept in mind, and you will begin to understand the issue. Other perspectives include vendor-based approaches (e.g. NGINX), content-aware load balancers, data isolation and security services (e.g. IBM Datapower), all of which may or may not add value to a given architecture, deployment, and use cases.
N-tier data applications are data applications that are separated into multiple tiers. Also called “distributed applications” and “multitier applications,” n-tier applications separate processing into discrete tiers that are distributed between the client and the server. When you develop applications that access data, you should have a clear separation between the various tiers that make up the application.
When you put it on the View-layer (presentation), then you can (hold on!!) replace the USER interface with another machine, thereby automate REAL input (!!!) – and you can thereby run tedious usability tests thousands of times without any user having to tap and re-tap and re-re-tap the same things over and over again.
Therefore, multi-tier – or N-tier – indeed has a few interpretations, whereas I would surely stick to the 3-tier + extra tiers comprising of thin interface-disks wedged in between to enable said tier-swaps, and in terms of testing (particularly used on mobile devices), you can now run user tests on the real software, by simulating a users tapping in ways which the control logic cannot distinguish from a real user tapping. This is almost paramount in simulating real user tests, in that you can record all inputs from the users OTA, and then re-use the same input when doing regression tests.
Tiers are physically separated, running on separate machines. A tier can call to another tier directly, or use asynchronous messaging (message queue). Although each layer might be hosted in its own tier, thats not required. Several layers might be hosted on the same tier. Physically separating the tiers improves scalability and resiliency, but also adds latency from the additional network communication.
Layering is one of the most common techniques that software designers use to break apart a complicated software system. You see it in machine architectures, where layers descend from a programming language with operating system calls into device drivers and CPU instruction sets, and into logic gates inside chips. Networking has FTP layered on top of TCP, which is on top of IP, which is on top of ethernet.
When thinking of a system in terms of layers, you imagine the principal subsystems in the software arranged in some form of layer cake, where each layer rests on a lower layer. In this scheme the higher layer uses various services defined by the lower layer, but the lower layer is unaware of the higher layer. Furthermore, each layer usually hides its lower layers from the layers above, so layer 4 uses the services of layer 3, which uses the services of layer 2, but layer 4 is unaware of layer 2. (Not all layering architectures are opaque like this, but most are—or rather most are mostly opaque.)
• Layers encapsulate some, but not all, things well. As a result you sometimes get cascading changes. The classic example of this in a layered enterprise application is adding a field that needs to display on the UI, must be in the database, and thus must be added to every layer in between.
• Extra layers can harm performance. At every layer things typically need to be transformed from one representation to another. However, the encapsulation of an underlying function often gives you efficiency gains that more than compensate. A layer that controls transactions can be optimized and will then make everything faster. But the hardest part of a layered architecture is deciding what layers to have and what the responsibility of each layer should be.
n-Tier Architecture Explained
When to use N-tier architecture
N-tier architecture is often the choice for infrastructure as a service, or IaaS, a form of cloud computing that offers computing functions and resources via the internet on a pay-as-you-go basis. Models such as IaaS rely on users having reliable access to the servers, and N-tier architecture allows for more reliable availability of the service. For example, in a one-tier infrastructure, theres only one server, so the failure of the server would render the application unusable. However, the failure of just one server in an N-tier system would allow for some continued functionality since the other servers would be operational.
What is N-tier architecture?
N-tier architecture refers to the structure of a software application divided into multiple tiers. A tier is a layer of the application that operates on its own infrastructure or server, while a layer is a division of the application that carries out a discrete set of functions.
The “N” in N-tier represents an undefined number, so theres no limit to the number of tiers within the N-tier architecture. That being said, there are often three layers in a software application—the presentation layer, application layer and data layer—though its possible to have fewer or more. These layers work together to form a complete application. However, in an N-tier application, each layer also functions independently of the others. The functions of each layer are:
The presentation, or client, layer is what the end-user sees and interacts with when using the application. This layer allows the user to communicate with the software by passing on information about their activity, such as mouse clicks and keyboard commands, to the application layer. For example, on the login page of an account-based website, there is a field in which you can type your username, another field for your password and clickable options for signing in or requesting a password reminder. These are all viewable elements on the page through which you can perform actions.
The application layer, also known as the business logic layer, contains the business logic, or the rules and algorithms that govern the exchange of data between the other layers. This layer is in charge of software functionality and acts as an intermediary between the presentation and business layers. When a user inputs actions through the presentation layer, the application layer processes and passes on this information to the data layer, from which it retrieves corresponding data to complete the action. This exchange allows the software to perform operations in accordance with the users commands.
The data layer stores and manages the data that the software processes. It communicates with the application tier to help complete user actions. For example, when you want to update an application on a smartphone, the data layer of the application contains the information needed to carry out that operation and the application layer retrieves the information from there.
Advantages of N-tier architecture
N-tier architecture offers a number of advantages, including:
As mentioned, N-tier architecture can improve the availability of an application since an error or failure in one tier is less likely to affect the functionality of the other tiers. A more constant availability can contribute to a well-regarded software product or service since users can rely on the application to function appropriately at any given time.
The application layer is what allows the other two layers to communicate with each other, so it can behave like a firewall, disallowing threats to spread throughout the system. Also, because each tier operates on its own infrastructure, its possible to enforce different levels of protection. This tailored approach allows you to meet the disparate security needs for each tier.
The separate infrastructure for each tier also allows you to scale them as needed. If you find that youve increased data requirements, you can upgrade the data tier without affecting either of the other two tiers. Managed scalability of this sort can help you scale up more readily since youre likely to need fewer resources to increase the capabilities of just one part of the system.
N-tier architecture can improve the maintenance of your software since different people can manage single tiers without influencing the management of other tiers. This can help ensure that the appropriate person is responsible for a given tier. For example, a web designer would be an appropriate member to manage the presentation tier, but others would be better suited to manage the data or application tier.
Disadvantages of N-tier architecture
There are some challenges associated with N-tier architecture, such as:
A larger number of tiers also means more networks and devices associated with the system, and this can result in slow performance of the application, particularly if the network bandwidth and hardware specifications arent high enough. To mitigate or resolve this issue, its important to ensure that you maintain a fast network and capable machines. This can ensure you get the most value out of your N-tier software.
Every tier involved in a software application requires more hardware, deployment and maintenance needs, each of which increases cost. Thus, its a good idea to minimize the number of tiers within the software system. Limiting it to three tiers can help lower costs while providing the advantages mentioned above.
N-tier architecture on a virtual machine
A virtual machine, or VM, is computer code that functions in the same way as a physical computing device, offering CPU, memory and storage capacity that exists in a remote server or host computer. You can set up N-tier architecture on a virtual machine to increase security and test various configurations. A VM-based N-tier architecture uses multiple VMs per tier, allowing for quicker recovery and continued functionality in the event of error or failure. The VMs within a tier should operate on their own subnetwork, or a smaller network within the larger one, to improve security and organization.
What is difference between n-tier and 3-tier architecture?
What does tier N mean?
Is n tier architecture still used?
What is difference between Tier and n tier architecture?