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

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

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

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

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

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

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

Тезисы

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

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

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

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

Видео