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