Как у вас устроены protobuf-контракты: где лежат, как правите, как компилируете, где хранится сгенерированный код?
Ответ от нейросети
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-контрактами.