본문으로 건너뛰기

Protobuf 호환성(Compatibility) 유지하기

호환성이 유지되는 경우


  • package는 타입의 이름 충돌을 방지하기 위한 namespace로 사용되므로 변경되면 호환성이 깨집니다.
  • 필드가 추가/삭제되는 경우 이전 버전과 새 버전은 상호 호환됩니다.

삭제된 필드에 reserved 사용하기

Protobuf는 필드 번호를 기준으로 데이터를 해석하므로 삭제된 필드 번호를 재사용하는 경우 문제가 생길 수 있습니다. 개발 측면에서는 삭제된 필드 명을 재사용하는 것으로 디버깅하기 어려운 오작동 사례를 만날 수 있습니다. 이를 방지하기 위해 reserved를 사용하여 필드 번호를 예약할 수 있습니다.

message Foo {
reserved 2, 15, 9 to 11;
reserved "foo", "bar";
}