Лев Мышкин
Случай в казино
Это история одного внедрения. Страшная история о том, как неплохую разработку информационной системы при внедрении превратили в «головную боль» как для заказчика, так и для исполнителей.
Часть первая. Вступление
Жил один хороший программист. Но почему жил? Он живет по сей день и ныне здравствует. Программист он действительно хороший, знает несколько языков программирования, включая С, Perl и т. д. Он неплохо знает архитектуру UNIX-систем в объёме, достаточном для того, чтобы самому настраивать нужные сервисы и приложения.
В свое время написал он некую информационную систему для управления небольшими казино. Система получилась очень неплохая. Она базировалась на бесплатном программном обеспечении. Использовалась операционная система Linux Red Hat 7.3, база данных основывалась на PostgreSQL. Работа с системой строилась через веб-интерфейс, в качестве веб-сервера был выбран Apache. Для обеспечения работы с общими ресурсами использовалась Samba.
Программный комплекс получился замечательный. Стабильно работающее приложение на базе нетребовательного к ресурсам свободного ПО, удобный интерфейс, масштабируемость… Оставалось одно важное дело: внедрение.
Поступил заказ из небольшого провинциального казино. Это казино совсем недавно открылось, и его учредители ничего не понимали в информационных технологиях, но возлагали на свое новое детище очень большие надежды.
Программист нашел себе напарника, и они вдвоем выехали на объект. По приезду их ожидала вполне тривиальная задача. Нужно было организовать учет кассы казино, регистрацию игроков, а также транслировать в «staff room» (комнату отдыха крупье) расписание выхода в игровой зал. Ну и, конечно, предоставить возможность менеджеру казино просматривать отчеты и корректировать расписание.
Часть вторая. Особенности местной специфики
Наши герои абсолютно не поинтересовались перед выездом, на базе чего они собираются строить свою замечательную систему. Имеется ли какая-либо инфраструктура или все придется создавать с нуля? Есть ли специалист, способный самостоятельно обслуживать систему на базе Linux? Как обстоит дело с поставкой компьютерной техники в регионе, и в какие сроки возможна эта поставка? Ответы на все эти вопросы остались, что называется, «за кадром».
По приезде на объект их ожидало… Правильно, полное отсутствие какой-либо компьютерной техники. Нет, казино работало, и игра шла вовсю, только отчетность составляли на бумаге.
Пришлось на ходу составлять проект небольшой сети и приобретать технику на месте. Здесь их ожидал второй неприятный сюрприз: город маленький, при этом находится в отдалении от крупных мегаполисов. Цены на компьютерную технику высокие, но самое главное даже не это – сроки поставки довольно большие. Заказанное оборудование приходится ждать по две недели, а то и больше…
Пришлось выбирать из того, что было в местных компьютерных магазинах. С покупкой на месте персональных компьютеров и принтера получилось не так уж плохо – был в наличии некоторый ассортимент, из которого можно сделать выбор. Гораздо хуже обстояло дело с сетевым оборудованием и веб-камерой. Из сетевого оборудования в продаже была одна-единственная модель хаба на 5 портов производства китайской noname-компании. И одна-единственная веб-камера, которая впоследствии напрочь отказывалась работать с Linux.
И тут программист со своим напарником делают очень своеобразный шаг. Они, чувствуя вину перед заказчиком за их, как им кажется, прокол, решают сэкономить клиенту часть денег, выделенных на приобретение техники, и тем самым реабилитироваться в его глазах.
В идеальном варианте им нужно приобрести 4 рабочие станции: на кассу, на reception, в «staff room» и для менеджера, а также 1 сервер для обеспечения работы всей IT-структуры. Но приобретаются только 4 рабочие станции. Компьютер в кассе по замыслу разработчиков IT-структуры должен будет являться невыделенным сервером. Поэтому для кассового компьютера выбирается самый большой корпус, какой только был в наличии, чтобы (по их мнению) обеспечить наилучшее охлаждение и тем самым создать условия для бесперебойной работы. К сожалению, конструкция этого корпуса была такой, что дополнительные платы, вставляемые в слоты расширения материнской платы, не прикручиваются болтами, а фиксируются специальной клипсой, не очень жестко.
Веб-камера, приобретенная в местном магазине, оказалась полностью несовместима в с Linux. Никакие попытки скачать и установить драйверы и т. п. не принесли желаемого успеха. Выход остался только один: установить на компьютер reception операционную систему Windows XP. В дополнение к этому менеджер казино напрочь отказался работать c Linux и переучиваться на незнакомое ПО, угрожая жалобами руководству со своей стороны. Пришлось установить Windows XP и на компьютер менеджера. Поскольку работа с приложением шла через веб-интерфейс и Internet Explorer отлично справлялся с этой задачей, проблем пока не возникло.
Итак, завязка истории вроде бы завершена, подготовительные этапы закончены. Создана IT-структура, представленная на рисунке.
Получившаяся в итоге IT-структура малого казино
Тут возникло еще одно непредвиденное обстоятельство – отсутствие сотрудника, способного взять на себя функции по поддержке данной IT-структуры. В провинциальном городке найти незанятого IT-специалиста, умеющего разбираться с UNIX-системами хотя бы на уровне пользователя, оказалось непосильной задачей. В результате функции по поддержке были переданы менеджеру казино (тому самому, который отказался работать с Linux). В двух словах ему объяснили, на какие кнопки нажимать и за какие провода дергать в случае отказа, и передали пароли root на Linux-системы и администратора для Windows.
Но, тем не менее, на данном этапе все шло очень неплохо. Клиенты регистрировались, выручка подсчитывалась, расписание транслировалось. На базе кассового компьютера был создан небольшой файловый и принт-сервер, и появилась возможность организовать какой-никакой документооборот.
Заказчики в лице учредителей казино честно рассчитались с подрядчиками, и те в радостном настроении уехали к себе домой.
Часть третья. Когда все плохо
Практически сразу после их отъезда начались проблемы.
Купленный в местном магазине хаб оказался крайне нестабильным в работе. Он то давал сбои, то переходил в состояние «зависания», из которого его можно было вывести только выключением на срок около минуты.
В результате связь между reception, базой данных в кассе и компьютером менеджера постоянно обрывалась. Единственная возможность выйти из данной ситуации – принудительно завершить работу браузера, пожертвовав введенной информацией. По непонятным причинам в этом случае зависал Internet Explorer с открытой страничкой. В результате на reception скапливалась очередь из обозленных игроков, ожидающих регистрации.
С трансляцией расписания в «staff room» тоже оказалось не все гладко. В результате сбоев сети информация на компьютере в комнате крупье обновлялась «через раз». В итоге в игровом зале оказывались вовсе не те сотрудники, кого ожидал увидеть менеджер.
В кассе, как оно часто бывает, оказалось крайне мало места. Девушка-кассир, несмотря на свое миниатюрное телосложение, постоянно задевала системный блок. При этом отходила сетевая или видеокарта и вся система зависала. Так как IT-специалистов поблизости не было, кассир просто нажимала кнопку «Reset» и вводила потерянную информацию заново. Естественно, эти сбои не могли не отразиться на работе других подразделений.
Поначалу менеджер честно пытался решать проблемы сам. Он без конца перетыкал провода в хабе, перезагружал сервер в кассе и компьютер в «staff room». Примерно через месяц у него лопнуло терпение, и он обратился с жалобой к учредителям.
В итоге программисту и его компаньону пришлось приехать второй раз, уже за свой счет, и бесплатно исправлять все проблемы. Они заменили корпус кассового компьютера на новый, с надежным креплением. При этом он был гораздо меньших габаритов, и кассир задевала его гораздо реже. Из помещения кассы также был убран принтер и установлен в кабинете менеджера. Теперь кассир должна была сначала сохранять отчеты, а менеджер их распечатывать из своего кабинета.
В находившемся рядом интернет-салоне под обещание купить новый выпросили свич на 8 портов известного производителя и заменили печально прославившийся китайский хаб. При этом пришлось заново переобжать патчкорды, которые разболтались от постоянных физических переподключений.
В итоге система стала работать лучше. И подрядчики снова уехали к себе на родину, правда, в подавленном настроении.
Часть четвертая. Неожиданный сюрприз
Месяца через три раздался телефонный звонок. Их снова вызывали в это несчастное казино.
По приезде обнаружилось, что на этот раз причиной вызова была активная деятельность менеджера казино. Расслабившись в отсутствие сбоев, он накачал программ из Интернета и, имея административные права, установил все это «богатство» на компьютерах в своем кабинете и на reception. В результате, из-за вирусов и прочих вредоносных программ, была потеряна возможность нормально работать с веб-приложением. Произошел довольно крупный скандал, во время которого учредители, естественно, встали на сторону менеджера. Наши герои проиграли эту битву. Они дискредитировали себя в глазах заказчика, проявив халатность, последствия которой разгребали во время первого аврального вызова. В результате им пришлось полностью переустанавливать систему на обоих компьютерах. Ни о какой компенсации не было и речи, хотя вина полностью лежала на стороне заказчика. В этот раз административные пароли были сообщены только одному из учредителей, хотя все прекрасно понимали, что это ненадолго. Грамотного IT-специалиста найти так и не удалось.
Резюме
Можно ли было избежать подобных проблем? Возможно, сбор и анализ необходимой информации, отказ вносить коррективы в проект на этапе закупок, вдумчивое отношение к характеристикам приобретаемого оборудования, а также грамотное делегирование полномочий могли бы свести проблемы к минимуму. Дополнительно к этому можно было бы заключить договор на обслуживание и время от времени приезжать в это казино, но уже не бесплатно и не теряя при этом свой имидж.