Какие знаешь виды архитектур

«Какие знаешь виды архитектур» — вопрос из категории Архитектура, который задают на 70% собеседований Системный Аналитик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Монолитная архитектура
Все компоненты приложения (UI, бизнес-логика, БД) объединены в единую кодовую базу. Простота развертывания, но сложность масштабирования.

Микросервисная архитектура
Приложение разбито на независимые сервисы, каждый со своей логикой и БД. Гибкость, но сложность управления.

Событийно-ориентированная (Event-Driven)
Компоненты обмениваются событиями через брокер (Kafka, RabbitMQ). Пример:

# Producer
producer.send('user_created', {'user_id': 123})

# Consumer
@consumer.subscribe('user_created')
def handle_event(data):
    print(f"User created: {data['user_id']}")

Сервис-ориентированная (SOA)
Сервисы предоставляют API для взаимодействия (часто через SOAP/REST). Устаревает в пользу микросервисов.

Слоистая (N-Layer)
Разделение на слои (Presentation, Business, Data). Например, MVC.

Гексагональная (Ports & Adapters)
Ядро приложения изолировано, взаимодействие через адаптеры (HTTP, БД).

Serverless
Логика выполняется в облачных функциях (AWS Lambda). Плата за использование, а не за сервер.