Client-Server Architecture. Advantages and Disadvantages of the Network computing Model.￼
May 11th, 2022Evgenia Kuzmenko
This article is the first out of the series of posts about the most popular Architectures in Distributed Systems. Here we will give you the fundamental concepts of a client-server model. A client-server is one of the architectures in Distributed systems.
Creating a transport layer protocol, using the client/server model we have to be guided by a fairly 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 are requesting the same files on a regular basis you can also 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. This improves the reliability, security and performance of network applications and the network as a whole.
Examples of Client-Server Architecture.
Initially provided access to hypertext documents via HTTP. Now there are supported advanced features such as working with binaries (images, multimedia, etc.).
- 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 with access to it. As a rule, a file server provides a certain level of protection against unauthorized access.
- Proxy server
First, it acts as an intermediary, helping users to access information from the Internet while protecting the network. Second, it stores frequently requested information in cache on a local drive, delivering it quickly to users without having to access the Internet again.
- Firewalls (Firewalls)
Firewalls that analyze and filter through network traffic to ensure network security.
- Mail servers
Provides services for sending and receiving e-mail messages.
DNS – DNS stands for “Domain Name Server“, and it has a massive collection of various forms of public IP addresses that are linked to their hostnames.
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 database layer is handled by the server machine.
- The application layer is an intermediary level. Here stored the business logic for processing the information. This could be for example a process when you fill in the online form on a travel website like “I’m going to Dominikana on 23 of November”. Our developers mostly build this layer with Python, Ruby, or PHP.
- The database server (data layer) provides data storage and is taken to a separate level, is usually implemented by means of database management systems, connection to this component is ensured only from the application server level. For this level we use database management software such as MySQL, Oracle, DB2, or PostgreSQL.
Three-tier architectural distinction
Let’s first start with the two-tier architecture. We don’t really use this type of architecture that much but still it is 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 horizontal scalability of the application server and multiplexing of connections)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 that are dedicated to performing functions and presentation logic, providing a software interface for calling an application at the middle level. The application of the lower level 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 that is 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, which improves performance and results in a very adaptable and reusable structure. The two-tier architecture is simpler because all requests are supported by a single server, but that is why it is less reliable and has higher performance requirements. The three-tier architecture is more complex, but due to the fact that 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 within login and password as well as 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 you have a risk of collapse or deceleration of your connection when a lot of clients make a request at the same time. So there is always a small chance not to reach necessary information. That is why in business-critical software architecture is complicated and even duplicated. On our projects we use a cluster of servers – one fell, 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 — 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 requirements for reliability and also there is support for specific functions.