Строгий protobuf-контракт в gRPC обеспечивает типизацию, защищает от сбоев в интеграциях и... Может ограничивать. Например, когда транзитный сервис приходится обновлять ради изменений, нужных только конечному пользователю.
Привет, это Владислав Свиридов из команды product-facade. В хабрастатье я разобрал три механизма protobuf, которые помогают гибко обходить ограничения без отказа от контрактов. Это:
🔵Unknown Fields — сервис не знает часть полей, но может сохранить и передать их дальше;
🔵google.protobuf.Any — сервис может передавать сообщения разных типов через один контракт;
🔵dynamicpb — сервис работает с protobuf-сообщением, имея только его runtime-дескриптор.
Если в вашей микросервисной архитектуре скорость эволюции схем опережает скорость перевыпуска сервисов, рекомендую познакомиться с этими способами прямо сейчас 📖
#ozontech_habr #go
Привет, это Владислав Свиридов из команды product-facade. В хабрастатье я разобрал три механизма protobuf, которые помогают гибко обходить ограничения без отказа от контрактов. Это:
🔵Unknown Fields — сервис не знает часть полей, но может сохранить и передать их дальше;
🔵google.protobuf.Any — сервис может передавать сообщения разных типов через один контракт;
🔵dynamicpb — сервис работает с protobuf-сообщением, имея только его runtime-дескриптор.
Если в вашей микросервисной архитектуре скорость эволюции схем опережает скорость перевыпуска сервисов, рекомендую познакомиться с этими способами прямо сейчас 📖
#ozontech_habr #go