В Golang моя самая любимая возможность — это работать в монорепозитории, использовать общие пакеты, при этом собирать разные сервисы, в которых будет ровно тот функционал, который ты определил для сервиса. Это прям божественно!
Вот например один из проектов, который надеюсь когда-нибудь попадет в прод:
- Общие компоненты лежат в internal/shared
- API-контракты в yaml-файлах конкретного домена, которые можно переиспользовать
- Транспортный слой отделен от бизнес-логики
- Конфигурация для сервиса - в домене, при этом наследуется от общей конфигурации
А ключевое — нет дублирования кода между микросервисами. Хочешь поделиться логикой? Просто создаешь пакет и импортируешь его где нужно.
При этом Go делает такой подход невероятно простым — не нужны никакие хитрые пакетные менеджеры, все из коробки. Все локально, все под рукой, а система модулей Go сама разруливает зависимости.
Сборка тоже приятная — каждая папка cmd/* становится отдельным сервисом со своей точкой входа. Хочешь новый сервис? Просто добавь еще одну директорию в cmd.
Микросервисы без микроболи — вот что такое монорепозиторий на Go!
А вы используете монорепозитории? Поделитесь опытом в комментариях!
#golang #монорепо #микросервисы #разработка #архитектура
Post #322
403

- 👍 8
- ❤ 1
- 🤔 1