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.