Команда заказов переименовала поле в событии. Изменение кажется незначительным: смысл не изменился, код отправителя компилируется. Но аналитика и уведомления получили сообщения нового формата и перестали их понимать. Причём отправитель может даже не узнать о поломке сразу.
В событийной системе зависимости не исчезают — они переходят в контракты сообщений. Schema Registry помогает управлять формальными схемами и их версиями. Однако хороший формат ещё не гарантирует, что разные команды одинаково понимают смысл события.
Что именно хранит реестр
Реестр схем сохраняет описание структуры сообщений, их версии и правила совместимости. Продюсер и потребитель могут проверить, ожидается ли поле, допустимо ли его отсутствие и можно ли читать новую запись старой версией приложения.
Правила совместимости различаются. В одном случае новый читатель должен понимать старые сообщения, в другом — старый читатель должен переживать новые. Для системы с сохранённой историей событий оба направления могут иметь значение, но выбирать режим нужно осознанно.
Тип поля прежний, значение — уже нет
Допустим, поле status остаётся строкой. Раньше «confirmed» означало, что заказ принят, а теперь команда использует его только после оплаты. Формальная схема не изменится, проверка пройдёт, а склад может начать отгрузку не в тот момент.
Поэтому бизнес-важные события требуют не только совместимости форматов, но и стабильной семантики: что точно произошло, какие гарантии есть у источника и какие действия потребитель вправе запускать на основании этого факта.
Как менять контракт без общего дня перехода
Безопасный вариант часто выглядит не как резкая замена поля, а как промежуточный период. Источник добавляет новое необязательное поле, потребители учатся его понимать, затем постепенно перестают использовать старое. При нарушающем совместимость изменении может потребоваться новая версия события или отдельный тип сообщения.
Тут нужны владельцы и знание реальных потребителей. Валидация схемы способна остановить плохой формат в CI, но не умеет самостоятельно договориться с командой партнёрского сервиса о переносе интеграции.
Когда дополнительный реестр оправдан
Если сообщений немного и отправитель знает всех получателей, правила можно контролировать тестами контрактов и договорённостями. Новый сервис хранения схем тогда может стать ещё одним обязательным инфраструктурным компонентом без заметной пользы.
Когда команд и независимых потребителей много, формальная проверка совместимости перед выпуском изменений действительно снижает риск незаметной поломки. Но она не заменяет наблюдение за обработкой сообщений и бизнес-результатом.
Schema Registry защищает структуру договорённости. За её смысл всё равно отвечают люди.