Наверное, у меня такая судьба - стоит мне прийти в магазин, в поликлинику, в турагентство, да не важно куда, лишь бы там был компьютер - как этот самый компьютер начинает дико тормозить или вообще подвисает, и мне приходится ждать, пока грязно ругающийся персонал проклинает тот день, когда "сел за баранку сего драндулета". Хотя скорее всего, дело не во мне, а в диком (по-другому не скажешь) качестве автоматизации подавляющего большинства отечественных компаний и организаций. Вот об истории этой дикости и методов ее преодоления в рамках отдельного взятого сознания (или сознаний) и будет посвящен данный блог.
Все началось в далеком 1996-м, когда впервые под моим руководством была внедрена в жизнь информационная система. Кажется, это был старый добрый MS Access, и, как сейчас помню, это был оптовый склад колготок. Составили ТЗ, план работы, сделали, отладили, проверили – работает. Отвезли Заказчику (в соседний город) установили, настроили, обучили. Работает. На всякий случай поприсутствовали лишних пару часов – работает. Собрались, поехали домой пить пиво и делить деньги. По приезду домой родные радостно сообщили, что «звонили по работе» уже много раз (сотовых в те далекие времена практически ни у кого не было). Не так радостно звоню Заказчикам – те жалуются – не работает. Что именно не работает, никто внятно объяснить не может. Пришлось на следующий день опять ехать в соседний город. Оказалась такая мелочь, что была поправлена за 15 минут, если бы внятно пояснили суть проблемы, можно было бы и не ехать – удаленно решить. Но к сожалению, внятно формулировать проблему – роскошь, недоступная большинству Заказчиков. Итак, поправили, поприсутствовали лишних пару часов – работает. Собрались, поехали домой отдыхать. Приезжаем - родные уже не так радостно сообщают, что «опять звонили по работе». Опять звонок, опять «у нас ничего не работает», опять поездка в другой город, но уже не мелочь в программе, а ошибка оператора. Оператору объяснили, поприсутствовали …
В общем, такая катавасия продолжалась около пары недель, пока программа была окончательно отлажена, все ошибки от дураков были поставлены, персонал обучен. Поскольку в течении этих двух недель пришлось много времени тратить тупо сидя в машине (ехать в соседний город – чуть больше часа – туда-обратно – три часа для размышлений), то в голове начала появляться определенная мысль. Мой друг и коллега называет такие мысли «мечтой идиота». Традиционно такие идеи называют «маниловщиной» - а как было бы здорово если бы…
В те далекие дни мне представлялось, как было бы классно, если бы автоматизация компании базировалась на центральном сервере, на котором бы хранились все данные в реальном масштабе времени (тогда я еще не знал что такой сервер называется SQL-сервер). И пользователи (у-у, вредители) никак не могли бы запороть эти данные, установив какую-нибудь недобросовестную игрушку, или поцепив в Интернете вирус, или нажав не на ту кнопку. Кроме того, представлялось как программисты, в случае возникновения проблем, смогут удаленно заходить на этот сервер через Интернет, и удаленно же и оперативно решать проблемы, а не ездить туда-сюда в соседний город и присутствовать следя за нормальной работой системы с умным видом. Вобщем, такая идиллия в розовых штанишках.
Новый толчок мои «маниловские» настроения получили во время выполнения заказа у этой же компании при ее расширении. Открывались новые филиалы в разных областях нашей необъятной родины, и нужно было не только внедрить системы на все колготочные склады, но и, о ужас, организовать репликацию данных. И непростую, а множественную. К примеру, информация о продажах в Воронеже интересовала не только бухгалтеров в центральном офисе, но и дирекцию, которая работала в другом городе, а также логистиков, которые, естественно, находились в третьем городе (так исторически сложилось, вот). Предыдущие поездки в соседний город в течении двух недель мне показались мелочью во время выполнения новой задачи. Я стал серьезно думать, что работа программиста чем-то очень близка работе экспедитора – те же частые командировки, гостиницы, и уйма времени, проводимого в процессе перемещения из пункта А в пункт Б.
Итак, продолжим. Если внедрить сами системы учета в филиалы получилось довольно быстро – в среднем по полторы недели на филиал, то с репликацией что-то не клеилось. Программно все было сделано как надо, тем более что задача-то вроде бы простая – иметь в определенных местах копию (кальку) базы с другого места, используя E-mail для пересылки обновлений. Но по ходу возникали самые разные непредвиденные проблемы. Задачу усложнял тот факт, что теперь, после исправления ошибки, необходимо было не только обновить программу на месте работы, но и во всех местах ее репликации. Кроме того, функционал программы расширялся, приходилось периодически менять структуру базы. А правка структуры базы удаленно во всех филиалах и во всех местах их репликаций – это просто песня. Задача, требующая невероятных усилий со стороны как программистов, так и сотрудников Заказчика, необремененных лишними познаниями в компьютерных технологиях. Нам пришлось нанять отдельного человека – специалиста по решению проблем репликации в филиалах. Мы наивно полагали что временно, пока все не образумится. Как мне известно, до сих пор в подавляющей части организаций, использующих репликацию, есть такой специалист на пол-ставки или даже на полную ставку, который занимается только проблемами репликаций.
Прошло какое-то время, буквально пол-года, и вроде бы все работало – наш специалист рассекал по просторам России (за счет Заказчика, разумеется), репликация с его поддержкой таки худо-бедно работала, но что-то изменилось. Стал анализировать, что не так. Самое неприятное – пропало желание со всем этим добром работать. Не было здесь красоты. А «чего стоит жизнь, если в ней нет места танцу»! Опять таки, продолжая цитировать классиков «приходилось изо всех сил бежать, чтобы оставаться на месте». Иначе говоря, очень высокая (и в плане нервов) стоимость владения продуктом. Работа стала походить на аврал (особенно внедрении какой-нибудь мелочи). Исчезло ощущение мощи современных информационных технологий на кончиках своих пальцев, которое было у меня после окончания института. Возникало ощущение беспросветности, что тебя затягивает в болото. Заказчиков такое положение дел тоже не сильно устраивало. И проблема даже не в затратах, а в ненадежности. Трудно было понять, на какое число у тебя репликация, им самим периодически приходилось наказывать сотрудников за несвоевременную пересылку пакетов обновлений базы.
В общем, поговорив с Заказчиками, было решено подумать в сторону моей «мечты идиота». Хотя у Заказчиков было большое сомнение, что такая мечта в принципе осуществима. Поэтому решено было поехать в Москву на выставку компьютерных инновационных технологий. Кажется, это было COMSTAR-2001. Выставка поразила своей громадностью и жадностью белых воротничков до бесплатного некачественного лимонада, раздаваемого на стенде фирмы 1С. Небедные, судя по одежде люди, толпились и давились в огромной очереди, дабы бесплатно получить заветный одноразовый стаканчик дешевого пойла типа «сладка вода колокольчик». Главная цель поездки была найти реальный масштаб времени. Мы с Заказчиками, презрев лимонадную холяву, добросовестно шерстили стенды, приставая ко всем с главным, и самым заветным вопросом – «реальный масштаб есть»? Но увы, тщетно, таковой обнаружен не был. Но зато к нам приставали с вопросами – а зачем он Вам нужен? Мы же, делая умное лицо, шли дальше, к манящему разноцветными огоньками следующему стенду. Мне лично запомнилось два стенда – фирмы Парус. Когда я, наивный, подошел к ихнему стенду, меня несколько обескуражила медленная скорость работы демо-версий. Я решил, что, возможно, система работает по сетям Интернет, и, возможно, сервер находится в центральном офисе, а канал Интернет на выставке проседает. Но меня разочаровали, сказав, что сервер находится в 30-ти сантиметрах от клиентского компьютера, а программа так тормозит, так как сеть установили 10МБ, а надо 100 МБ. Все вопросы по поводу тонкого клиента сами пропали. Представитель 1С с трибуны произнес только одну сакраментальную фразу, после которой я понял, что реальный масштаб времени 1С несвойственен в принципе. Фраза была «и ставите Вы в 1С на ночь отчеты формироваться». Даже в нашем MS Access отчеты формировались максимум 20 минут. А менять шило на мыло – нет уж, увольте.
Итак, не обнаружив на выставке ничего подходящего было принято решение самостоятельно реализовать мою «мечту идиота». Сейчас это кажется неосуществимо с финансовой точки зрения. А тогда. За зарплату 100$ в месяц можно было нанять очень даже толкового программиста. Так что бюджет в 3000$ на разработку системы реального масштаба времени с нуля выглядел даже очень реалистичным. Но все равно у Заказчика оставались сомнения, а типа реально ли это, или фантастика? Поэтому было предложено за 100$ сделать как бы макет будущей программы, чтоб Заказчик смог ее пощупать. За такую смешную для сегодняшних реалий сумму была сделана довольно простая программка – два типа накладных – расходные и приходные, справочник товаров, один отчет – по наличию товаров. Но – все это работало по тонкому каналу 28800 БОТ, т.е. по обычному dial-up соединению. Сам сервер физически находился в Ростове-на-Дону. Один из топ-менеджеров – в Москве, другой – в Волгограде. После примерно месяца нашей работы был начат одновременный сеанс пробной работы двух топ-менеджеров. И у них все получилось. Они радовались как дети. Типа ура-ура, это возможно. Торжественно и одновременно были выбиты две расходные накладные – одна в Москве, одна в Волгограде. Обе – в реальном масштабе времени. И обе накладные сохранились на сервере, и остатки корректно списались. Фантастика! Так началась работа над нашей первой системой реального масштаба времени MECCANO-ОПТ. В дальнейшем я уже узнал, что такая технология называется Интранет. Деталям и особенностям разработки и внедрения систем реального масштаба времени (или Интранет-системам) будет посвящено следующая запись в этом блоге.