Из каких основных компонентов состоит клиент-серверная архитектура?

«Из каких основных компонентов состоит клиент-серверная архитектура?» — вопрос из категории Архитектура, который задают на 10% собеседований QA Тестировщик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Клиент-серверная архитектура базируется на разделении обязанностей между двумя ключевыми компонентами, взаимодействующими по сети:

  1. Клиент (Client): Инициатор запроса. Это приложение (веб-браузер, мобильное или десктопное приложение), которое запрашивает данные или услуги. Его задачи: UI/UX, отправка запросов и обработка ответов.
  2. Сервер (Server): Обработчик запроса. Это программа (запущенная на физическом или виртуальном хосте), которая ожидает запросы, выполняет бизнес-логику, работает с данными и возвращает клиенту результат.

Пример взаимодействия по HTTP:

Запрос от клиента (браузера) к серверу:

GET /api/products/123 HTTP/1.1
Host: api.shop.com
Accept: application/json

Ответ от сервера клиенту:

HTTP/1.1 200 OK
Content-Type: application/json

{
  "id": 123,
  "name": "Wireless Mouse",
  "price": 29.99
}

Дополнительные элементы в реальных системах:

  • База данных (для постоянного хранения состояния).
  • Прокси-сервер / балансировщик нагрузки (для маршрутизации и оптимизации трафика).
  • Кэш (например, Redis, для ускорения доступа к частозапрашиваемым данным).
  • Брокер сообщений (например, RabbitMQ, Kafka, для асинхронной коммуникации).