Client-Server Architecture
Business Scenario
Scenario: A small online banking platform requires a centralized database to effectively manage user
accounts, transactions, and security.
Research & Design
Research
How the Pattern Works: Client-server architecture operates on the principle that clients (user interfaces)
request services from a centralized server (database). The server processes these requests and returns
results. In this setup:
● Clients handle user interaction and interface design.
● Server manages data storage and business logic.
Typical Use Cases: This architecture is common in:
● Online banking platforms
● E-commerce applications
● Enterprise resource planning (ERP) systems
Benefits:
1. Centralized Control Over Data: All data is stored in one location, ensuring consistency and easy
management.
2. Simplified Maintenance and Updates: Changes can be made centrally without needing to
update individual client applications.
3. Enhanced Security: Controlled access to the server increases data protection.
Challenges:
1. Single Point of Failure: If the server fails, all services become unavailable.
2. Potential Bottlenecks: High traffic may overwhelm the server, slowing down response times.
Design a Solution
Key Components:
1. Client Applications:
○ Web/Mobile Applications: Browser-based interfaces for users to perform banking
operations.
2. Application Server:
○ Responsible for processing client requests, applying business logic, and managing user
sessions.
○ Acts as the intermediary between clients and the database server.
3. Database Server:
○ Centralized storage for user data, transaction records, and security credentials.
○ Supports transactions, queries, and ensures data integrity.
4. API Gateway:
○ Manages communication between clients and the application server.
○ Provides a single entry point for client requests, enabling load balancing and security
measures.
Interaction Between Components
1. Client Requests:
○ Users initiate actions through client applications (e.g., logging in, checking balances).
○ These actions generate requests that are sent to the application server via API calls.
2. Application Server Processing:
○ The application server receives and processes requests according to business rules.
○ For example, a login request prompts verification of credentials against stored data.
3. Database Queries:
○ If data access is required, the application server queries the database server.
○ Retrieves necessary data (e.g., user balance, transaction history) or updates records
(e.g., logging a new transaction).
4. Response to Clients:
○ The application server sends the results back to the client applications.
○ Clients present the data to users, providing real-time feedback and updates.
Scalability, Reliability, and Other Non-Functional Requirements
1. Scalability:
○ Implement load balancers to distribute incoming requests across multiple application
servers, accommodating growth in user demand.
2. Reliability:
○ Utilize database replication for backup and recovery, ensuring data availability in case of
server failure.
3. Security:
○ Encrypt data in transit and implement robust authentication and authorization
mechanisms to safeguard user information.
Presentation
Overview of the Pattern
● Definition of Client-Server Architecture: A computing model where clients request
services from a centralized server that processes and manages data.
● Roles of Clients and Servers: Clients are responsible for user interactions, while
servers handle data storage and business logic.
Business Scenario Solution
● Efficient Management of Banking Operations: The centralized design allows
seamless access to user accounts and transaction data, simplifying operations.
● User Experience Improvements: Clients benefit from a unified interface, fast
responses, and real-time data, enhancing overall satisfaction.
Benefits and Challenges
Advantages:
● Centralized Data Management: Ensures data consistency and integrity, facilitating
easier management.
● Simplified Maintenance: Centralized updates minimize disruption for users.
● Enhanced Security: Centralized control allows for more effective security measures.
Challenges:
1. Single Point of Failure:
○ Proposed Solution: Implement redundancy through clustering and failover
strategies.
2. Potential Bottlenecks:
○ Proposed Solution: Use load balancing to distribute client requests evenly across
multiple servers.
3. Scalability Concerns:
○ Proposed Solution: Design the architecture to support easy addition of servers
and database instances as needed.
Explanation of the Layout:
1. Client Applications:
○ Represented at the top, showcasing both web and mobile applications.
○ This layer interacts with the API Gateway to send user requests.
2. API Gateway:
○ Acts as the bridge between the client applications and the application server.
○ Handles incoming requests and routes them appropriately.
3. Application Server:
○ Positioned below the API Gateway.
○ Contains components for:
■ User Interface (UI): Handles the display of data and user interactions.
■ Business Logic: Processes requests and applies the necessary
business rules.
4. Client Requests:
○ Depicted as the flow of requests (e.g., login, transactions) moving from the client
applications to the application server.
5. Database Server:
○ Located below the application server, this is where the centralized database
resides.
○ Responsible for storing all user data, transaction records, and security
credentials.
6. Data Storage:
○ The final layer represents the database itself, emphasizing the storage of critical
information.
Flow of Interaction:
● Users interact with the client applications, which send requests to the API Gateway.
● The API Gateway forwards requests to the application server.
● The application server processes these requests by executing business logic and
querying the database server.
● The database server retrieves or updates the necessary information and sends
responses back through the application server to the API Gateway.
● Finally, the API Gateway returns the responses to the client applications, where the
users can view the information thru user interface.