|
Поддержка приложения для нескольких клиентов
|
|||
---|---|---|---|
#18+
Ситуация следующая, есть приложение, которое внедрено у нескольких заказчиков. Соответственно возникает ситуация, когда необходимо внести изменения в приложение для конкретного заказчика и в тоже самое время нам необходимо поддерживать основную ветку проекта. Я думаю о том, чтобы выделить код каждого заказчика в отдельную ветку в системе контроля версий,а в ветке main разрабатывать основную версию проекта, время от времени проводя слияние этих веток. Руководство же считает, что у нас не должно быть много веток, а только одна. Вместо этого, мы должны писать универсальный код, который будет работать для всех заказчиков, но у каждого заказчика есть отличия в бизнесе и писать универсальный код - это сделать систему более сложной и тяжело поддерживаемой. Как вы решаете подобного типа задачи? Возможно есть какие - то отработанные методики поддержки проекта для нескольких заказчиков, о которых я просто не знаю. Подскажите куда копать. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.01.2010, 07:52 |
|
Поддержка приложения для нескольких клиентов
|
|||
---|---|---|---|
#18+
Sarkand, есть какие - то отработанные методики поддержки проекта для нескольких заказчиков Многокомпонентная архитектура или полиморфизм на уровне клиента. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.01.2010, 11:20 |
|
Поддержка приложения для нескольких клиентов
|
|||
---|---|---|---|
#18+
SarkandЯ думаю о том, чтобы выделить код каждого заказчика в отдельную ветку в системе контроля версий,а в ветке main разрабатывать основную версию проекта, время от времени проводя слияние этих веток. Руководство же считает, что у нас не должно быть много веток, а только одна. Вместо этого, мы должны писать универсальный код, который будет работать для всех заказчиковПо разному делают... Но отдельная ветка для каждого заказчика - это умножение работы на количество заказчиков. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.01.2010, 16:06 |
|
Поддержка приложения для нескольких клиентов
|
|||
---|---|---|---|
#18+
alexeyvg По разному делают... Но отдельная ветка для каждого заказчика - это умножение работы на количество заказчиков. Понятно, что каждый это делает по - разному, но наверняка есть какие - то best практики, как это сделать быстро, просто и с минимальными проблемами. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.02.2010, 11:11 |
|
Поддержка приложения для нескольких клиентов
|
|||
---|---|---|---|
#18+
Sarkandalexeyvg По разному делают... Но отдельная ветка для каждого заказчика - это умножение работы на количество заказчиков. Понятно, что каждый это делает по - разному, но наверняка есть какие - то best практики, как это сделать быстро, просто и с минимальными проблемами.У каждого своя best практика :-) Задачи то у всех разные. Наверное, если куча заказчиков и изменения маленькие, то можно использовать такие варианты: - пытаться объединить фичи (т.е. предлагать их для всех). - добавлять индивидуальные фичи для каждого в общий код, применение регулировать настройками. - добавлять индивидуальные фичи в индивидуальные бранчи и делать отдельные сборки. Это всё таки меньше работы, чем вообще вести отдельные проекты. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.02.2010, 14:18 |
|
Поддержка приложения для нескольких клиентов
|
|||
---|---|---|---|
#18+
делать отдельные сборки - сомнительно можно внедрить аджасменты, которые ты будешь включать или не включать или лучьше их привязать сразу к пользователю а не к фирме. т.к. со временем директор захочет одно а главбух другое ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2010, 10:59 |
|
Поддержка приложения для нескольких клиентов
|
|||
---|---|---|---|
#18+
SarkandРуководство же считает, что у нас не должно быть много веток, а только одна. Имхо - очень верно считает. К тому же.... допустим, дела у вас пойдут хорошо, и заказчиков станет двести или триста.... SarkandКак вы решаете подобного типа задачи? Для простых и более-менее универсальных случаев - настройка. Для всяких вращений по месту - от базового класса делается наследник "для этого клиента", ну а настройка показывает, какой класс использовать. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2010, 01:58 |
|
Поддержка приложения для нескольких клиентов
|
|||
---|---|---|---|
#18+
забавно - час назад спрашивал своего тимлида про это же самое, вернее почему так много бранчей (всего 4, но с архаичными cvs и даже svn это уже много). бранчи - большой геморрой, но как быть когда система крутится у нескольких клиентов, и не каждый клиент хочет какие-либо новые фичи? И немного другая ситуация - как быть когда один клиент хочет конкретные фичи? Если у кого-нибудь есть способ разруливать подобные ситуации, пожалуйста поделитесь. Заранее скажу, система весьма и весьма гибкая, настройки в принципе в БД, т.е. система может на лету менять поведение (при смене класса реализации какой-либо бизнес-логики). ... |
|||
:
Нравится:
Не нравится:
|
|||
23.12.2010, 06:51 |
|
Поддержка приложения для нескольких клиентов
|
|||
---|---|---|---|
#18+
Sarkand, Есть у меня опыт такой и вот, что я скажу. Делать разные ветки это самоубийство. Возможно, какое-то время это и будет удаваться поддерживать ценой неимоверных усилий, но не думаю, что очень долго. Довольно быстро, я боюсь, "слияние" станет проходить очень непросто, а местами будет выливаться в переписывание всех веток. Вообщем, делайте одну ветку и настройками приложения/сборщика, как, собственно, все и советуют. Kostya Ilyinov, Если хочет конкретные фичи - добавляйте в основную ветку, но включайте только для одного клиента, какие проблемы? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.12.2010, 10:13 |
|
Поддержка приложения для нескольких клиентов
|
|||
---|---|---|---|
#18+
HauerSarkand, Есть у меня опыт такой и вот, что я скажу. Делать разные ветки это самоубийство. Возможно, какое-то время это и будет удаваться поддерживать ценой неимоверных усилий, но не думаю, что очень долго. Довольно быстро, я боюсь, "слияние" станет проходить очень непросто, а местами будет выливаться в переписывание всех веток. Вообщем, делайте одну ветку и настройками приложения/сборщика, как, собственно, все и советуют. Kostya Ilyinov, Если хочет конкретные фичи - добавляйте в основную ветку, но включайте только для одного клиента, какие проблемы? Хехе интересная идейка - как я сразу не догадался :-) Сценарий:изначально есть один продукт, модуляризованный и гибконастраиваемый. Есть регион допустим А, где продукт успешно внедрен и эксплуатируется. В регионе А продолжается разработка, и на какой-либо момент времени, имелся продукт А1 с набором дополнительных функций (фич так сказать). Затем в регионе Б решают внедрить данный продукт - все легко и просто - тот же код, только разные настройки. Все работает прекрасно. В регионе А меняется законодательство, необходимо внедрить функциональность А2. Пользователя продукта А1 в регионе Б эти изменения не касаются, и соответственно внедрять какие-либо изменения в работающую (и приносящую деньги) систему никто не собирается (после внесения изменений систему нужно протестировать - зачем тестировать систему(тратить деньги) на неиспользуемый функционал?). Имеем - изменения для А2 должны быть изолированы от других регионов. Думаю дальнейший исход событий с 4 регионами и весьма различающейся конъюнктурой понятен. Уверен, мы не одни в такой ситуации, поэтому ход мыслей должен быть понятен. В идеальном мире с pluggable архитектурой конечно можно было инвестировать в еще более гибкую систему и т.д. и т.п. - но в реальном мире всегда есть камень преткновения, препятствующий использованию единого кода для разных регионов/инсталляций. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.12.2010, 03:09 |
|
Поддержка приложения для нескольких клиентов
|
|||
---|---|---|---|
#18+
Kostya IlyinovИмеем - изменения для А2 должны быть изолированы от других регионов. Думаю дальнейший исход событий с 4 регионами и весьма различающейся конъюнктурой понятен. Конечно. Кто-то начнёт извращаться и плодить геморрой с ветками, а кто-то сделает нормально 8326441 . ... |
|||
:
Нравится:
Не нравится:
|
|||
27.12.2010, 08:20 |
|
Поддержка приложения для нескольких клиентов
|
|||
---|---|---|---|
#18+
softwarer, не хотелось бы переходить на личности - я Вам изложил, вполне доступно думаю, имеющуюся ситуацию - а Вы мне про прописные истины тут рассказываете, наследование, нормальный подход и т.д. Уверен у нас эти принципы ООП используются, но как я уже сказал - в реальном мире все не так просто, и рефакторить работающую систему дело довольно затратное. Конечно, если бы у нас было хотя бы 50 клиентов - дело бы шло иначе, мы бы обязательно привлекли вас к проектированию архитектруры - а так приходится довольствоваться низкоквалифицированными выпускниками ПТУ. Хотел было посмотреть Ваше (не уверен на 100%) резюме ( http://softwarer.ru/resume.html) - но там 404 :-( ... |
|||
:
Нравится:
Не нравится:
|
|||
28.12.2010, 02:38 |
|
Поддержка приложения для нескольких клиентов
|
|||
---|---|---|---|
#18+
Kostya Ilyinov, чем больше я работаю, тем больше убеждаюсь, что искусство программирования - это в первую очередь искусство уместного применения прописных истин. Такого, что "обычный стиральный порошок", глядя на изначальную задачу думает "как сложно.. как делать-то?", а глядя на результат - "блин, как же всё просто, что ж я не догадался?". По 404 я бы не ожидал изменений в обозримом будущем, а коротко - в 2000-м году я впервые написал модуль, который учитывал не то что "один регион, другой регион", а детали каждого конкретного клиента. В результате в ту архитектуру уже после меня втянули ещё много-много что, и когда я последний раз заезжал туда, всё работало, все были довольны, и единственное, что потерялось - перестали сопровождать написанную мной программу ввода метаинформации, из-за чего были вынуждены вводить её sql-скриптами. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.12.2010, 11:30 |
|
Поддержка приложения для нескольких клиентов
|
|||
---|---|---|---|
#18+
softwarer, Большое спасибо за ваше так сказать напутствие (серьезно). Вы я вижу весьма умный человек и хороший программист в частности - поэтому думаю Вам будет интересно познакомиться (а может и не будет/а может и не познакомиться) с концепциями и терминами Time To Market, Technical Debt - думаю это прольет свет на разработку приложений для проклятого капитализма. Если интересно, могу дать чуть больше конкретики - думаю если не Вам, то сообществу будет весьма интересно. Имеем систему, позволяющую проводить базовые банковские операции при помощи обычного j2me телефона. Система успешно разработана под ключ так сказать для одного клиента. Затем успешно внедрена еще у нескольких - естественно с какими-то индивидульными доработками и потребностями. Все хорошо работает и весьма неплохоспроектировано. Есть точки расширения и другие механизмы тонкой и грубой настройки. Затем типовую систему внедряют в Индию - опять же с небольшими изменениями в настройках и т.д. Код везде один - отличаются лишь настройки. В Индии решают внедрить пилотный проект по использованию телефона для бронирования авиа/кинобилетов - на данный момент в других регионах эта функциональность не востребована - и вряд-ли когда-либо будет - так исторически сложилось - каждый занимается (весьма преуспевающе) своим делом. Имеем дилемму - точки расширения для данного сценария нет, необходимо вносить изменения в архитекуру одного из базовых модулей. Пути решения - либо вносить изменения в транк (главную ветку), и уговаривать всех клиентов обновлять систему(маловероятно) без измений функциональности (еще менее вероятно), либо отделяться от главной ветки и менять так сказать индийскую ветку. Да, возможно нужно было больше инвестировать в разработку архитектуры и предусмотреть все мыслимые и немыслимые, но требования бизнеса весьма жесткие - функциональность должна быть внедрена как можно раньше, иначе компания рискует потерять все инвестиции в бизнес-идею. Думаю сценарий весьма типовой - концепция технического кредита именно с таким прицелом и была сформулирована - это кредит, и необходимо платить проценты (подчас весьма высокие) - в нашем случае эти проценты гасятся геморроем во время слияний веток разработки. Сейчас планируем все вернуть на круги своя - ну а до тех пор - git нам в помощь :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
28.12.2010, 13:44 |
|
Поддержка приложения для нескольких клиентов
|
|||
---|---|---|---|
#18+
Kostya Ilyinov, насколько я понимаю, проблему Вы видите в "уговаривать всех клиентов менять версию". Уговорить - действительно проблема, вот только совершенно непонятно, нафига Вы считаете необходимым это делать. Сценарий очень прост: Индия захотела новую функциональность, вы разработали её, заджойнили в транк (если разрабатываете в ветках) и посадили под выключенную по умолчанию настройку. Оттестировали и отдали в Индию. Всё, Индия довольна, прочие клиенты вообще не затронуты. Теперь, допустим, Бангладеш захотел некоторое другое изменение, или появилась некая приятная для всех функциональность. Делаете это изменение, оно появляется в транке. Бангладеш и/или прочие желающие забирают. Де-факто в Бангладеш "внедряется" индийский код, на практике он лежит себе и спит, и никто кроме пытливых хакеров о нём не знает. Уговаривать никого не надо, в чём проблема - пока не ясно. Единственный момент, который я здесь вижу - не хотелось бы скачивать "клиентскую часть индийского кода" на телефоны тех пользователей, которые им никогда не воспользуются. Но для этого, надеюсь, у вас и так уже есть общее решение, а если нет - оно просто необходимо для развития платформы, имхо. При чём тут Time To Market и прочие красивые слова - пока не ясно, поскольку сценарий простой и не требует никаких дополнительных затрат. Ветвление действительно иногда нужно, причём поддержка нескольких параллельно эксплуатирующихся версий продукта - единственный по большому счёту случай, когда оно нужно стабильно на постоянку. И до тех пор, пока мы не Microsoft и не Oracle, имеет смысл сколь возможно его избегать, для чего стратегия "все изменения в текущей версии" - хороший инструмент. Локально отщепить ветку, имея в виду вскоре слить её с основной - да, можно, понимая её цену. Исправлять мелкие баги в текущем релизе, параллельно работая над новым - да, можно, хотя лично я считаю более правильным подходом частый выпуск релизов. Отщеплять ветку на каждого клиента и поддерживать их годами - застрелиться и не встать. В смысле, геморрой и стоимость подхода явно неадекватны. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.12.2010, 15:39 |
|
|
start [/forum/topic.php?fid=37&fpage=7&tid=1555487]: |
0ms |
get settings: |
12ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
35ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
55ms |
get tp. blocked users: |
2ms |
others: | 266ms |
total: | 407ms |
0 / 0 |