Цистерный вопрос
Sep. 14th, 2010 11:48 amЕсли тут есть большие начальники, системные архитекторы, инженеры по интеграции и т.п. - вопрос к вам.
Как вы знаете, в свободное от ЖЖ и от работы в госпитале время, я помаленьку ковыряюсь в своей цистерне, которую я слудил, спаял, вкопал и обслуживал с 1997 года. Цистерна у меня нестандартная, сработанная исключительно под нашу заправку. Причем ее порывались сменить уже бессчетное количество раз. Не вру - каждый новый начальник Чукотки заправки приходил и первым делом заявлял - это чё у вас тут?! Цистерна что ли? НЕСТАНДАРТНАЯ??? В урну ее, срочно заменить на стандартную, чтобы "все как у людей"! Один раз в 1999 году даже посадили около 30 человек (не вру) на полгода - спроектировать, разработать, запустить в отладку, отработать и запустить в производство замену. А нас тогда было 7 человек на все про все. Мы вечерами и ночами проектировали третью версию своей существующей цистерны, а днями работали на сопровождении и всех изменениях, которые шли потоком. А они - 30 человек - только на разработке.
Когда мы выдали свою версию, их группу распустили. Тихо, мирно, ничего не говоря, потратив нехилые бабки, которые вполне могли нас сделать миллионерами. Но мы съели пуд соли и столько же дерьма вместо получения денег. Зато мы обрели бешеный опыт и поняли что такое мы сотворили, когда нас оставили, а тех 30 уволили. Но не в этом главное, главное, что наша цистерна жива с 1997 года, в то время как все приходившие начальники уже давно убраны. Перед тем как перейти от преамбулы к амбуле, скажу, что мной и французом-испанцем, с которым я все еще встречаюсь раз в год как минимум на ланч, в цистерне сделан движок, который позволяет расширить ее динамически за минуты, позволяет динамически за секунды переделывать любые ее отростки, наименования, поля, странички, графики, tree folders, со всеми их аттрибутами, никакое кодирование для этого не нужно. Вся цистерна существует в кэше и все, что видят потребители заправки - кэш. Если мне что-то надо в цистерне изменить, я спокойно это делаю, удовлятворяюсь результатом, а после просто пинаю кэш, при перезагрузке которого все результаты изменений попадают в видимую часть цистерны. Аналогично мной спроектирована система validations - все желаемые входные данные на входе в цистерну проверяются и откидывают незадачливого нарушителя с его заливным шлангом подальше от греха. Кроме того, в цистерне существует custom система аудита - любое изменение любого элемента цистерны фиксируется с датой и именем того, кто это менял. И последняя крупная часть, сделанная мной - система допуска в цистерну и к ее данным. Помимо входа в здание, в котором она находится, сама цистерна контролирует все возможные виды допуска каждого пользователя, причем все снова-таки сделано динамически. Стоит с погона у кого-то содрать звездочку, и он тут же лишается какого-то вида допуска, зависевшего от этой звездочки, скажем больше не видит заливной шланг. Ну или табло с долларами. Я уж молчу об содрать весь погон. Вот у вас погонов нет, так вы даже и цистерны не увидите, для вас она просто невидимая будет. А для тех, у кого есть наша карточка, видно как минимум заливное отверстие и платежная полочка. Ну и так далее. Кстати, на этой же системе базируется допуск высасывания данных другими программами - слой API и триггеров мы тоже сделали что надо.
В классе Джавы пару лет назад я показал немножко того что делает наша цистерна. Народ долго сидел тихо, а меня все стали называть на Вы, а не Тимохой, как это делает Янкель! Зато, когда инструктор показал что сделано в Джаве (особенно с авторизацией и допусками пользователей) я ржал долго и безостановочно пару дней. А когда я вдобавок показал наш динамический report engine module, который может управляться средним семиклассником и выдавать начальству любые данные в любом виде, "собрание болезненно застонало". Короче - цистерна отличная. И вот теперь закономерный результат - цистерну захотели в Англии. Один из крупнейших тамошних ISP. И тут же следом - в Австралии. И уже идут разговоры про Китай. А теперь внимание - вопрос.
Приходилось ли вам продавать свой системный продукт (не одно application), состоящий из нескольких интегрированных друг в друга сложных систем? Что вы делали с source code? Невозможно же каждому клиенту продавать и сопровождать свой код. По крайней мере у меня в команде на это нет ни сил ни людей. Нам бы свой бензин залить и продать, какое там чужим заниматься. А если мы в цистерне, скажем, найдем баг через пару месяцев и его надо фиксать в проданных, что делать? Код-то уже уйдет на мили друг от друга... А код точно надо будет разный, по крайней мере чтобы привинтить цистерну в разные места у разных покупателей. А вот тут и начинаются проблемы, которыми я уже когда-то наелся с Siebel, Salesforce, CRM, SAP, Remedy, Vantive и тому подобными программами. Что делать? Тащить два-три-четыре кода? Делать один "для всех", но как тогда разделять "что кому"? Кто все это уже прошел - жду советов. Спасибо!
Как вы знаете, в свободное от ЖЖ и от работы в госпитале время, я помаленьку ковыряюсь в своей цистерне, которую я слудил, спаял, вкопал и обслуживал с 1997 года. Цистерна у меня нестандартная, сработанная исключительно под нашу заправку. Причем ее порывались сменить уже бессчетное количество раз. Не вру - каждый новый начальник Чукотки заправки приходил и первым делом заявлял - это чё у вас тут?! Цистерна что ли? НЕСТАНДАРТНАЯ??? В урну ее, срочно заменить на стандартную, чтобы "все как у людей"! Один раз в 1999 году даже посадили около 30 человек (не вру) на полгода - спроектировать, разработать, запустить в отладку, отработать и запустить в производство замену. А нас тогда было 7 человек на все про все. Мы вечерами и ночами проектировали третью версию своей существующей цистерны, а днями работали на сопровождении и всех изменениях, которые шли потоком. А они - 30 человек - только на разработке.
Когда мы выдали свою версию, их группу распустили. Тихо, мирно, ничего не говоря, потратив нехилые бабки, которые вполне могли нас сделать миллионерами. Но мы съели пуд соли и столько же дерьма вместо получения денег. Зато мы обрели бешеный опыт и поняли что такое мы сотворили, когда нас оставили, а тех 30 уволили. Но не в этом главное, главное, что наша цистерна жива с 1997 года, в то время как все приходившие начальники уже давно убраны. Перед тем как перейти от преамбулы к амбуле, скажу, что мной и французом-испанцем, с которым я все еще встречаюсь раз в год как минимум на ланч, в цистерне сделан движок, который позволяет расширить ее динамически за минуты, позволяет динамически за секунды переделывать любые ее отростки, наименования, поля, странички, графики, tree folders, со всеми их аттрибутами, никакое кодирование для этого не нужно. Вся цистерна существует в кэше и все, что видят потребители заправки - кэш. Если мне что-то надо в цистерне изменить, я спокойно это делаю, удовлятворяюсь результатом, а после просто пинаю кэш, при перезагрузке которого все результаты изменений попадают в видимую часть цистерны. Аналогично мной спроектирована система validations - все желаемые входные данные на входе в цистерну проверяются и откидывают незадачливого нарушителя с его заливным шлангом подальше от греха. Кроме того, в цистерне существует custom система аудита - любое изменение любого элемента цистерны фиксируется с датой и именем того, кто это менял. И последняя крупная часть, сделанная мной - система допуска в цистерну и к ее данным. Помимо входа в здание, в котором она находится, сама цистерна контролирует все возможные виды допуска каждого пользователя, причем все снова-таки сделано динамически. Стоит с погона у кого-то содрать звездочку, и он тут же лишается какого-то вида допуска, зависевшего от этой звездочки, скажем больше не видит заливной шланг. Ну или табло с долларами. Я уж молчу об содрать весь погон. Вот у вас погонов нет, так вы даже и цистерны не увидите, для вас она просто невидимая будет. А для тех, у кого есть наша карточка, видно как минимум заливное отверстие и платежная полочка. Ну и так далее. Кстати, на этой же системе базируется допуск высасывания данных другими программами - слой API и триггеров мы тоже сделали что надо.
В классе Джавы пару лет назад я показал немножко того что делает наша цистерна. Народ долго сидел тихо, а меня все стали называть на Вы, а не Тимохой, как это делает Янкель! Зато, когда инструктор показал что сделано в Джаве (особенно с авторизацией и допусками пользователей) я ржал долго и безостановочно пару дней. А когда я вдобавок показал наш динамический report engine module, который может управляться средним семиклассником и выдавать начальству любые данные в любом виде, "собрание болезненно застонало". Короче - цистерна отличная. И вот теперь закономерный результат - цистерну захотели в Англии. Один из крупнейших тамошних ISP. И тут же следом - в Австралии. И уже идут разговоры про Китай. А теперь внимание - вопрос.
Приходилось ли вам продавать свой системный продукт (не одно application), состоящий из нескольких интегрированных друг в друга сложных систем? Что вы делали с source code? Невозможно же каждому клиенту продавать и сопровождать свой код. По крайней мере у меня в команде на это нет ни сил ни людей. Нам бы свой бензин залить и продать, какое там чужим заниматься. А если мы в цистерне, скажем, найдем баг через пару месяцев и его надо фиксать в проданных, что делать? Код-то уже уйдет на мили друг от друга... А код точно надо будет разный, по крайней мере чтобы привинтить цистерну в разные места у разных покупателей. А вот тут и начинаются проблемы, которыми я уже когда-то наелся с Siebel, Salesforce, CRM, SAP, Remedy, Vantive и тому подобными программами. Что делать? Тащить два-три-четыре кода? Делать один "для всех", но как тогда разделять "что кому"? Кто все это уже прошел - жду советов. Спасибо!
no subject
Date: 2010-09-14 04:23 pm (UTC)P.S. А, ну и есть вариант, что вы наберете еще 50 человек, которые будут обслуживать единичные проданные экземпляры. И вести их каждый по отдельности. Все-таки не похоже, что вы собираетесь свои цистерны пачками по 20 штук каждый месяц продавать.
мы еще в 1999 году планировали цистерну
Date: 2010-09-14 04:31 pm (UTC)Я вчера заикнулся про 50 человек, услышал много лестного в свой адрес от самого большого начальника. По 20 штук в месяц конечно нет, не тот уровень, это тебе не облаками торговать. Но даже третью нам не потянуть самим... Я и во второй-то несильно уверен, если все это получится. Все равно кого-то практически выделять придется следить за всеми этими изменениями, добавками, багами и прочей требухой. А цистерна и правда хорошая...
почти целиком переписать пришлось
Date: 2010-09-14 04:38 pm (UTC)no subject
Date: 2010-09-14 04:50 pm (UTC)Наша фирма продает железки, которые работают под управлением нашего софта. Железки очень большие и очень разные (хоть и похожие), и конструктивно, и по тому, что они делают. Софт для любой из них состоит из нескольких компонент
1. common ground библиотека - покрывающая общую часть всех железок
2. несколько вспомогательных библиотек - каждая из которых покрывает общую часть, присущую некоторым железкам, а некоторым - нет.
3. т.е. baseline код, по числу железок, который покрывает специфику каждой из них.
Все это лежит под сорс контролом, в отдельных VOB-ах. Никаких изменений, идущих вне сорс контрола - не бывает в принципе.
Софт состоит из прилинкованных 1., (возможно что-то из 2.) и 3.
Каждое из 1., 2. и 3. - разрабатывается, тестируется и сопровождается разными людьми. Ясен пень, иногда они бывают в одном лице :)))
Соответственно, существует нехилая активность по генерализации требований от железок, обобщению функциональности и выносу ее в 1. или 2. Плюс, работа по документации - очень разнообразной (для себя так, для себя эдак, для кастомера так, для кастомера эдак). Плюс, есть группа, которая работает исключительно с кастомерами, заливая пожары у них и донося их уже слегка облагороженные от матюков слова до разработчиков. Плюс чуваки, которые занимаются инфраструктурой - поддержкой билдов, системы сорс контрола, документационных баз данных и проч.
В случае твоей цистерны - если речь идет о продаже нескольким кастомерам - картина, в принципе, просматривается та же, за исключением того, что у нас много связи с железом и соответственно, вызванных этим проблем. У тебя, наколько я понимаю, чистый софт. Все остальное - не велосипед, но и не фигулька, которую Тима сможет самолично, в свободное от основной работы время, одной левой изображать. Кмк.
Жирно живете, что мне еще сказать
Date: 2010-09-14 05:08 pm (UTC)Но идею с библиотеками обдумаю. Хотя опять-таки, моя "железки-софты" система значительно крупнее, чем ваши "болванки" для продажи, библиотеками тут не обойтись... Да и есть они, библиотеки-то... Если б мне эти ваши группы все... "50 человек" этих, чтобы и кустомер саппорт с матюками делали, и за билдами с релизами следили, про документацию уж и не мечтаю - было и у нас когда-то такое же, когда в обеденный перерыв в буфете наливали пиво, а на улице играла live music с черной солисткой. Эх, времечко такое прошло...
Re: Жирно живете, что мне еще сказать
Date: 2010-09-14 05:13 pm (UTC)Про "задачи крупнее" - давай не будем органами меряться :)
так и меряться нечего
Date: 2010-09-14 05:17 pm (UTC)Это ж как ширину с глубиной мерять - мы продаем полный бокс: от quote и конфигурации любого продукта до билла кустомерам. Но продаем 1 (адын) штук. Вы продаете мелкое (условно конечно) но тысячи. Потому и сказал - у вас объемы, которые нас завалят. Так и мы ж системами этими не торгуем, мы воздухом торгуем, у нас тоже его объемы есть. Это сейчас вот такая (не)задача вылезла...
Re: так и меряться нечего
Date: 2010-09-14 05:30 pm (UTC)Тысячи идут не от того, что продается тысяча разных мелких приблуд. А от того, что продается много машин, и работают они по многу-многу лет.
no subject
Date: 2010-09-14 05:38 pm (UTC)Почему это невозможно? :) Очень многие только этим и занимаются. Многие конечно ещё пытаются писать generic продукт, который потом можно привинтить к чему угодно, но до абсолютно счастья ещё лет пять, может семь.
значит людям больше нечем заняться
Date: 2010-09-14 05:44 pm (UTC)А насчет невозможно - таки невозможно, поскольку размер своей системы я знаю. Сам с рабами все делал. Даже всего три таких системы вести раздельно будет убийством.
а я что написал???
Date: 2010-09-14 05:46 pm (UTC)Re: значит людям больше нечем заняться
Date: 2010-09-14 05:47 pm (UTC)Тогда сделать несколько версий продукта.
Re: а я что написал???
Date: 2010-09-14 05:57 pm (UTC)Мое нынешнее понимание такое - твоя цистерна это вещь, позволяющая держать данные, администрировать, поддерживать секьюрити и прочая, прочая - для _любых_ данных. Т.е. ее основное отличие в том, что она не заточена на конкретику какую-то, а работает с данными ВАЩЕ, причем
1. с данными, структуры которых могут модифицироваться на ходу
2. серьезно покрыты практически все аспекты и проблемы, которые таким цистернам присущи.
Что делает цистерну вещью, которая
а) потенциально нужна множеству кастомеров (о чем ты и пишешь)
б) потенциально будет нужна им в разных комплектующих. Кому-то чхать на секьюрити, но нужна повышенная скорость доступа. Кто-то наоборот - несколько секунд готов подождать, но секьюрити ему нужна гигантская. Т.е. у тебя есть возможность комплектовать свою цистерну из разных кусочков - и в таком виде, за разные деньги, ее продавать.
в) что делает вдвойне логичным разбивку системы на модули, каждый из которых подддерживается в своем уголке. Т.е. нашли багу в секьюрити - кастомер А заинтересован в новой версии, кастомеру Б начхать. И тепе.
Так мне кажется, могу недопонимать, ессно.
надо, но некем
Date: 2010-09-14 06:01 pm (UTC)Re: надо, но некем
Date: 2010-09-14 06:05 pm (UTC)Тогда я не понимаю, в чём заключается вопрос? :)
хыхыхы
Date: 2010-09-14 06:09 pm (UTC)Все модули создаются исключительно рекордами в таблицах, а не кодом. Введу новый рекорд - на страничке появится новый табчик. В другое место рекорд введу - глядь новый фолдер в три вырос. В третьем рекорде изменю текст и на страничке вместо "Инка Какаду" будет написано "Инка Самая Умная В Мире". Не нужны мне люди для "модулей". Аналогично все сделано с допусками. Аналогично с репортами. И остальным.
Но в целом ты права, беда в том, что у меня нет команд для поддержки "разных модулей" и ведения десятков source controls, понимаешь? Они могут появиться, если эти пара продаж состоятся, а могут и нет, если, скажем, состоится всего одна в Англию. Но даже эта одна меня косит - нет у меня свободных рабов. И не будет для этой работы. мы ж свой основной продукт продаем, а это так - побочка, поиграться и посмотреть начальству "как пойдет"...
абсолютно наоборот
Date: 2010-09-14 06:12 pm (UTC)Вопрос в том, что сегодня появился потенциальный заказчик, которому надо процентов 15 от того, что может система. Ставить ему всю? Зачем? там куча всего, что ему не надо, плюс куча connections с другими цистернами embedded в движок. Начинать усекать engine? некому ни делать, ни за source code следить...
Re: абсолютно наоборот
Date: 2010-09-14 06:16 pm (UTC)Если сделать это некому, то тогда вообще о чём можно разговаривать? :)
Re: хыхыхы
Date: 2010-09-14 06:17 pm (UTC)но. Вот то, что ты пишешь про унифицированность - так это же закрывает проблему с разбивкой на модули :) нахрен она тебе тогда не нужна. Нужен только сорс контрол для текущего кода и приклеивание лейбла версионного к проданному продукту. Опять же, если количество файлов-версий - не измеряется тысячи X тысячи, то взять какую-нибудь ручную софтину для сорс контрола, наверняка есть маленькие-уютные.
Кладешь все под этот самый контрол на личном (или отдельном) компе, продаешь в Англию - если нужно чинить баги, пользуешься этим сорс-контролом. А там - слух о цистерне идет по всей земле, начальство осознает, выделяются ресурсы и тепе. По маленькой, короче :)
за рыбу деньги
Date: 2010-09-14 07:23 pm (UTC)в том и дело, что модулей как таковых особо нету
Date: 2010-09-14 07:27 pm (UTC)Re: за рыбу деньги
Date: 2010-09-14 07:33 pm (UTC)все ясно
Date: 2010-09-14 07:43 pm (UTC)Re: все ясно
Date: 2010-09-14 07:53 pm (UTC)я и сам не мерял
Date: 2010-09-14 07:55 pm (UTC)Re: я и сам не мерял
Date: 2010-09-14 08:00 pm (UTC)на солюшн было надеяться глупо
Date: 2010-09-14 08:09 pm (UTC)У меня было два варианта
Date: 2010-09-15 01:41 pm (UTC)2. Дженерик продакт лицензировался полностью, но включал в себя не только самописный код, но и стандартные продукты (типа клиар квеста, шарепойнта, и т.п.) с кастомными настройками и кастомизейшенами. Развертывание продукта у клиента занимало время, сравнимое с его созданием, у клиентов отличались версии стандартных продуктов и многие кастомизейшены просто не работали. Так что все равно появлялись бранчи, только не по клиентам а по версиям софта.
В общем мне кажется что сопровождать каждому клиенту свой серс код очень даже возможно. Просто потому что это выгодно - у тебя через год работы каждый второй-третий чейндж будет уже сделан, а ты возьмешь деньги как за новый, плюс клиент с тебя никогда не спрыгнет. А будут деньги - и люди появятся. Тут единственный нюанс - как этот сервис правильно упаковать.
Я знаю что один очень большой и успешный вендор уникальных систем очень часто разрабатывает их бесплатно для клиента, но с условием что тот заключит десятилетний саппорт контракт.
идея ясно, спасибо.
Date: 2010-09-15 01:51 pm (UTC)Второй вариант, к сожалению, почти наверняка не прокатит, потому что временами клиентами бывает кусок нашей же корпорации. То есть работа есть, а деньги за нее кто и где видит - неясно. Ясно только одно - вы 10 лет саппортайте, а в charge center мы вам отметку сделаем и в общую сумму доходов бензозаправки где-то там что-то учтется...
ладно, будем думать что сделать с моими рабами, новых точно поак не будет. Похоже, придется тянуть первую продажу своими силами на два кода... дальше будет видно
Re: идея ясно, спасибо.
Date: 2010-09-15 02:58 pm (UTC)I wish...
Date: 2010-09-15 03:06 pm (UTC)Re: I wish...
Date: 2010-09-15 04:36 pm (UTC)Я думаю когда твои большие боссы через полгода увидят твой бэклог по реквестам и подсчитают его стоимость то у них враз третий глаз откроется :)
А пока - хорошие фриз-репорты и грамотное бранчевание наше все.