TGViewer
Гуманный аналитик Гуманный аналитик @humane_analyst · 413 subscribers
Post #373 139
😡 Не сломаться по щелчку пальцев

Сегодня начну с истории, которая произошла несколько лет назад. Коллега сидел над разбором инцидента: смотрел документацию, изучал логи и то и дело задумчиво повторял: "Компатибл…" Но в какой-то момент он воскликнул: "Компатибл-компатибл… Нифига не компатибл!" 🪄

Оказалось, что причиной проблемы было нарушение совместимости форматов данных. То ли какое-то из ранее предусмотренных полей было удалено, то ли переименовано — детали стёрлись в памяти.

Но я вспомнил эту историю неспроста. В последние дни занимаюсь решением, в котором используется несколько независимых кластеров Kafka от разных команд. И надо заранее подумать, как уберечь систему от таких поломок.

Вопросы освежаю сам для себя и заодно хочу тезисно зафиксировать и поделиться с вами. Погнали! 😂

-ˋˏ✄┈┈┈┈┈┈┈┈┈┈┈┈┈┈

В распределённых системах выделяют два базовых подхода: обратная совместимость (backward compatibility) и прямая совместимость (forward compatibility). А когда нарушаются правила контракта, пора поднимать версию.


🔶 Версионирование

Версионирование — это единственный способ договориться об изменениях в контракте между независимыми сервисами. Без него вы никогда не узнаете, кто именно пишет или читает данные по устаревшим правилам. Но это не всё. 🤷‍♂️

Даже если весь код лежит в одном репозитории и им владеет одна команда, брокер сообщений всегда создаёт временную "дыру" 🕐 между записью и чтением. Сервис-писатель может быть переведён на новую схему сегодня, а старый сервис-читатель дотянет до следующего релиза только через месяц.

✅ Что с этим делать
Идентификатор схемы (Schema ID) или номер версии формата передаётся в заголовках сообщения или кладётся в полезную нагрузку. Де-факто стандарт для Kafka — проверка через Schema Registry, но финальная реализация зависит от архитектурных решений конкретной компании.


🔶 Совместимость

▌ 🔙 Обратная совместимость (Backward)
Приложение на новой версии должно уметь читать данные, созданные по старой схеме.

✅ Что можно делать со схемой:
— удалять поля;
— добавлять новые необязательные поля;
— делать обязательные поля необязательными.

❗️ Кто обновляется первым: читатели (консьюмеры). Писатели (продюсеры) могут подождать.

▌ 🔜 Прямая совместимость (Forward)
Приложение на старой версии должно уметь работать с данными, созданными по новой схеме.

✅ Что можно делать со схемой:
— добавлять новые поля;
— удалять необязательные поля;
— делать необязательные поля обязательными.

❗️ Кто обновляется первым: писатели (продюсеры). Читатели (консьюмеры) могут подождать.

#интеграции #kafka #api #сервисы #форматы #данные
  • 😎 3
  • ❤ 2
  • 🔥 2
  • 👍 1
More from @humane_analyst
  1. Oct 1, 2026⚡ TechCommunity Fest 2026 (TCF2026) Я сегодня на TechCommunity Fest. Событие не для широко…
  2. Sep 28, 2026📕 "Ikigai: The Japanese Secret to a Long and Happy Life" by Héctor García and Francesc Mi…
  3. Sep 24, 2026Друзья, поздравляю всех с Днём системного аналитика! 🥂 Пусть все требования будут чёткими…
  4. Sep 21, 2026📣 Выложены записи трека "Архитектура и анализ" CodeFest'16. Смотрим! 📺 #события #codefes…
  5. Sep 16, 2026🤖 Новая веха: заказчик принëс нейрослоп На днях произошло событие, которое без преувеличе…
  6. Sep 10, 2026Моё настроение сегодня как нельзя лучше представлено на этом ролике. #юмор #методыуправлен…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →