# 04 — Взаимодействие компонентов

← [Главная](../README.md)

## Цель раздела

Понять **паттерны связи** между частями облачного приложения: синхронные вызовы, асинхронные очереди, event-driven архитектура и **контракты API**.

## Предварительно

- [03 — Проектирование](../03-proektirovanie/README.md)

## Время

**12–18 часов** на весь раздел

---

## Страницы раздела

| № | Тема | Время | Ссылка |
|---|------|-------|--------|
| 1 | Синхронные вызовы | 3–4 ч | [sinhronnye-vyzovy.md](sinhronnye-vyzovy.md) |
| 2 | Асинхрон и очереди | 3–4 ч | [asinhron-i-ocheredi.md](asinhron-i-ocheredi.md) |
| 3 | Event-driven | 3–4 ч | [event-driven.md](event-driven.md) |
| 4 | Контракты API | 3–5 ч | [kontrakty-api.md](kontrakty-api.md) |

```mermaid
flowchart TB
  Sync[Синхрон HTTP/gRPC] --> Choice{Нужен ответ сразу?}
  Choice -->|Да| Sync
  Choice -->|Нет| Async[Очередь]
  Async --> ED[События Pub/Sub]
```

---

## Контрольная точка КТ-2

Для сценария **«оформление заказа»** или **«поделиться списком»** опишите:

- что делается **синхронно** в HTTP;
- что уходит в **очередь**;
- какое **событие** публикуют другие сервисы.

См. [карту пути](../00-karta-puti/README.md).

---

## Критерии выбора паттерна

| Вопрос | Склонность |
|--------|------------|
| Клиент ждёт результат в том же запросе? | Sync |
| Допустима задержка секунды/минуты? | Async |
| Несколько независимых реакций на факт? | Event-driven |
| Нужна строгая согласованность двух БД? | Осторожно с событиями; Saga |

---

## Самопроверка раздела

1. Назовите минусы цепочки sync-вызовов A→B→C→D.  
2. Чем событие отличается от команды в очереди?  
3. Что такое breaking change в API?

---

## Дальше

→ [Синхронные вызовы](sinhronnye-vyzovy.md)
