Виды архитектур¶
Архитектура — это структурный подход к построению приложения или системы, определяющий компоненты, их связи и взаимодействие. Ниже — основные типы архитектур.
Монолитная архитектура¶
Приложение — единый блок, все компоненты разрабатываются и развёртываются вместе.
-
Всё в одном: интерфейс, логика, БД.
-
Просто разрабатывать и тестировать.
-
Трудно масштабировать, менять и разворачивать частично.
Клиент-серверная архитектура¶
Разделение на клиента (UI) и сервера (логика + данные). Клиент делает запросы, сервер отвечает.
-
Пример: браузер ↔ веб-сервер.
-
Простая логика разделения.
-
Сервер — потенциальное узкое место.
Трёхуровневая архитектура¶
Клиент, логика приложения и БД — разделены по слоям.
-
Слои: Presentation → Business Logic → Data.
-
Улучшенная модульность и поддержка.
-
Увеличение сложности и количества связей.
Микросервисная архитектура¶
Приложение состоит из независимых сервисов, каждый решает свою задачу и взаимодействует через API.
-
Каждый сервис — самостоятельный модуль.
-
Масштабируемость, независимая разработка и развертывание.
-
Сложность в настройке, DevOps, мониторинге и взаимодействии.
Сервис-ориентированная архитектура (SOA)¶
Похожа на микросервисы, но с централизованным управлением (обычно через ESB — Enterprise Service Bus).
-
Взаимодействие через общие протоколы и стандарты (например, SOAP).
-
Повторное использование сервисов.
-
Зависимость от шины, высокая сложность и накладные расходы.
Событийно-ориентированная архитектура (EDA)¶
Компоненты обмениваются событиями, а не напрямую вызывают друг друга.
-
Публикация/подписка, очереди сообщений (Kafka, RabbitMQ).
-
Высокая асинхронность, слабая связность.
-
Трудность отладки и отслеживания потока данных.
Serverless (бессерверная архитектура)¶
Выполнение логики в виде функций по событию, без управления инфраструктурой.
-
Примеры: AWS Lambda, Azure Functions.
-
Платишь только за выполнение, высокая масштабируемость.
-
Ограничение по времени выполнения, холодный старт.
Чистая (Clean) архитектура¶
Разделение на слои с чёткими зависимостями, бизнес-логика в центре, вне зависимости от фреймворков.
-
Слои: Entities → Use Cases → Interface Adapters → Frameworks.
-
Тестируемость, независимость от технологий.
-
Требует времени на проектирование и соблюдение принципов.
Заключение¶
| Архитектура | Подходит для |
|---|---|
| Монолит | Простые или старые приложения |
| Клиент-сервер | Веб-приложения |
| Трёхуровневая | Приложения с чёткой логикой и БД |
| Микросервисы | Большие, распределённые системы |
| SOA | Корпоративные системы и интеграции |
| Событийная (EDA) | Реактивные и потоковые системы |
| Serverless | Лёгкие, триггерные задачи |
| Clean Architecture | Тестируемые и масштабируемые системы |