Что такое интеграция
Аналогия: интеграция — когда два магазина договорились работать вместе: один принимает заказ, другой доставляет, третий шлёт SMS. Клиент видит один сервис, а за кулисами участвуют несколько.
Интеграция — это связь между системами, чтобы они обменивались данными и запускали действия друг у друга.
Примеры из жизни продукта:
- сайт ↔ платёжная система;
- заказ ↔ сервис уведомлений (email / SMS / push);
- CRM ↔ склад;
- мобильное приложение ↔ бэкенд.
Снаружи пользователь нажал кнопку. Внутри могли пройти 2–5 обменов между разными системами.
Поэтому баг «на кнопке» часто на самом деле баг в связи между системами.
API в интеграциях
Аналогия: API — как телефон с понятным списком команд: «создай платёж», «проверь статус», «верни деньги».
В интеграциях API — основной способ сказать другой системе: «сделай вот это и ответь».
Обычно это выглядит так:
- наш сервис отправляет запрос;
- внешняя система отвечает сразу: успех / ошибка / «принято в работу»;
- мы сохраняем результат и показываем его пользователю.
Пример
оплата через API
[ Наш сайт ]
→ POST /payments «создай платёж на 1500 ₽»
[ Платёжный сервис ]
← 201 + payment_id
[ Наш сайт показывает: «Ожидаем оплату» ]
Что проверять
- Ушёл ли запрос?
- Какой код ответа: 200/201 или 4xx/5xx?
- Совпадают ли данные (сумма, id заказа, статус)?
- Что видит пользователь при ошибке?
Подробнее про API и коды ответов — на странице HTTP / API / REST.
Очереди
Аналогия: очередь — как окошко в банке с талончиками. Вы оставили задачу в ряд, вам не обязательно ждать у стойки: работу возьмут по порядку, когда освободится сотрудник.
Очередь нужна, когда действие не обязательно делать «прямо сейчас в этом же запросе».
Например:
- отправить письмо;
- построить тяжёлый отчёт;
- уведомить несколько сервисов о новом заказе;
- повторить попытку, если внешняя система временно недоступна.
Пример
асинхронно
1. Заказ создан
2. В очередь положили задачу: «отправь письмо»
3. Сервис писем забрал задачу позже
4. Письмо ушло
Пользователь уже видит «Заказ создан», письмо может прийти через несколько секунд
Чем очередь отличается от обычного API-вызова
- API «здесь и сейчас» — ждём ответ сразу.
- Очередь — положили задачу и идём дальше; результат будет позже.
Если письмо/SMS «не пришло сразу», это не всегда баг. Иногда так и задумано: задача ещё в очереди. Баг — если задача потерялась, застряла или падает снова и снова.
Webhooks
Аналогия: webhook — как «перезвоните мне сами». Вместо того чтобы каждые 10 секунд спрашивать «оплата прошла?», платёжка сама пишет вам: «оплата прошла».
Webhook — это когда внешняя система сама присылает вам уведомление о событии на ваш адрес (URL).
Типичный сценарий оплаты:
- пользователь начал оплату;
- наш сервис ждёт;
- платёжка позже вызывает наш webhook: «платёж успешен» или «платёж отклонён»;
- мы обновляем статус заказа.
Пример
webhook от оплаты
Сначала:
[ Сайт ] → создал платёж через API
Потом внешняя система сама пишет нам:
[ Платёжка ] → POST /webhooks/payment
«payment_id=77, status=success»
[ Сайт ] обновляет заказ на «Оплачен»
Что важно знать новичку
- Webhook приходит позже, не в момент клика.
- Он может прийти повторно (дубликат) — система должна это пережить.
- Если наш endpoint недоступен, событие может потеряться или прийти с задержкой.
Где интеграции обычно ломаются
- Таймаут — внешняя система слишком долго отвечает.
- Неверный формат данных — ожидали число, пришла строка; не хватает поля.
- Ошибка авторизации — ключ/токен просрочен или нет прав.
- Дубли — одно и то же событие пришло дважды (двойное списание/письмо).
- Потеря сообщения — задача не попала в очередь или webhook не дошёл.
- Рассинхрон статусов — у оплаты «успех», у заказа всё ещё «ожидает».
| Механизм |
Когда используют |
Что смотреть в тесте |
| API |
Нужен ответ сейчас |
Запрос, код, тело ответа, ошибка на UI |
| Очередь |
Можно сделать позже |
Задача создалась, обработалась, нет «вечного» застревания |
| Webhook |
Внешняя система сообщает о событии |
Событие дошло, статус обновился, дубли не ломают логику |
Мини-практика на 15–20 минут
- Возьмите сценарий: «пользователь оплатил заказ и получил письмо».
- Разложите шаги: что идёт через API, что может уйти в очередь, где возможен webhook.
- Придумайте 3 поломки: таймаут оплаты, письмо не ушло, webhook пришёл дважды.
- Для каждой поломки напишите: что увидит пользователь и где искать причину.
- Своими словами объясните разницу: API = спросил и получил ответ; очередь = задача на потом; webhook = нам написали сами.
Если объяснение получается без сложных слов — день 8–9 пройден.