Скомканное Рождество

У каждого торгового предприятия есть такая система, с которой вы наверняка не хотите иметь дело. Она старше вас. Она невнятно «документирована» слухами о своих особенностях. И она абсолютно критична для бизнеса на 100%. Если она падает, то и бизнес падает.

К счастью, вам никогда не придется трогать эту систему, потому что существует Древний Волшебник, который сидит в своём кубикле с 1973 года и знает все её секреты. Пока Волшебник рядом, вы никогда не прикоснётесь к этой системе. Но если вдруг она выйдет из строя, а Волшебника не окажется в офисе, то… Ну, её исправление потребует рождественского чуда.

Рене была эльфом, программистом в мастерской Санты. Это была огромная организация со множеством уровней эльф-агентов, так что работа Рене на 90% состояла из сидения на бессмысленных совещаниях без повестки дня. В оставшиеся десять процентов она занималась добавлением фич в своё ПО для обработки счетов-фактур. Почти каждый подарок, который отправляли из мастерской, производился эльфами под товарным знаком какой нибудь крупной компании, и потому юридическое сопровождение продукции имело большое значение для предприятия.

Были там и другие важные IT системы. Цепочка поставок была огромной. Все сырье, кроме тростей, произрастающих в природе, приходилось импортировать, будь то ткань для кукольных платьев, или ABS-пластик и литьевые формы для изготовления самих кукол. В то же время доставкой, при всей её важности, IT занималось редко. ИОК (Исполняющий Обязанности Клауса) научился делать в Excel сводные таблицы с вертикальным просмотром, и сам планировал все отгрузки.

На 100% критичной системой для бизнеса была СНиОНХ: Система Наблюдения и Оценки Непослушных/Хороших. Она была «источником правды» для очень важных отчетов ОРП, — Общего Реестра Подарков. Занимавшегося этой системой Древнего Волшебника звали Мерлин. И да, Мерлин действительно был помощником Санты. СНиОНХ работала на избыточных мощностях вычислительной системы NORAD и была написана на диалекте MUMPS, известном как «Сахарный MUMPS» или «LUMPS» (т.е. «КОМКИ»). Мерлин был единственным, кто знал, как работает система и что она делает, и Мерлин был единственным, кто имел право к ней прикасаться.

По мере приближения 24 декабря, — дедлайна поставок, — работы в мастерской становилось всё больше, но у разработчиков софта работы становилось всё меньше. Поскольку время имело решающее значение, было запрещено вносить в продакшн какие либо программные изменения. Разве только для фикса багов — стопперов. Большая часть разработчиков ПО уходила на каникулы до Нового года, и никаких релизов не было аж до середины января.

Таким образом, в самое горячее и критичное время года, команда разработчиков разъезжалась в отпуска. Мерлин был в Авалоне, пытаясь наладить отношения со своей бывшей. Старшие эльфеджеры проектов отрывались в Канкуне. В офисе не было ни одного разработчика кроме Рене. Она любила работать в это спокойное для программистов время, когда никто не планировал никаких совещаний. Для неё это был своего рода вид отдыха…

… по крайней мере до тех пор, пока Герми, — ведущий разработчик, который на самом деле хотел стать MBA, — не сунул голову в её кубикл:

— СНиОНХ не работает. Шеф только что пытался получить окончательный отчет ОРП за год и не получил даже титульного листа. Вместо данных напечатались десять страниц ошибок. Я уже пытался вызвать Мерлина, но в Slack-е он не отвечает, а сотовой связи в Авалоне нет.

Если отчет ОРП был неправилен или отсутствовал, Санта не знал, какие дарить подарки каким детям. Непослушные дети могли получить хорошие подарки, а хорошие дети могли получить бесполезный мусор, такой как динамики Amazon Echo или Google Home. Санте очень был нужен отчет.

— Понятно, — сказала Рене, — но ведь должна существовать предыдущая версия отчета? Почему бы ему не воспользоваться ею?

— Старых версий не существует. С тех пор как GDPR вступил в силу, отчеты ОРП уничтожаются сразу после прочтения.

Вопреки своему здравому смыслу, Рене поставила своё горячее какао и сказала:

— Ладно, я посмотрю, что могу сделать.

У Мерлина не было никакой документации по СНиОНХ в электронном виде. Все сведения о системе были записаны на пергаментах и хранились в канцелярских папках в его кубикле. Называть их «документацией» было бы слишком громко. Большую часть текстов Мерлин писал на Высоком Енохианском языке, а тот кусочек, который был на эльфийском, являлся потоком желчи в адрес запрошенных руководством изменений и доказательством их бредовости. Единственная схема системы была нарисована для информирования шефа, а самое полезное, что нашла Рене при первом проходе, были бумажные стикеры с логинами/паролями от разных частей системы.

Впрочем, Рене этого было достаточно, чтобы начать сборку системы. Отчет ОРП был получен из данных, управляемых СНиОНХ, но оказалось, что интерфейс командной строки мэйнфрейма был заброшен примерно в 2002 году. Тогда кто-то купил дорогой пакет от Initech для интеграции с мэйнфреймом, который устанавливал на него веб-сервисы XML/SOAP. Еще через несколько лет кто-то создал UI на базе VB.NET (для фреймворка версии 1.0), через который и вызывались эти сервисы. Фактически, именно эта программа VB.NET извлекала и распечатывала отчет.

Великолепно! Рене знала Visual Basic. Или, по крайней мере, могла в нем разобраться. Здесь не было LUMPS. Она начала тестировать интерфейс СНиОНХ XML. Вручную отправила несколько запросов SOAP и стала проверять их вывод. Затем запустила приложение VB.NET. У него был базовый функционал для настройки фильтров и, как только пользователь жал «Запустить отчет», всё, включая сообщения об ошибках, отправлялось на печать. Неудобно было то, что отсутствовал выбор принтера. Распечатка осуществлялась на одном конкретном принтере, находящемся в оленьих стойлах.

Пришлось работать в цикле: «Запустить отчет, спуститься в подвал на самом медленном лифте в мире, пройти к принтеру через стойла северных оленей, подождать окончания печати страниц с сообщениями об ошибках, перетащить эту стопку бумаги обратно наверх, попытаться сопоставить ошибки с кодом». Благодаря этому процессу Рене узнала несколько важных вещей. Во-первых, какими бы рождественскими душками ни были волшебные северные олени, по запахам они больше соответствовали ужасному Хеллоуину. Во-вторых, по какой-то причине в трассировке стека присутствовали ошибки SQL, хотя данные получались с мэйнфрейма посредством веб-сервисов. Откуда брались запросы к БД?

Рене вернулась к папкам Мерлина и, собрав воедино все свои познания Высокого Енохиана, какие только смогла вспомнить из курса старшей школы, начала разбираться в происходящем.

Примерно в 2004 году вопреки протестам Мерлина начался проект под кодовым названием RED. Его целью было «обновить» СНиОНХ с переводом его на платформу J2EE с бэкендом на Oracle. В итоге, если Рене правильно поняла енохианский текст, Мерлин изгнал эльфа, заключившего контракт с вендором, в астральный план, поскольку он оказался подкуплен гитьянками.

— Пожалуй, это является нарушением кадровой политики, — отметила для себя Рене.

Проект остался незавершенным, но продвинулся до такой степени, что бэкенд на Oracle до сих пор работал параллельно со СНиОНХ. Это объясняло ошибки SQL. В приложение на VB.NET была добавлена функциональная возможность для коннекта к «обновленной» системе RED. В какой-то момент приложение переключалось на этот бэкенд и запрашивало данные из него. Конечно же, когда Рене попыталась подключиться к Oracle напрямую, она получила целый ворох ошибок, так как в своем незавершенном и недонастроенном виде эта база была полностью неработоспособна.

Еще некоторое время Рене тыкала приложение VB.NET, чтобы воскресить доступ к данным с помощью веб-сервиса. Затем еще один обонятельный шок, и у неё на руках был отчет ОРП. Она отнесла его Санте, а потом подошла к Герми, чтобы ввести его в курс дела.

— Отличная работа! Вы спасли Рождество! — сказал тот, — Стыдно за Мерлина.

— Что теперь будет с Мерлином?

— Он совершил ужасное преступление изгнав душу бедного Роджера в астральный план. И теперь нам придется отпустить Мерлина. Но не волнуйтесь. После произошедшего я уверен, что Вы можете взять на себя роль нашего нового эксперта по СНиОНХ и LUMPS. Вы можете считать это повышением в должности, и через несколько лет, возможно, Вам увеличат заработную плату!

Оригинальный WTF: https://thedailywtf.com/articles/a-lumpy-christmas