Интерактивная шпаргалка: Архитектура ПО

Визуальное руководство по клиент-серверной архитектуре, монолитам, микросервисам и балансировщикам нагрузки.

Клиент-серверная архитектура

Это модель, в которой задачи распределены между поставщиками услуг (серверами) и заказчиками (клиентами). Клиент отправляет запрос, сервер его обрабатывает, при необходимости обращается к базе данных, и возвращает клиенту ответ.

Клиент Сервер БД HTTP-запрос HTTP-ответ SQL-запрос Ответ от БД

Тонкий и толстый клиент

Разделение зависит от того, где выполняется основная логика обработки данных: на стороне клиента или на стороне сервера.

Тонкий клиент

Вся или почти вся логика выполняется на сервере. Клиент отвечает только за отображение данных. Пример: веб-сайты.

Клиент(Отображение)Сервер(Вся логика)

Толстый клиент

Значительная часть логики выполняется на самом клиенте. Сервер часто используется только для хранения данных. Пример: десктопные игры, Photoshop.

Клиент(Вся логика)Сервер(Хранение)

Монолит и микросервисы

Два фундаментально разных подхода к построению серверной части приложения, которые напрямую влияют на процесс тестирования.

Монолитная архитектура

Всё приложение — от интерфейса до базы данных — собрано в один большой, единый блок. Проще в разработке и развертывании на старте.

Монолитное приложениеПользовательский интерфейсБизнес-логикаДоступ к данным

Микросервисная архитектура

Приложение состоит из набора небольших, независимых сервисов, каждый из которых отвечает за свою бизнес-задачу.

API GatewayСервис AСервис BСервис C

Балансировщики нагрузки

Это специальное устройство или программа, которая распределяет входящий сетевой трафик между несколькими серверами "за ним". Это обеспечивает отказоустойчивость и повышает производительность.

КлиентБалансировщик(Load Balancer)Сервер 1Сервер 2Сервер 3

Уровни балансировки

  • Сетевой (L4 - IP): Перенаправляет трафик на основе IP-адресов и портов, не заглядывая в содержимое пакетов. Очень быстрый. Клиент и сервер работают напрямую после установки соединения.
  • Транспортный (L4 - TCP): Работает как прокси, полностью обрабатывая TCP-соединение. Балансировщик и сервер работают без прямой связи с клиентом, что позволяет выполнять более сложные манипуляции с трафиком.
  • Прикладной (L7 - HTTP): "Самый умный" уровень. Анализирует содержимое запросов (например, URL, заголовки, cookie) и может перенаправлять их на разные серверы в зависимости от типа контента (например, картинки на один сервер, API-запросы на другой).