Sobes.tech
Back to questions
Senior
2

Как у вас устроены protobuf-контракты: где лежат, как правите, как компилируете, где хранится сгенерированный код?

Companies where asked
X5

Answer from AI

sobes.tech AI

В нашей практике protobuf-контракты организованы следующим образом:

  • Где лежат: Все .proto файлы хранятся в отдельном репозитории или в выделенной директории внутри монорепозитория, чтобы обеспечить единый источник правды для всех сервисов.

  • Как правим: Изменения в .proto файлах проходят через код-ревью и согласование, так как они влияют на множество сервисов. Используем версионирование контрактов, чтобы избежать несовместимостей.

  • Как компилируем: Для генерации кода используем официальные инструменты protoc с плагинами для Go (protoc-gen-go). Компиляция интегрирована в CI/CD пайплайн, чтобы автоматически обновлять сгенерированный код при изменениях в .proto.

  • Где хранится сгенерированный код: Сгенерированный Go-код хранится рядом с исходными .proto файлами или в отдельных директориях внутри сервисов, которые их используют. В некоторых случаях сгенерированный код публикуется как отдельный артефакт или библиотека, чтобы другие сервисы могли подключать его как зависимость.

Пример команды генерации:

protoc --go_out=./gen --go_opt=paths=source_relative \
       --go-grpc_out=./gen --go-grpc_opt=paths=source_relative \
       path/to/file.proto

Такой подход обеспечивает единообразие, удобство поддержки и минимизирует ошибки при работе с protobuf-контрактами.