Из события убрали поле, и три чужих сервиса упали после релиза
Сервис заказов публикует событие order_paid в JSON. Команда решила, что поле customer_email там больше не нужно, и удалила его. Про потребителей события знали смутно. После релиза упали сервис писем, аналитика и CRM — все читали это поле.
Какой подход предотвратил бы это?
- Считать схему события контрактом: изменения только совместимые, удаление — через версию
- Перейти с JSON на XML — там схема обязательна
- Потребители должны были подписаться на изменения кода сервиса заказов
- Публиковать в каждое событие полную копию заказа со всеми полями
