Size: a a a

Архитектура ИТ-решений

2020 August 17

LV

Leonid Vygovskiy in Архитектура ИТ-решений
Вы забываете, что сложность моно репозитория гугла на порядки солиднее ваших.
источник

LV

Leonid Vygovskiy in Архитектура ИТ-решений
Тут надо брать процесс компании и смотреть, что лучше работает. Плюс есть же промежуточные варианты - репозиторий на подсистему, например. Мой опыт показывает простое правило - надо отдавать исходники заказчику - лучше моно. Ведется продуктовая разработка внутри компании - можно и разные репозитории.
источник

RS

Rinat Shigapov in Архитектура ИТ-решений
Roman Tsirulnikov
Интересно узнать, стоит ли ввязываться в подобное, есть ли профит? На первый взгляд, сложность внедрения инструментов вроде Bazel отталкивает.
Bazel не связан с монорепозиторием, он может работать с несколькими репозиториями.

С монорепой можно менять/deprecate'ить API библиотеки и сразу же рефакторить использующий ее клиентский код в других проектах монорепозитория. В случае отдельных репозиториев на Gitlab можно настроить триггеры для запуска CI процессов на downstream проектах и отслеживать несовместимые изменения.
источник
2020 August 18

AL

Alexander Luchkov in Архитектура ИТ-решений
Roman Tsirulnikov
Google ради этого разработали свою систему контроля версий и свою систему сборки (Bazel). Полная копия репозитория, как они сами пишут, имеет размер 86TB. На бюджетные ноутбуки явно не войдет без спец средств частичного клонирования такого репозитория.
А можно вопрос зачем именно монореп, и почему такое решение?
источник

AL

Alexander Luchkov in Архитектура ИТ-решений
Почему спрашиваю, у меня ребята пробовали тоже думать за монореп или сабмодули. Но даже на проектах с двумя десятками разрабов очень быстро от этого отказались в пользу систем управления зависимостями типа conan.
источник

PD

Phil Delgyado in Архитектура ИТ-решений
Leonid Vygovskiy
Я долго время был ярым противником монорепозиториев, потому как деплой отдельных сервисов может быть проще. Но сейчас отхожу от этого.
Хм. У меня уже многие годы монорепа, но при этом все сервисы деплоятся независимо. В чем проблема?
источник

PD

Phil Delgyado in Архитектура ИТ-решений
Oleg Soroka
Технический вопрос (моно или разные) - вообще дело десятое, на фоне выборов оргструктуры и структуры работы
Ну, из IDE проще работать с одним репозитарием (обычно). Можно выкрутится, но в среднем легче.
Ну и следить за историей фич по одной репе попроще.
Для выкладки, тестирования и т.п. - разницы нет, конечно.
источник

PD

Phil Delgyado in Архитектура ИТ-решений
Alexander Luchkov
Почему спрашиваю, у меня ребята пробовали тоже думать за монореп или сабмодули. Но даже на проектах с двумя десятками разрабов очень быстро от этого отказались в пользу систем управления зависимостями типа conan.
Так системы управления зависимостями нужны в любом случае, что монорепа, что не моно.
Мне удобно, что в монорепа проще поддерживается в IDE, можно делать глобальные поиск и замены, фичи изолированы в одном бранче в одном репозитарии (и не нужно думать о синхронизации состояния бранчей по разным репозитариям), проще делать CI/CD системами типа gradle.
источник

AM

Andrei Moiseev in Архитектура ИТ-решений
Phil Delgyado
Так системы управления зависимостями нужны в любом случае, что монорепа, что не моно.
Мне удобно, что в монорепа проще поддерживается в IDE, можно делать глобальные поиск и замены, фичи изолированы в одном бранче в одном репозитарии (и не нужно думать о синхронизации состояния бранчей по разным репозитариям), проще делать CI/CD системами типа gradle.
+
источник

LV

Leonid Vygovskiy in Архитектура ИТ-решений
Phil Delgyado
Хм. У меня уже многие годы монорепа, но при этом все сервисы деплоятся независимо. В чем проблема?
В поддержке версий. Как вы решаете историю на уровне git с тем, что у вас один сервис имеет версию 1.2.3, а другой - 4.5.6?
источник

AM

Andrei Moiseev in Архитектура ИТ-решений
Leonid Vygovskiy
В поддержке версий. Как вы решаете историю на уровне git с тем, что у вас один сервис имеет версию 1.2.3, а другой - 4.5.6?
А зачем нужно раздельное версионирование сервисов? И, если уж на то пошло - зачем их вообще версионировать?
источник

LV

Leonid Vygovskiy in Архитектура ИТ-решений
вопрос хорош. Не знаю, делал по привычке. Возможно, когда одна prod площадка, то и не нужно.
источник

LV

Leonid Vygovskiy in Архитектура ИТ-решений
одна prod площадка и быстрая доставка изменений на prod.
источник

OS

Oleg Soroka in Архитектура ИТ-решений
Phil Delgyado
Ну, из IDE проще работать с одним репозитарием (обычно). Можно выкрутится, но в среднем легче.
Ну и следить за историей фич по одной репе попроще.
Для выкладки, тестирования и т.п. - разницы нет, конечно.
Чем именно проще? Что то, что это - в результате тупо древовидная структура директориев на диске, причём, при желании, идентичная
источник

OS

Oleg Soroka in Архитектура ИТ-решений
Я уже давно написал небольшой скриптик, который тупо клонирует на диск содержимое всего гитлаба, со всей гитлабовской  встроенной иерархией, ибо даже как-то лень индивидуально с каждым "проектом" разбираться.
И SourceTree и VS Code прекрасно импортируют рекурсивно все репы от общего корня.
Чем это отличается от монорепы, кроме того, что общий корень ничем не захламлён, а за каждым потоком коммитов можно следить избирательно - не знаю
источник

MG

Maksym Govorischev in Архитектура ИТ-решений
Andrei Moiseev
А зачем нужно раздельное версионирование сервисов? И, если уж на то пошло - зачем их вообще версионировать?
Версионирование сервисов нужно, если они выставляются в качестве api наружу. Как правило, чтобы не ломать клиентов, одновременно поддерживаются несколько версий api, потом со временем старые версии убираются
источник

NN

Nikita N in Архитектура ИТ-решений
гугл в честь пятилетия кубернетес сделал курс по нему бесплатным. Если вы хотели, но что-то мешало, то вот — https://inthecloud.withgoogle.com/kubernetes-training-offer/register.html
источник

VS

Vladislav 👻 Shishkov... in Архитектура ИТ-решений
Phil Delgyado
Так системы управления зависимостями нужны в любом случае, что монорепа, что не моно.
Мне удобно, что в монорепа проще поддерживается в IDE, можно делать глобальные поиск и замены, фичи изолированы в одном бранче в одном репозитарии (и не нужно думать о синхронизации состояния бранчей по разным репозитариям), проще делать CI/CD системами типа gradle.
Монорепа не проще поддерживается в ide. Как только репа разрастается, чтобы вам просто поработать с каким-то кодом, надо будет выключать анализаторы в ide и/или выкачивать лишние данные в большом количестве от левых зависимостей
источник

VS

Vladislav 👻 Shishkov... in Архитектура ИТ-решений
Ну и я молчу про то, сколько места будет это все занимать...
источник

AM

Andrei Moiseev in Архитектура ИТ-решений
Vladislav 👻 Shishkov
Ну и я молчу про то, сколько места будет это все занимать...
До такого масштаба не все доходят. Ну и монорепа - это не обязательно один репозиторий на всю компанию. Основная идея - не плодить репозитории без особой необходимости.
источник