We Stand With Ukraine
Read full statement
menu

Client-Server Architecture. Advantages and Disadvantages of ​​the Network Computing Model

March 20th, 2023

Evgenia Kuzmenko KITRUM Brand ManagerEvgenia Kuzmenko

This article is the first out of a series of posts about the most popular architecture types in Distributed Systems. Here we will give you the fundamental concepts of a client-server model.

Creating a transport layer protocol, using the client-server model, we have to be guided by a relatively precise set of requirements. In general, a transport layer protocol must address all of the following criteria: a client-server connection, client-server interaction, client-server authentication, and other ways to ensure data integrity after packets have been delivered and received.

Here at KITRUM, we often use this architecture model for databases because that is how we can maintain various operators at once with unified requests. If several customers request the same files regularly, you can connect the solutions that track use patterns minimizing response time and enhancing overall system efficiency. 

So, the main idea of the «client-server» architecture is to divide the network application into several components, each of which implements a specific set of services. Components of such an application can run on different computers, performing server and/or client functions. It improves the reliability, security, and performance of network applications and the network as a whole.

What is client-server architecture?

So, imagine that you are playing a game on your tablet or computer. You are the client, meaning you are using and interacting with the game. But the game itself doesn’t just exist on your device – it’s running on another computer somewhere else. That computer is the server, and it’s responsible for keeping track of everything happening in the game.

So when you move your character in the game, your device sends a message to the server to let it know what you’re doing. The server then updates the game world with your actions and sends that information back to your device so you can see the changes on your screen.

In order to keep the game running smoothly, your device and the server must communicate back and forth repeatedly.

Client-server architecture is like a conversation between two computers – the client (your device) talks to the server, and the server talks back. Working together, they can create an excellent experience for you as you play your favorite games or use other online applications.

What is client-server architecture?

Examples of client-server architecture

Web-servers

Provide access to web applications and content such as HTML files, images, or other resources. These servers are responsible for handling requests, rendering pages, and serving content to users.

Application server

Designed to centrally solve application tasks in some subject area. To do this, users have the right to run server programs. Using application servers reduces client configuration requirements and simplifies overall network management.

Database server

Database servers are used to process user requests in SQL. The DBMS is located on the server to which client applications are connected.

File servers

The file server stores the information as files and provides users access. As a rule, a file server provides a certain protection against unauthorized access.

Proxy server

First, it acts as an intermediary, helping users to access Internet information while protecting the network. Second, it stores frequently requested information in a cache on a local drive, delivering it quickly to users without having to reaccess the Internet.

Firewalls (Firewalls)

Provide the ability to monitor and control incoming and outgoing network traffic. Utilizing various rules and settings, it can be used to block unwanted connections, detect malicious data packets, and protect from potential security threats.

Mail servers

Provide users with the ability to send and receive emails. The server handles authentication, storage, and delivery of emails.

Three parts of client/server systems

The display layer (Client Tier), the application layer (Business Tier), and the database layer (Data Tier) are the three primary logic components of client/server systems. The presentation layer is handled by the client machine, the application layer is controlled by the dedicated server, and the server machine handles the database layer.

  • The presentation layer provides the user interface, which correlates to the view level. It’s usually a web page or website, like a shop, where you make easy operations with the data like sorting, grouping, counting, etc. This level should not have direct links to the database, and it’s commonly created with HTML, CSS, and Javascript.
  • The application layer is an intermediary level. It stores the business logic for processing the information. It could be, for example, a process when you fill in the online form on a travel website like “I’m going to the Dominican Republic on 23 of November”. Our developers mostly build this layer with Python, Ruby, or PHP.
  • The database server (data layer) provides data storage. It is taken to a different level and is usually implemented using database management systems. Connection to this component is ensured only from the application server level. We use database management software such as MySQL, Oracle, DB2, or PostgreSQL for this level.

Three-tier architectural distinction

Let’s first start with the two-tier architecture. We don’t use this type of architecture that much, but it is still worth mentioning. The two-tier architecture is used in client-server systems, where the server responds to client requests directly and in full, using only its own resources. The server does not call any third-party network applications or access any third-party resources to execute any part of the request.

Compared to a two-link client-server architecture or file-server architecture, a three-tier architecture is generally more scalable (due to the horizontal scalability of the application server and multiplexing of connections) and greater configurability (due to the isolation of levels from each other). 

At KITRUM, we mostly use three-tier architectural distinction. At the lower level, client applications are located on user computers dedicated to performing functions and presentation logic, providing a software interface for calling an application at the middle level. The lower-level application is called a «thin» or «light» client, as a client can be a regular web browser.

At the middle level, there is an application server that executes application logic and from which the processing logic performs database operations, i.e. this layer provides data exchange between users and databases. The Application Server is hosted on a network node accessible to all clients.

At the top level, there is a remote specialized database server that receives information from the application server. The database server is dedicated to data processing services and file operations.

This extra layer allows scaling the system smoother, improving performance and resulting in a very adaptable and reusable structure. The two-tier architecture is simpler because a single server supports all requests, but that is why it is less reliable and has higher performance requirements. The three-tier architecture is more complex, but since the functions are distributed between the second and third-level servers, this architecture represents:

  • High degree of flexibility and scalability.
  • High Security (protection can be defined for each service or level).
  • High performance (tasks are distributed among the servers).

Advantages of client-server model

Centralization 

The fundamental benefit of a client-server network is that it allows for centralized management—all the information you can find in one place. Because the network administrator has complete control over management and administration, this is extremely advantageous. Any issue that arises throughout the whole network may be resolved in one location. It also becomes easier to upgrade data.

Adaptability

Customers can easily expand the number of clients or servers. Because the server is centralized, there are no concerns regarding authorization to network resources growing in size. As a result, the setups only require a small number of people.

Protection

Because of the centralized design of a client-server network, data is adequately secured. So only if you’re an authorized user can you access the data via login and password and two-factor authentication. In addition, if the data is lost, the records can be recoverable quickly with one backup.

Operation

It is simple to handle files because they are all kept on a single server. A client-server network can simply monitor and access necessary file records.

Disadvantages of client-server model

Overloading

Every time when too many clients request access simultaneously, there is a risk of collapse or deceleration of your connection. So there is always a small chance not to reach necessary information. 

We use a cluster of servers on our projects – one fell, and the rest are working. Put a balancer in front of the servers, and the client sends the request there. No matter how many servers are put into the cluster, the client is not interested. It has one URL – the address of the balancer. This scheme is used for a high-load application – when there are so many requests that one server simply cannot handle them. Amazon, Facebook, and other giants have been working like this for dozens of years. 

Cost

The servers are expensive. You can’t put a normal SSD in there, just like a home computer. Why? Because hardware for servers has quite different reliability requirements, and there is support for specific functions. It can be a significant problem for smaller businesses that may not have the resources to maintain a server and client infrastructure.

Final thoughts

Client-server architecture is a fundamental concept in computer science, and it is exactly what allows us to do so many things online, from playing games and using social media to accessing cloud-based software. It’s a powerful way for devices to communicate with each other and share information and is essential for internet functioning.

However, client-server architecture also raises some interesting questions about privacy and security. When we use online services, we trust the servers to keep our information safe and secure. This can be tricky to balance, as we want the convenience and connectivity that the internet provides, but we also want to ensure our data is protected.

So, as you use your devices and interact with the online world, it’s worth thinking about the client-server architecture behind the scenes. How is your data being stored and processed? Who has access to it? What steps are taken to keep it safe? By considering these questions, you can become a more informed and empowered technology user.

Want to implement Client-Server Architecture on your project?