What Does Client/Server Architecture Mean?
Client/server architecture is a computing model in which multiple components work in strictly defined roles to communicate. The server hosts, delivers and manages most of the resources and services to be consumed by the client. This type of shared resources architecture has one or more client computers connected to a central server over a network or internet connection.
Client/server architecture is also known as a networking computing model or client/server network because all the requests and services are delivered over a network. It’s considered a form of distributed computing system because the components are doing their work independently of one another.
Techopedia Explains Client/Server Architecture
In a client/server architecture, the server acts as the producer and the client acts as a consumer. The server houses and provides high-end, computing-intensive services to the client on demand. These services can include application access, storage, file sharing, printer access and/or direct access to the server’s raw computing power.
Client/server architecture works when the client computer sends a resource or process request to the server over the network connection, which is then processed and delivered to the client. A server computer can manage several clients simultaneously, whereas one client can be connected to several servers at a time, each providing a different set of services.
The client/server model as it evolved served pretty well for what some refer to as web 2.0, where the Internet slowly became a functional virtual space for users. It provided an established and predictable model for how user sessions would go, and how providers delivered resources based on requests for data packets and other resources.
Example of Client/Server Communications
Here's an example of how client/server communications work. In an average use of a browser to access a server-side website, the user or client enters the URL. The DNS server looks up the web server's IP address, and gives it to the browser. The browser generates an HTTP or HTTPS request, and the server, as the producer, sends the files. The client, as the consumer, receives them, and then, typically, sends follow-up requests.
Although this model technically works for any number of similar processes, it does have some drawbacks. Over time, an alternative called peer-to-peer or P2P modeling has emerged, which many feel is in some ways superior to traditional client/server models, especially in terms of handing handling specific challenges where communications are more evolved.
Issues with Client/Server Models
One of the biggest issues with a traditional client/server setup is the nature of unpredictable workloads.
In defining client/server systems as systems that scale vertically and use central data stores, some analysts believe that peer-to-peer is more agile and versatile for making sure that unpredictable workloads are managed well. Experts talk about things like redundancy and availability zones and failover as a means to keep online business systems running smoothly, despite changes in demand or other problems.
For example, another major issue is the utility of a distributed denial of service (DDoS) attack. In this type of attack, out-of-control client activity swamps a server. Those who are looking at the Internet of a couple of decades ago point out that it was fairly easy to swamp a site with a DDoS attack because the average client/server model wasn't set up for thresholds above a certain amount of traffic.
Peer-to-peer systems can solve many of those problems, and secure systems against DDoS attacks and similar cyberattacks. Peer-to-peer is also helpful in handling some kinds of other disruptions based on a single point of failure.
With the emergence of decentralized and distributed systems, for example, blockchain immutable ledger technologies, peer-to-peer systems are becoming more popular and starting to replace client/server architectures.