Size: a a a

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

2020 August 18

VS

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

OS

Oleg Soroka in Архитектура ИТ-решений
Andrei Moiseev
До такого масштаба не все доходят. Ну и монорепа - это не обязательно один репозиторий на всю компанию. Основная идея - не плодить репозитории без особой необходимости.
Есть ещё другая основная идея - не объединять репозитории без особой  необходимости
источник

VS

Vladislav 👻 Shishkov... in Архитектура ИТ-решений
Vladislav 👻 Shishkov
Монорепа, на то и монорепа, что там все. Ну и насчет размера, как пример, репа svn на 70к+ коммитов уже занимает порядка 20гб места на диске и 70% этого места не код, а метаданные репы...
Чтобы было понятно, 70к коммитов команда из 5 человек забила за 6-7 лет, боюсь представить, что могут сделать 150 человек за пару лет...
источник

A

Alex in Архитектура ИТ-решений
Vladislav 👻 Shishkov
Монорепа, на то и монорепа, что там все. Ну и насчет размера, как пример, репа svn на 70к+ коммитов уже занимает порядка 20гб места на диске и 70% этого места не код, а метаданные репы...
Выбирая svn, вы выбираете систему с избыточностью данных. Это не к монорепе притензия, а к выбору svn.
источник

VS

Vladislav 👻 Shishkov... in Архитектура ИТ-решений
Не спорю, но проблема монореп от смены системы vcs не меняется
источник

F

Foxcool in Архитектура ИТ-решений
не совсем понятно, зачем это все. Если нужно согласовывать межсервисную коммуникацию, то есть версионирование апи, например
источник

F

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

A

Alex in Архитектура ИТ-решений
У меня вот с монорепой стрельнул следующий момент.
В монорепе лежат исходники одной системы, которая запроектирована как набор микросервисов.
Ввиду того, что весь код в одном месте, разработчики в какой-то момент решили завести "общую либу" для микросервисов и таким образом ушли от "дублирования", например, DTO классов для запросов между микросервисами. И пошло-поехало. Спустя полтора года получили очень большую общую либу, список зависимостей, которой перешагнул за пару сотен.

Простота такого решения навеяна именно монорепой, хоть и не является причиной такого бедствия.
источник

П

ПашМиш in Архитектура ИТ-решений
Alex
У меня вот с монорепой стрельнул следующий момент.
В монорепе лежат исходники одной системы, которая запроектирована как набор микросервисов.
Ввиду того, что весь код в одном месте, разработчики в какой-то момент решили завести "общую либу" для микросервисов и таким образом ушли от "дублирования", например, DTO классов для запросов между микросервисами. И пошло-поехало. Спустя полтора года получили очень большую общую либу, список зависимостей, которой перешагнул за пару сотен.

Простота такого решения навеяна именно монорепой, хоть и не является причиной такого бедствия.
Я видел точно такое же с мультирепой, прям вот слово в слово)
источник

АЛ

Алексей Лосев... in Архитектура ИТ-решений
при архитектурном надзоре таких вещей можно избегать, но времени на этот самый архитектурный надзор, вечно не хватает :)
источник

П

ПашМиш in Архитектура ИТ-решений
Как только появляется некий common или util, он быстро превращается в монорему и заодно в колхоз
источник

F

Foxcool in Архитектура ИТ-решений
Alex
У меня вот с монорепой стрельнул следующий момент.
В монорепе лежат исходники одной системы, которая запроектирована как набор микросервисов.
Ввиду того, что весь код в одном месте, разработчики в какой-то момент решили завести "общую либу" для микросервисов и таким образом ушли от "дублирования", например, DTO классов для запросов между микросервисами. И пошло-поехало. Спустя полтора года получили очень большую общую либу, список зависимостей, которой перешагнул за пару сотен.

Простота такого решения навеяна именно монорепой, хоть и не является причиной такого бедствия.
Сейчас как раз за подобными гениями поддерживаем пачку распределенных монолитов. Везде некий колхозный core модуль с вкоряченным туда логгером, драйверами бд, либами работы с очередями и прочими получателями параметров
источник

F

Foxcool in Архитектура ИТ-решений
Какие-то сервисы застряли на старой версии этой либы. какие-то типа более актуальный.

Ну и да, приколачивает к одному стеку. Нельзя при разработке или рефакторинге отдельного сервиса куда-то переехать на что-то более удобные или менее глючное. Как в монолите надо устраивать рефакторинг на всю систему практически
источник

П

ПашМиш in Архитектура ИТ-решений
Foxcool
Какие-то сервисы застряли на старой версии этой либы. какие-то типа более актуальный.

Ну и да, приколачивает к одному стеку. Нельзя при разработке или рефакторинге отдельного сервиса куда-то переехать на что-то более удобные или менее глючное. Как в монолите надо устраивать рефакторинг на всю систему практически
А что мешает рядом с основной монорепой сделать репу с отдельным сервисом на нужном стеке?
источник

F

Foxcool in Архитектура ИТ-решений
у нас не монорепа. Я про кейс, когда команда пилит "велосипедный фреймворк" свой
источник

LV

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

Простота такого решения навеяна именно монорепой, хоть и не является причиной такого бедствия.
Не думаю, что монорепа тому причина)
источник

LV

Leonid Vygovskiy in Архитектура ИТ-решений
Foxcool
Какие-то сервисы застряли на старой версии этой либы. какие-то типа более актуальный.

Ну и да, приколачивает к одному стеку. Нельзя при разработке или рефакторинге отдельного сервиса куда-то переехать на что-то более удобные или менее глючное. Как в монолите надо устраивать рефакторинг на всю систему практически
О да, знакомо)) Пришлось заказчику отдавать две версии исходников такой либы.
источник

F

Foxcool in Архитектура ИТ-решений
сколько погромиста не корми, он все равно свой фреймворк велосипедит :D
источник

RS

Rinat Shigapov in Архитектура ИТ-решений
Не велосипедит, а творит.
источник

PD

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