EVOLUTION OF CLIENT/SERVER ARCHITECURES

What is Client Server Architecture?

❉ It is defined as a form of distributed computing system since all the components execute their tasks independently without affecting each other.

❉ All the requests and services are delivered over a network or internet connection.

❉ There are 3 main components in Client Server computing.

  1. Client Process
  2. Server Process
  3. Middleware

Client

🔰 Client systems have many operations such as;

➣ User Interface Management.

➣ Accepting and checking the syntax of user inputs.

➣ Processing application logic.

➣ Generation of database requests and transmitting them to server.

➣ Passing response back to server.

Server

🔰 Server does operations such as;

➣ Accepting and processing database requests from client.

➣ Authorization checking.

➣ Make sure that integrity constraints are not violated.

➣ Perform necessary queries and transmit responses to clients.

➣ Providing recovery control.

➣ Providing concurrent database access.

Middleware

🔰 It delivers secure and transparent services to the users.

Types of Client Server Architectures

❉ There are many types of Client Server Architectures. Let us take a deep look at each of them.

1-Tier Architecture

🔵 One-tier architecture, which is also known as single-tier architecture is responsible for all client server configuration setting, data logic, UIs and business logic on a single platform.

🔵 Accessing the network while executing is not necessary.

🔵 This can be a better solution for small sites that does not have very high traffic demand which require effective resource utilization.

Ex: Simple desktop applications

Advantages of 1-Tier Architecture

🔺 Simple

🔺Working fast for a single user

🔺 Handling any network protocols is not needed

🔺 Cost effective

Disadvantages of 1-Tier Architecture

🔻 Security issues as everything is on one machine.

2-Tier Architecture

🔵2-Tier Architecture basically consists of two parts namely; a client tier and a server tier. But there is another protocol that bridges the gap between those 2 tiers.

🔵 This architecture is designed in a way where user feedback and validation are allowed to occur on the client side.

🔵 Usually, GUI code exists on the client host while the business logic exists on the server host.

Ex: Web Server

Advantages of 2-Tier Architecture

🔺 Easy to maintain and modify

🔺 Easy to design applications

🔺 Better user satisfaction

Disadvantages of 2-Tier Architecture

🔻 Expensive

🔻 Error prone

🔻 Time consuming

3-Tier Architecture

🔵 There are 3 layers in 3-tier architecture namely;

  1. Presentation layer (Client Tier)

➣ Input/output and interaction with the user.

➣ It is responsible for deciding how the data should be presented to the user

➣ Basic input validation can still be done here.

2. Application layer (Business Tier)

➣ Control access to data

➣ Responsible for processing

3. Database layer (Data Tier)

➣ Record transaction

➣ Ensure integrity of data.

🔵 When a client machine sends the request to server machine, the middle layer receives the request first, and the server obtains this request at the end. Therefore the response of server is received by middle layer first and then it is obtained by client machine.

🔵 All data logic and business logic are stored on the middleware.

Advantages of 3-Tier Architecture

🔺 Fast performance.

🔺 Improved Data security.

🔺 Hide database structure.

🔺 Reliable

🔺 Improvement in concurrency.

Disadvantages of 3-Tier Architecture

N-Tier Architecture

🔵 N-Tier Architecture, which is also referred to as Multitier Architecture can be considered as a scaled version of 3-tier architecture.

🔵 In this architecture, entire presentations, application processing, and data management functions are isolated from each other.

Ex: stock-trading system

Advantages of N-Tier Architecture

🔺 Improved availability

🔺Data integrity

Disadvantages of N-Tier Architecture

🔻 Hard to implement

Examples of Client Server Architecture

🔔 When considering in hardware side, a Web server acts is a high performance computer system that can host multiples websites. When considering in software side, a web server contains many components that control how web users access hosted files.

🔔 There are 2 types of web servers.

  1. Static Web Server — A static web server consists of a computer with an HTTP server where server sends its hosted files to your browser.
  2. Dynamic Web Server — It is a static web server along with some additional software where the application server updates the hosted files before sending content to your browser via the HTTP server.

Mail Servers

🔔 Sending and receiving all mails are done via Email servers. SMTP, IMAP, and POP3 can be known as some protocols used by Mail servers in order to send and receive emails

🔔 SMTP, that stands for Simple Mail Transfer Protocol helps to transfer electronic mail from one user to another. IMAP and POP3 aids in receiving all messages and handling all incoming mails.

File Servers

🔔 File servers are known as dedicated systems that enable users to access all files. Its execution is similar to a centralized file storage location and it can be accessed via various terminal systems.

DNS

🔔 DNS stands for “Domain Name Server” and it contains a huge database of several types of public IP addresses that link with their hostnames.

🔔 These types of server help to deliver resources such as files, directories, shared devices etc. to client terminals like PCs, smart phones, laptops etc.

Advantages of Client Server Architecture

♻️ Flexibility

♻️ Interoperability

♻️ Ease of application development

♻️ Scalability

♻️ User friendly

♻️ Accessibility

Disadvantages Client Server Architecture

〰️ Maintenance Cost

〰️ Complexity

〰️Can cause network congestion

〰️ Hardware / Software Cost

Monolithic Architecture

❉ As the name implies, in monolithic means, composed all in one piece.

❉ Monolithic applications are designed with the purpose of handling multiple related tasks.

❉ They are usually complex applications that are surrounded by various tightly coupled functions.

❉ Components of the Monolithic Architecture include;

🔰 Authorization

🔰 Presentation

🔰 Business logic

🔰 Database layer

🔰 Application integration

🔰 Notification module

Advantages of Monolithic Architecture

♻️ Easy to develop

♻️ Fast to develop

♻️ Easier to test

Disadvantages of Monolithic Architecture

〰️ Harder to scale.

〰️Complicated.

〰️ Difficult to adopt to new and advance technologies.

〰️ Hard to maintain.

Service Oriented Architecture

❉ Service Oriented Architecture is a design ideology was aimed at crossing platform boundaries (Standards, Different frameworks, different platforms) and Crossing trust boundaries such as exposure to the Internet and interacting with other organizations’ systems.

❉ It breaks an application down into a set of loosely coupled, highly-interoperable, interacting services.

❉ Principles used in Service Oriented Architecture include;

🔰 Loose Coupling: client can discover server’s supported protocols/formats and negotiate communication semantics.

🔰 Autonomous: runs independently of other services

🔰 Standards-based: interoperability among SOA services

🔰 Contract-based: ie: uses interfaces

🔰 Fine-grained: services should be small (higher cohesion)

🔰 Encapsulation: information hiding

🔰 Stateless: no ongoing commitment between client & service (this one causes issues)

Advantages of Service Oriented Architecture

♻️ Scalable

♻️ Reliable

♻️ Improved quality of code

♻️ Platform independent

♻️ Use of independent services

♻️ Configuration Flexibility

Disadvantages of Service Oriented Architecture

〰️ Extra Overloading

〰️ High bandwidth server

Microservices Architecture

❉ A microservices architecture involves development of modular services deployed independently as loosely coupled services, tied together through application integration.

❉ It focuses on decomposing an application into single-function modules with well-defined user interfaces in order to communicate with other available services.

❉ A Microservice possess its own database.

❉ Microservices contains following components;

🔰 Identity Providers

🔰 Clients

🔰 Databases

🔰 API Gateway

🔰 Messaging Formats

🔰 Service Discovery

🔰 Static Content

Advantages of Microservices Architecture

♻️ Services can be implemented independently

♻️ Focuses on single business capability

♻️ Easy to be understood by a developer

♻️ Capable of using any type of technologies

♻️ Consistent and available

♻️ Easy Fault isolation

♻️ Permits frequent software releases

Disadvantages of Microservices Architecture

〰️Time consuming

〰️ Hard to track data

〰️ Increased memory consumption

〰️ Inter-service communication mechanism must be implemented by developers.

References