advanced

Backward compatibility

Protect independent deployment, сохраняя old consumers working, пока producers и consumers roll out в разное время.

Producers могут deploy раньше consumers и наоборот. Backward compatible changes позволяют старым consumers читать новые messages (ignore unknown fields), новым — старые (defaults для missing fields). Forward compatibility — зеркальная забота о producers.

На интервью: ломает ли rename JSON field compatibility; optional fields и schema evolution rules.

Типовые ошибки: strict deserialization на unknown fields; удаление enum value; ужесточение validation на server до обновления clients.

Компромисс — гибкость против сложности: знайте, когда достаточно более простого пути.

Чеклист:

  • Ignore unknown при read; optional new fields при write.
  • Не переиспользуйте field numbers или semantic meaning.
  • Тест old producer с new consumer и наоборот.
  • Согласуйте добавление enum и status values.