Как стать автором
Обновить

Комментарии 17

Скажите, вот зачем вам в проект тащить конфиги, деплойменты и вообще все то что относиться к DevOps, во первых хранить конфиги рядом с проектом так себе идея, хранить примерный не рабочий конфиг конечно можно, да и обычный никто не запрещает, но есть критерии безопасности, внеся в конфиг что то важное можно это и закомитить ненароком.

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

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

По моему мнению в репозитории с кодом должен лежать только код, и документация к нему. А все что касается его доставки должно жить отдельно. Лично мое мнение мешать мух и котлет можно, если у вас демо проект для обучения или демонстрации возможностей или продукта. Тогда я не спорю, это удобно сам так делаю, прикладываю конфиги и композ файлы, так как изначально знаю что ссылку на проект получит мой коллега имеющий меньший опыт чем я, и для простоты работы для него сделано все вместе, так как он только обучается. Но когда у нас коммерческий проект имхо это лишнее, пусть разрабы пишут код а девопсы его катят...

Появится новая переменная, зависимая от окружения, часть конфигурации. Получается на каждое такое изменение нужно будет дергать девопса или лезть в другую репу?

Для этого полно решений, например Ansible Tower и передача переменных из варсов

Почему нет. Если придерживаться современного gitops подхода, то все так и будет. Один репозиторий с кодом и докерфайлами под каждый микросервис или монорепо под все. Другой с хельм чартами и манифестами для деплоя.

Как раз очень удобно иметь deployment-ы рядом. А еще часто для отладки локально, создается локальный деплоймент. То есть в проекте лежит все что к нему относится. И деплойменты - это примеры конфигурации. Особенно если новый человек смотрит на проект, он получает максимум информации о нем.

Go хорош как раз тем, что в нем нету этой дичи с навязыванием структуры директорий, как в Django, RoR, разных PHP и JS фреймворках.

Если часть функционала не используется - образуются ненужные директории, а иногда файлы с плейсходерами.
Чуть в сторону отойти надо - и уже приходится вкручивать костыли в эту красивую структуру.

Не надо заниматься усложнением и пытаться формализовать то, что это не требовало

у фреймворков в ГО, по типу gorm и тому подобных тоже нет таких требований

НЛО прилетело и опубликовало эту надпись здесь

ну если отталкиваться от определения что есть фреймворк то конечно нет, и не будет наверное ибо противоречит идеологии, но то для чего обычно используют фреймворки есть отдельными либами, gorm, mux и прочие

Ну так и автор зачем-то в язык притягивает то, чем изготовители фреймворков занимаются. В этом и суть, что Go — это не фреймворк, и натягивать какую-то формальную структуру смысла нет, даже если вы пишете бэкенд, а не консольное приложение, например.


И что характерно, даже Go фреймворки не требуют какую-то жёсткую привязку к структуре директорий.

Я думаю, это имеет смысл в среде, где у вас много микросервисов.

Хочется зайти в репозиторий и чтобы все сразу было понятно. Унификация в таком ключе - это благо, имхо. Автор предлагает один из способов, как это делают у него в компании (или он лично).

С версии Go 1.4 определен механизм, который не позволяет импортировать пакеты вне данного проекта, если они находятся внутри /internal.

Вот прямо внутрь компилятора встроена проверка, что в пути к импортируемому пакету не встречается папка internal?

Привет! это реализовано на уровне языка. Есть специальный go-инструмент, который распознает internal каталог и предотвращает импорт одного пакета другим, если оба не имеют общего предка. Более подробная инфа здесь - https://docs.google.com/document/d/1e8kOo3r51b2BWtTs_1uADIA5djfXhPT36s6eHVRIvaU/edit

Ссылка на него уже есть в статье.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий