Client Server Architecture
What is Client Server Architecture?
Client Server Architecture is a computing model in which the server hosts, delivers and manages most of the resources and services to be consumed by the client. This type of architecture has one or more client computers connected to a central server over a network or internet connection. This system shares computing resources. 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.
Client Server Architecture
Figure 1. source: Practice
Client-server architecture is an architecture of a computer network in which many clients (remote processors) request and receive service from a centralized server (host computer). Client computers provide an interface to allow a computer user to request services of the server and to display the results the server returns. Servers wait for requests to arrive from clients and then respond to them. Ideally, a server provides a standardized transparent interface to clients so that clients need not be aware of the specifics of the system (i.e., the hardware and software) that is providing the service. Clients are often situated at workstations or on personal computers, while servers are located elsewhere on the network, usually on more powerful machines. This computing model is especially effective when clients and the server each have distinct tasks that they routinely perform. In hospital data processing, for example, a client computer can be running an application program for entering patient information while the server computer is running another program that manages the database in which the information is permanently stored. Many clients can access the server’s information simultaneously, and, at the same time, a client computer can perform other tasks, such as sending e-mail. Because both client and server computers are considered intelligent devices, the client-server model is completely different from the old “mainframe” model, in which a centralized mainframe computer performed all the tasks for its associated “dumb” terminals.
== The Purpose of Client/Server Architecture == 
We are in an era where information technology plays a critical role in business applications, considered as an area an organization would highly invest in order to widen the opportunities available to compete the global market. “A competitive global economy will ensure obsolescence and obscurity to those who cannot or are unwilling to compete”(Client/Server Architecture,2011), according to this statement it’s necessary for organizations sustain its market position by reengineering prevailing organizational structures and business practices to achieve their business goals. In short it’s a basic need to evolve with the change of technological aspects. Therefore organizations should undergo a mechanism to retrieve and process its corporate data to make business procedures more efficient to excel or to survive in the global market. The client/server model brings out a logical perspective of distributed corporative processing where a server handles and processes all client requests. This can be also viewed as a revolutionary milestone to the data processing industry. “Client/server computing is the most effective source for the tools that empower employees with authority and responsibility.”(Client/Server Architecture,2011) “Workstation power, workgroup empowerment, preservation of existing investments, remote network management, and market-driven business are the forces creating the need for client/server computing”. (Client/Server Architecture,2011) Client/server computing has a vast progression in the computer industry leaving any area or corner untouched. Often hybrid skills are required for the development of client/server applications including database design, transaction processing, communication skills, graphical user interface design and development etc. Advanced applications require expertise of distributed objects and component infrastructures. Most commonly found client/server strategy today is PC LAN implementation optimized for the usage of group/batch. This has basically given threshold to many new distributed enterprises as it eliminates host-centric computing.
== Characteristics of a Client-Server Architecture == 
- Client and server machines need different amount of hardware and software resources.
- Client and server machines may belong to different vendors.
- Horizzontal scalability (increase of the client machines) and vertical scalability (migration to a more powerful server or to a multiserver solution)
- A client or server application interacts directly with a transport layer protocol to establish communication and to send or receive information.
- The transport protocol then uses lower layer protocols to send or receive individual messages. Thus, a computer needs a complete stack of protocols to run either a client or a server.
- A single server-class computer can offer multiple services at the same time; a separate server program is needed for each service.
== Three-tier Client Server Architecture == (See Figure 2.) 
The traditional client/server architecture involves two levels, a client level and a server level. Another common design of client/server systems uses three tiers:
- A client that interacts with the user
- An application server that contains the business logic of the application
- A resource manager that stores data
Figure 2 source: IBM
== Client Server Vs. Peer to Peer == (See Figure 3.) 
The main difference between client-server and peer to peer systems is that in the client-server architecture, there are designated clients that request for services and servers that provide services, but in peer to peer systems, peers act as both service providers and service consumers. Further, client-server systems require central file server and they are expensive to implement than peer to peer systems. On the other hand, in the client-server system, a dedicated file server provides level of access to the clients, providing better security than peer to peer systems where security is handled by the end users. Further, peer to peer networks suffer in performance as the number of nodes increase, but client-server systems are more stable and could be scaled as much as you need. Therefore, selecting one over the other is dependent on the environment that you need to implement.
The Figure 3 depicts client server architecture model in two different modes or types. There are different types of architectures based on client server model viz. distributed, peer to peer etc.
- In distributed architecture, one or more dedicated machines are used only as server while all the other machines are used as clients. In this scenario, clients can communicate via server.
- In this mode, client initiates communications.
- Client issues request to a server.
- Server replies or performs some service.
- In peer to peer architecture, Each of the host or instance of application program can function as both client and server simultaneously. Both of them has equivalent responsibilities and status.
- In this mode, any participant can initiate communication.
- Any device can generate a request.
- Any device may provide a response.
Figure 3. source: RF Wireless World
== Advantages and Disadvantages of the Client Server Architecture == 
- Advantages: Organizations often seek opportunities to maintain service and quality competition to sustain its market position with the help of technology where the client/server model makes an effective impact. Deployment of client/server computing in an organization will positively increase productivity through the usage of cost-effective user interfaces, enhanced data storage, vast connectivity and reliable application services. If properly implemented its capable of improving organizational behavior with the help of the knowledgeable worker-who can manipulate data and respond to the errors appropriately.
- Improved Data Sharing: Data is retained by usual business processes and manipulated on a server is available for designated users (clients) over an authorized access. The use of Structured Query Language (SQL) supports open access from all client aspects and also transparency in network services depict that similar data is being shared among users.
- Integration of Services: Every client is given the opportunity to access corporate information via the desktop interface eliminating the necessity to log into a terminal mode or another processor. Desktop tools like spreadsheet, power point presentations etc can be used to deal with corporate data with the help of database and application servers resident on the network to produce meaningful information.
- Shared Resources amongst Different Platforms: Applications used for client/server model is built regardless of the hardware platform or technical background of the entitled software (Operating System S/W) providing an open computing environment, enforcing users to obtain the services of clients and servers (database, application, communication servers).
- Inter-Operation of Data: All development tools used for client/server applications access the back-end database server through SQL, an industry-standard data definition and access language, helpful for consistent management of corporate data. Advanced database products enable user/application to gain a merged view of corporate data dispersed over several platforms. Rather than a single target platform this ensures database integrity with the ability to perform updates on multiple locations enforcing quality recital and recovery.
- Data Processing capability despite the location: We are in an era which undergoes a transformation of machine-centered systems to user-centered systems. Machine-centered systems like mainframe, mini-micro applications had unique access platforms and functionality keys, navigation options, performance and security were all visible. Through client/server users can directly log into a system despite of the location or technology of the processors.
- Easy maintenance: Since client/server architecture is a distributed model representing dispersed responsibilities among independent computers integrated across a network, it’s an advantage in terms of maintenance. It’s easy to replace, repair, upgrade and relocate a server while clients remain unaffected. This unawareness of change is called as encapsulation.
- Security: Servers have better control access and resources to ensure that only authorized clients can access or manipulate data and server-updates are administered effectively.
- Disadvantages (compared to peer-peer networks)
- Overloaded servers: When there are frequent simultaneous client requests, servers severely get overloaded, forming traffic congestion. But in a P2P network adding more nodes will increase its bandwidth since it’s calculated as the sum of bandwidths of each node in the network.( slideshare 2011)
- Impact of centralized architecture: Since its centralized if a critical server fails, client requests are not accomplished. Therefore client/server lacks robustness of a good P2P network (resources are distributed among many nodes).
- What is Client Server Architecture? Techopedia
- Explaining Client Server Architecture Britannica
- The Purpose of Client/Server Architecture StudyMafia
- What are the Characteristics of a Client-Server Architecture? Lia
- What is the Three-tier Client Server Architecture? IBM Knowledge Center
- What is the difference between Client-Server and Peer to Peer Network Architectures? Roshan Ragel
- The Advantages and Disadvantages of the Client Server Architecture ND Liyanage
- A Client-Server Architecture for Rich Visual History Interfaces Richard M. Salter
- Client/Server: Past, Present and Future George Schussel
- Client/Server Architecture in the ADAMS Parallel, Object-Oriented Database System Russell F. Haddleton, John L. Pfaltz (UVA)
- A Client-Server Architecture for an Instructional Environment based on Computer Networks and the Internet Jacques Guidon, Samuel Pierre
- What is Client Server Scalable Architecture? & Benefits of Surveon Client Server Scalable VMS Framework Surveon
- Software Architecture
- Enterprise Architecture
- Software Development Life Cycle (SDLC)
- Software Architecture Analysis Method (SAAM)
- Software Design
- Software-Defined WAN (SD-WAN)
- Software Archeology
- Software Configuration Management (SCM)
- Software Factory
- Software Development Effort Estimation
- Software Non-functional Assessment Process (SNAP)
- Software Project Management
- Software Prototyping
- Software Sizing
- Software Visualization
- IT Governance
- IT Strategy (Information Technology Strategy)