Клиент-серверная архитектура — это модель взаимодействия между компонентами в сети, где клиент запрашивает услуги или ресурсы, а сервер их предоставляет. Это фундаментальная концепция в современных веб- и мобильных приложениях.
Основные компоненты
1. Клиент
- Инициирует запросы (например, браузер или мобильное приложение).
- Примеры:
- Веб-браузер (Chrome, Firefox).
- Мобильное приложение (iOS/Android).
- Десктопная программа (например, почтовый клиент).
2. Сервер
- Обрабатывает запросы и возвращает ответы.
- Типы серверов:
- Веб-сервер (Apache, Nginx) — отдаёт HTML/CSS/JS.
- API-сервер (Node.js, Django) — обрабатывает REST/gRPC запросы.
- База данных (PostgreSQL, MongoDB) — хранит и управляет данными.
3. Протоколы взаимодействия
- HTTP/HTTPS — для веб-запросов.
- WebSocket — для двусторонней связи (чаты, уведомления).
- TCP/IP — низкоуровневая передача данных.
Как это работает?
sequenceDiagram
Client->>Server: HTTP GET /api/users (Запрос)
Server->>Database: SELECT * FROM users (Получение данных)
Database-->>Server: Данные пользователей
Server-->>Client: JSON-ответ (200 OK)
Пример кода
// Клиент отправляет запрос к серверу
fetch('https://api.example.com/users')
.then(response => response.json())
.then(data => console.log(data));
Плюсы клиент-серверной архитектуры
- Масштабируемость: Серверы можно масштабировать независимо от клиентов.
- Безопасность: Логика и данные хранятся на сервере.
- Кроссплатформенность: Клиенты могут быть на любых устройствах.
Минусы
- Зависимость от сети: Без интернета клиент может стать бесполезным.
- Нагрузка на сервер: При большом числе клиентов требуется балансировка.
Где применяется?
- Веб-сайты (например, интернет-магазины).
- Мобильные приложения (соцсети, банкинг).
- Облачные сервисы (Google Drive, Slack).
Резюмируем:
клиент-серверная архитектура — это разделение обязанностей, где клиент отвечает за интерфейс, а сервер — за логику и данные. Понимание этой модели критично для тестирования API, нагрузки и безопасности.