Nowadays, most of the applications we use are built upon on what is called a 3-tier architecture. In this article, we will take a closer look at this architecture and its most common used technology stack.

First, let’s clarify the term “tier” which refers to the physical structure, and is not to be confused with “layer” which represents a logical separation of code.

Dividing an application into tiers enables our software to have loose coupling, better security, and scalability. The graphic below shows each tier and each of the 3-tiers is described with the most known technologies named.

Overview 3-Tier Architecture

Overview 3-Tier Architecture

Frontend Tier

The Frontend is also known as the User Interface (UI) and represents what a user sees and interacts with. This tier often consists of a Webapp for browser-based access (Chrome, Edge, Firefox) and native apps such as Android and iOS. These clients communicate with the Backend Tier mostly through HTTP(S) and/or a WebSocket protocol .

A web app is usually built with a JavaScript Framework: React, Angular, Vue and Svelte are some of the most popular ones.

The development of native Android Apps requires Google’s development tools: Kotlin, Android Studio, Play Store. The development of native iOS Apps requires Apple’s development tools: Swift, Xcode, App Store. But there are also cross-platform frameworks to help speeding up the development process: Flutter, Reactive Native, Vue Native, most of which utilize JavaScript to build apps that are independed of the operating system and run on both Android and iOS.

Backend Tier

The Backend tier is often implemented with a general-purpose language such as Java, Kotlin, Go, Python, PHP just to name a few. This tier represents the business logic of the application. It enforces business rules and prescribes how objects interact with each other. Hence its tasks are for example: controlling the order of executions, computing and calculations, transaction management, composition of services and plenty more.

Furthermore, in order to enable the communication between Frontend and Backend. The backend must offer an API. REST or GraphQL are two most common ways of how to design backend APIs. These APIs can be accessed via HTTP(S) for client request-based communication or WebSocket for full-duplex real-time TCP communication.

Some of the most popular frameworks to build backend systems are Spring Boot (Java, Kotlin), Express NodeJS (JavaScript) or Gin (Go).

Once the client request is processed, the state of our application must be persisted. This is where a database specific driver comes in handy. It abstracts and facilitates the communication between our backend and our persistence tier. This way, we do not have to reinvent the wheel each time and worry about all the low-level technical details.

Persistence Tier

This is where the data is stored. There are plenty of database technologies out there. However, broadly speaking, we can divide them into two categories: structured data (SQL) and unstructured data (NoSQL). The choice really depends on the application’s requirements as each technology always comes with pros and cons.

Some popular representatives for NoSQL databases are MongoDB, CouchDB, Redis, Neo4J. PostgreSQL, MySQL, DB2, OracleDB are some of the prominent SQL databases.

In this article we examined the structure of a modern 3-tier architecture and how each of the 3-tiers communicate with the others. Furthermore, we also named some popular technology choices to build such systems.

Author: Henry Vu


Write us. We are looking forward to your message!