теория
Теперь соберём приёмы, которые превращают правило «только добавляй» в спокойные будни.
Почему это про каждую выкатку. Сервис обновляют не мгновенно, а по одному инстансу — это . Значит, минуты, а то и часы в проде крутятся обе версии разом: часть инстансов уже на новой схеме, часть ещё на старой, и все читают одну очередь сообщений. Забыл про совместимость на миг — половина флота падает прямо во время релиза.
Как читать чужое, чтобы тебя не ломали добавки. Приём называется : бери из сообщения только те поля, что нужны тебе, а незнакомые молча пропускай. Тогда любое новое поле соседа — не твоя забота. Ровно этого не хватало обработчику Заказов: он спотыкался о поле, которое мог бы просто не заметить.
Как ловить несовместимость до прода, а не в чате у Леры. хранит все версии схем в одном месте и при каждой выкатке проверяет: совместима ли новая версия со старой? Не совместима — сборка красная, релиз не уезжает. Дисциплина перестаёт держаться на памяти людей и становится автоматической.
И главное, что стоит унести из модуля: формат — Protobuf, Avro, JSON — это вторичный выбор. Первичен договор: только добавляй, читай терпимо, проверяй совместимость машиной. Сервисы, которые деплоятся независимо, держатся не на общем коде, а на общем — и бережно эволюционирующем — контракте.