Size: a a a

Software Design/Architecture/Zen

2021 August 04

AV

Alexey Vetrov in Software Design/Architecture/Zen
Почему это не хотите в отдельную библиотеку выкинуть, если есть возможность, конечно?

Несколько репозиториев, где есть один "общий" - выглядит странновато.

Как вариант еще деплоить это все с разных веток с разными энвами и держать грубо говоря одну ветку "master", где будет лежать ваш "костяк".

Насколько вообще проекты рознятся?
источник

AV

Alexey Vetrov in Software Design/Architecture/Zen
Ну и у вас вообще есть уверенность, что вот этот костяк потом не придется менять только для одного проекта какого-нибудь?
источник

R

Roman in Software Design/Architecture/Zen
Через неделю это будет два сорвешенно разных продукта с общей копипастой. Именно копипастой, а не "переиспользованием" и другими хорошими словами. Обновления с меинстрима получать не получится, поэтому они разойдутся как в море корабли. Если у разработчиков будут доступы ко всем (хотя бы > 1 репо), то это также нещадно будет плодить костыли методом всё той же копипасты из одного репо в другую.
источник

T

Tim in Software Design/Architecture/Zen
+
источник

R

Roman in Software Design/Architecture/Zen
У меня был опыт подобного. Ребятки решили взять опенсорс проект и кастомизировать. Через несколько лет количество энтропии было настолько велико (потому что не они его писали с нуля и что там как работает никто не знал), что простейшая фича типа подкрутить круд затягивалась на месяцы
источник

R

Roman in Software Design/Architecture/Zen
Ну и конечно же об обновлении с меинстрима и хоть какой-то поддержки речи идти не может. Даже security fixes.
источник

А

Антон in Software Design/Architecture/Zen
Допускаю что проблема могла быть и в ребятках
источник

T

Tim in Software Design/Architecture/Zen
Выглядит как потенциальные вилы для себя же в будущем, если честно.
источник

R

Roman in Software Design/Architecture/Zen
Проблема может быть и в ребятках. Но если заменить ребяток на идеальных синьоров, которые не ошибаются и пишут идеальный код, что изменится? Это по прежнему будет два разных проекта и все "плюсы", которые хочет извлечь топикстартер из этой темы внезапно испарятся
источник

R

Roman in Software Design/Architecture/Zen
Если форк не мержится в меинстрим и вообще не eventual consistent, то это не форк, а совершенно другой продукт
источник

А

Антон in Software Design/Architecture/Zen
Хз, у меня есть свой форк моногейма с фичами и я спокойно его обновляю с мастера, не имея никаких проблем. Возможно проблема в том что надо разбираться как оно работает, и все же не размазывать ведение этого репо на много людей
источник

ИМ

Игорь Майоров... in Software Design/Architecture/Zen
Все что вы говорите — абсолютная правда, конечно же. Какие решения предложите? На что вообще взглянуть в такой ситуации?

Если очень упростить задачу, то представьте себе общий калькулятор чего нибудь (зарплаты/kpi/итд). Нужно сделать на основе этого много разных с разной формулой/полями.

Если бы речь дейстительно шла про зарплату, то конечно бы я все сделал через БД. Но речь не про нее.

@deliro правильно ли я понимаю, что такой workflow как я хочу возможен, только если всегда держать репозитории в состоянии готовности смержится с основным репо?
источник

А

Антон in Software Design/Architecture/Zen
да, последнее предложение выглядит самым компромиссным вариантом
источник

R

Roman in Software Design/Architecture/Zen
Варианты решений:
1. Сервисы (и, простихоспади, микросервисы), где будет та логика, которая подразумевалась быть общей среди "форков"
2. Модули, распространяемые как библиотеки

У каждого есть свои плюсы/минусы. Например, сервисов может быть настолько много, что их оркестрация, дискавери и всё такое будет очень сложной. Библиотеки — это всегда проблемы с версионированием и их обновлениями, интеграцией в "популярные" фреймворки или вообще написание их на нескольких языках
источник

R

Roman in Software Design/Architecture/Zen
А, ну и выше предлагали фичафлаги. Тоже рабочий вариант, но цикломатически очень сложный, т.к. нужно учитывать все возможные комбинации флагов
источник

R

Roman in Software Design/Architecture/Zen
Которых будет 2**количество-фичафлагов
источник

R

Roman in Software Design/Architecture/Zen
Понятно, что большинство фичафлагов независимы, но всё же придётся предусматривать коллизии фичафлага "расчитывать всю зп в долларах, переводя остальную валюту в доллар и обратно" с фичафлагом "расчитывать все налоги в рублях", которые могут быть добавлены в разное время (или наоборот одновременно) разными людьми, которые друг про друга даже не знают
источник

ИМ

Игорь Майоров... in Software Design/Architecture/Zen
Спасибо!

Или я плохо знаю микросервисную архитектуру, но вроде как подтягивать разный layout внутри фронтенда на абстрактном js-фреймворке другим микросервисом невозможно.

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

SP

Sergey Protko in Software Design/Architecture/Zen
Второй вариант - будет больно
источник

ИМ

Игорь Майоров... in Software Design/Architecture/Zen
Осознаю
источник