Как организовать код для нескольких проектов Go? - PullRequest
0 голосов
/ 04 октября 2018

Итак, у меня есть несколько веб-сервисов, написанных на Go, и я планирую написать еще несколько.Все сервисы находятся в своих собственных папках за пределами GOPATH и используют Glide и Dep для управления зависимостями от производителя (я собираюсь в ближайшем будущем преобразовать их в модули Go 1.11).

Проблема, с которой я сталкиваюсь, заключается в том, чтомного дублирования кода в этих сервисах, что делает вещи хрупкими.Особенно код, связанный со структурой базы данных и доступом.Я хотел бы переместить весь доступ к базе данных и другой код, относящийся к конкретной службе, куда-нибудь в общую папку и импортировать его в службы по мере необходимости.

Как правильно это сделать?Я экспериментировал с различными структурами проекта, но всегда сталкивался с одной из двух проблем.

Если я использую модули Go 1.11, мне приходится делить go.mod и go.sum между всеми сервисами.Это удлиняет процесс сборки для отдельных служб, поскольку каждая сборка службы должна извлекать все зависимости из всех служб в одном и том же месте.По мере того, как число моих услуг будет расти, эта проблема будет усугубляться.

Если я установлю GOPATH так, чтобы мой сервисный код оказался внутри, я столкнулся с несколькими проблемами.Службы являются частью более крупного проекта, написанного на другом языке, и являются частью репозитория управления версиями для проекта.В настоящее время эта структура имеет вид

- project
    - services
        - svc1
        - svc2
    - othercode
    - morecode

Если я установлю GOPATH для служб, мне придется переместить отдельные каталоги служб в отдельный src, я получу дополнительные каталоги pkg и bin и каждый пакет Go, который когда-либо получу.хочу, чтобы установка заканчивалась где-нибудь в дереве ~ / project / services.Я бы предпочел продолжать использовать зависимости от поставщиков.

Как организовать свой код, чтобы избежать любого из перечисленных выше сценариев и при этом иметь возможность импортировать общий код из нескольких служб?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...