Как работает обратная совместимость в gRPC

«Как работает обратная совместимость в gRPC» — вопрос из категории Сети, который задают на 23% собеседований Golang Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

gRPC обеспечивает обратную совместимость через механизм версионирования protobuf-сообщений. Основные принципы:

  1. Правило добавления полей: новые поля добавляются с уникальными тегами, старые клиенты их игнорируют.
  2. Удаление полей: помечаются как reserved или deprecated вместо физического удаления.
  3. Семантическое версионирование: мажорные изменения требуют новой версии сервиса.

Пример совместимого изменения:

message User {
  string id = 1;
  string name = 2;
  // Добавлено в новой версии
  optional string email = 3; 
}

Старые клиенты продолжат работать, просто не получат поле email. Новые клиенты могут проверять его наличие через has_email().