От хаоса к порядку: управление состояниями и консистентность в интеграциях

Через тернии к...

Доклад принят в программу конференции

Мнение Программного комитета о докладе

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

Целевая аудитория

* Разработчики, которые работают с интеграциями внешних сервисов; * те, кто хочет проектировать универсальные решения для многоканальной обработки данных; * архитекторы и тимлиды, заинтересованные в переиспользуемых компонентах.

Тезисы

Любая интеграция с внешними сервисами — это борьба с хаосом:
* у каждого внешнего клиента свой API, свой формат данных и свои бизнес-правила;
* данные приходят с задержками, иногда задним числом, форматы меняются без предупреждения, а гарантий консистентности чаще всего нет.
Как в таких условиях построить систему, которая не развалится?

В этом докладе я расскажу:
- как мы превратили смену — нашу основную сущность — в стейт-машину, чтобы четко контролировать ее жизненный цикл;
- как работает универсальный адаптер, который позволяет подключать новых внешних клиентов без рефакторинга;
- как мы обеспечили консистентность данных, используя очереди, контроль состояний, отказоустойчивые механизмы;
- какие ошибки мы совершили и что можно было сделать лучше.

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

🔹 В IT с 2017, в Go — с 2022.
🔹 Разрабатывает продуктовые решения.
🔹 Работал в Ozon (личный кабинет продавца) и Mail.ru (безопасность, сделал х5 к автовосстановлению паролей).
🔹 Сейчас в Яндекс.Смене — строит надежные интеграции с поставщиками смен.

Видео