Серверная гудела ровным, почти убаюкивающим гулом. Для кого-то этот звук показался бы монотонным шумом, но для меня, Антона Николаевича, начальника IT-отдела крупной логистической компании «ТрансВектор», это была музыка. Музыка идеально настроенного механизма, который я собирал по винтику последние пять лет.
Когда я пришел в компанию, здесь царил хаос: базы данных падали через день, менеджеры перекидывали друг другу файлы на флешках, а склады регулярно теряли фуры с грузом из-за сбоев в системе учета. Я выстроил всё заново. Внедрил современную ERP-систему, настроил автоматическое резервное копирование, организовал отказоустойчивые кластеры. Мой отдел из четырех суровых сисадминов и пары толковых программистов работал как швейцарские часы. Мы даже могли позволить себе пить кофе и играть в настольный футбол в обеденный перерыв, потому что всё работало само.
Как оказалось, именно эта видимая легкость меня и погубила.
Был вечер пятницы. Я уже собирался закрыть ноутбук и отправиться домой, предвкушая спокойные выходные, когда на столе зажужжал внутренний телефон. Звонил Виктор Павлович, наш генеральный директор.
Виктор Павлович был человеком старой закалки, из тех управленцев, которые считают, что если лампочка горит, значит, электрику можно не платить. Технологии для него были темным лесом, «черной дырой», пожирающей бюджеты.
— Антон, зайди ко мне. Срочно, — голос директора не предвещал ничего хорошего.
Я поднялся на верхний этаж. Кабинет генерального встретил меня запахом дорогого коньяка и тяжелой дубовой мебелью. В кресле для посетителей сидела девушка лет двадцати двух. На ней был вызывающе яркий костюм, в руках она вертела последнюю модель айфона с длиннющими наращенными ногтями, а ее взгляд выражал крайнюю степень скуки.
— Присаживайся, Антон, — Виктор Павлович не предложил мне чая, что было плохим знаком. — Перейду сразу к делу. Мы проводим оптимизацию структуры управления. Совет директоров считает, что твой отдел потребляет слишком много ресурсов, а отдача… ну, скажем так, не очевидна. У нас всё и так работает.
Я удивленно поднял брови.
— Всё работает именно потому, что мой отдел это поддерживает. Мы только за прошлый квартал предотвратили две серьезные DDoS-атаки и автоматизировали склад B, что сэкономило компании миллионы.
— Это всё лирика, — отмахнулся директор. — Факт в том, что твоя должность слишком дорого нам обходится. Мы решили передать руководство IT-направлением более… современному, молодому специалисту со свежим взглядом. Познакомься, это Эльвира.
Девушка оторвалась от экрана смартфона, лениво кивнула и лопнула пузырь из жвачки.
— Эльвира — выпускница престижного вуза по специальности «Инновационный менеджмент», — с гордостью заявил Виктор Павлович. Я знал, что у директора есть младшая сестра, и, судя по поразительному фамильному сходству в форме носа, передо мной сидела его племянница.
— Виктор Павлович, — я постарался сохранить спокойствие. — Руководство IT-инфраструктурой логистической сети — это не инновационный менеджмент. Это базы данных, маршрутизация, сервера, безопасность. У Эльвиры есть техническое образование?
— Она курсы по Python прошла! — возмутился генеральный. — И вообще, у нее тридцать тысяч подписчиков в Instagram, она отлично разбирается в компьютерах. Не делай из своей работы тайного знания, Антон. Там делов-то — кнопочки нажимать. Короче. Ты уволен.
— Хорошо, — я выдохнул. Спорить с идиотами — себе дороже. — Сокращение штата. По закону вы обязаны выплатить мне выходное пособие за два месяца, плюс компенсацию за неиспользованный отпуск. Готовьте бумаги, я передам дела.
Глаза Виктора Павловича нехорошо сузились.
— Никакого пособия не будет. Ты напишешь заявление по собственному желанию. Сегодняшним числом.
— С какой стати?
Директор придвинулся ближе и понизил голос.
— С такой, Антон, что если ты этого не сделаешь, служба безопасности внезапно найдет на твоем рабочем компьютере гигабайты порнографии, или обнаружит пропажу пары дорогих серверов. Я уволю тебя по статье за утрату доверия. И с такой волчьей билетом ты в этом городе работу больше не найдешь. Поверь мне, я умею это делать.
Я смотрел в его самодовольное лицо и чувствовал, как внутри закипает гнев. Пять лет безупречной работы. Ни одного крупного сбоя. Я ночевал в этой серверной, когда мы переносили базы данных. И теперь меня выбрасывают на улицу, лишая честно заработанных денег, просто чтобы освободить теплое кресло для бездарной родственницы.
Я мог бы пойти в суд. Мог бы начать войну. Но я посмотрел на Эльвиру, которая в этот момент пыталась сделать селфи на фоне фикуса, и внезапно понял одну простую вещь. Мое детище, моя сложнейшая система, не проживет в этих наманикюренных руках и месяца.
— Давайте бумагу, — холодно сказал я.
Я подписал заявление, спустился в свой кабинет, собрал в рюкзак любимую механическую клавиатуру, кружку с Дартом Вейдером и пару книг. Мои ребята — Дима и Саня — смотрели на меня с ужасом.
— Шеф, это что за цирк? — спросил Дима, когда я вкратце обрисовал ситуацию. — Какая племянница? У нас в понедельник миграция биллинга!
— Теперь это проблема Эльвиры, — я пожал им руки. — Удачи, парни. Она вам понадобится. Держитесь, или ищите новые резюме. Мой совет — второе.
Я вышел из здания «ТрансВектора» с легким сердцем. Воздух казался свежим. У меня была неплохая финансовая подушка, и я решил, что устрою себе небольшой отпуск.
День первый (Понедельник)
Я спал до одиннадцати. Сварил отличный кофе, почитал новости. В обед звякнул мессенджер. Писал Саня:
"Шеф, это финиш. Она пришла к 11:30. Сказала, что в серверной слишком шумно и некрасивые провода, приказала их 'спрятать или отрезать половину, они всё равно дублируются'. Мы с Димой сказали, что это витая пара к коммутаторам и резервные каналы питания. Она назвала нас токсичными."
Я усмехнулся и ответил смайликом.
День третий (Среда)
Я гулял по парку, когда телефон завибрировал. Дима.
"Антон Николаевич, спасай. Эта мадам решила 'оптимизировать память'. Она увидела, что папка 'Backup_Daily_Archive' весит 15 терабайт. Сказала, что это 'какой-то мусор, который тормозит интернет', и просто удалила ее к чертям! Вместе со скриптами автоматического бэкапа."
"Ну, у вас же есть холодные бэкапы на лентах?" — набрал я.
"Есть. Но она сказала, что ленты — это прошлый век, и приказала завхозу списать их на помойку еще вчера. Мы только сейчас узнали."
Моя система начала рушиться. Я знал архитектуру наизусть. Без ежедневных бэкапов первый же сбой базы SQL приведет к необратимой потере данных за текущий день. А сбои в логистике случаются всегда.
День пятый (Пятница)
Началось.
В 14:00 посыпались новости в профильных чатах города. «ТрансВектор» встал.
Саня прислал аудиосообщение, на фоне которого кто-то орал матом:
"Шеф... это писец. Сервак 1С упал из-за переполнения кэша. Мы пошли перезагружать службу, а Эльвира решила, что мы слишком медленно работаем. Она зашла в серверную и просто выдернула главный рубильник из ИБП (Источника бесперебойного питания)! Типа 'выключить и включить'. Рейд-массив посыпался. База лежит. Склады не могут отгрузить ни одной фуры. Водители бунтуют. Директор бегает красный как рак."
Я представил эту картину. Логистический хаб, который обрабатывает сотни тонн грузов в сутки. Тысячи накладных, маршрутных листов, таможенных деклараций — всё это находилось в той самой базе данных, которую Эльвира убила одним движением руки. Система была спроектирована так, чтобы выдержать отказ оборудования, перебои со связью, даже пожар (благодаря тем самым удаленным бэкапам, которые она приказала выбросить). Но система не была защищена от начальника с правами администратора и интеллектом хлебушка.
День седьмой (Воскресенье)
Отдел рухнул окончательно. Дима и Саня положили заявления на стол еще в пятницу вечером, отказавшись быть козлами отпущения. В субботу «ТрансВектор» должен был отправить крупную партию скоропортящихся товаров в соседние регионы. Без системы учета грузчики не знали, что грузить, куда грузить и где это лежит на гигантском складе. Фуры простаивали, нарушая графики поставок. Сетевые магазины выставляли гигантские штрафы за срыв контрактов.
В воскресенье вечером, когда я жарил стейк на своей кухне, зазвонил телефон. На экране высветилось: «Виктор Павлович (Бывший босс)».
Я сделал глоток вина, выждал пять гудков и неторопливо снял трубку.
— Слушаю.
— Антон! Антоша, дорогой! — голос генерального директора дрожал, в нем не осталось ни капли прежней спеси. Он звучал как человек, стоящий на краю пропасти. — Слава богу, ты взял трубку.
— Добрый вечер, Виктор Павлович. Чем обязан? У вас же оптимизация.
— Антон, умоляю, без сарказма! У нас катастрофа. Сервера не работают, база не грузится. IT-отдел разбежался. Эта дура... то есть, Эльвира... она что-то нажала. У нас миллионные неустойки, склады забиты тухнущим мясом! Приезжай, а? Срочно. Я любые деньги заплачу!
Я перевернул стейк на сковородке. Он приятно зашипел.
— Любые деньги, говорите?
— Да! Давай я верну тебя на должность. Оклад повышу на двадцать процентов. Нет, на тридцать! Только подними систему до утра понедельника. У нас завтра проверка от учредителей. Если базы не будет, они меня живьем съедят!
Я медленно подошел к окну.
— Виктор Павлович, вы же сами сказали: это всё лирика. Моя должность слишком дорого вам обходится. А Эльвира — современный специалист. Пусть она и поднимает.
— Антон, я был неправ! — взвыл в трубку директор. — Я признаю! Я повел себя как скотина. Пожалуйста, выручай.
Я сделал паузу. Ровно настолько, чтобы он успел покрыться холодным потом.
— Хорошо. Но я больше не ищу работу по найму. Я теперь независимый консультант. Моя ставка за экстренное восстановление данных — двести тысяч рублей в час. Минимальный контракт — сорок часов. Оплата вперед, на мой счет ИП.
В трубке повисла мертвая тишина. Восемь миллионов рублей. Для сравнения — мое выходное пособие, которое он зажал, составляло около трехсот тысяч.
— Восемь... миллионов? — прохрипел Виктор Павлович. — Ты с ума сошел? Это грабеж!
— Это рыночная стоимость восстановления убитого RAID-массива и потерянных бэкапов в выходной день. Плюс надбавка за вредность. И, учитывая, что у вас завтра учредители, это еще скидка. Соглашайтесь сейчас, или через десять минут ставка вырастет.
Я слышал его тяжелое дыхание. Он понимал, что штрафы от заказчиков уже перевалили за пятьдесят миллионов. Он был в безвыходном положении.
— Я... я переведу деньги. С личного счета. Прямо сейчас. Диктуй реквизиты.
— Отлично. И еще одно условие. Эльвира и вы не имеете права заходить в серверную, пока я там работаю.
Через десять минут телефон звякнул — пришло уведомление о зачислении средств. Я улыбнулся, выключил плиту, доел стейк и начал собираться.
Восстановление заняло у меня четырнадцать часов. Это был адский труд. Мне пришлось по крупицам собирать фрагменты базы данных, использовать теневые копии, о которых Эльвира не подозревала, и вручную переписывать логи маршрутизации. К утру понедельника система ожила. Терминалы на складах пискнули, принтеры начали выплевывать маршрутные листы. Логистическое сердце «ТрансВектора» снова забилось.
Когда я выходил из серверной, в коридоре стоял бледный, постаревший на десять лет Виктор Павлович. Рядом с ним переминались с ноги на ногу двое суровых мужчин в дорогих костюмах — учредители. Эльвиры нигде не было видно.
— Всё работает, — коротко бросил я. — Акт выполненных работ отправлю на почту.
Учредители с интересом посмотрели на меня.
— Вы наш новый начальник IT? — спросил один из них.
— Нет, — я усмехнулся. — Я независимый консультант, который только что спас вашу компанию от банкротства. А вот этот господин, — я кивнул на Виктора Павловича, — уволил меня неделю назад без выходного пособия, чтобы посадить на мое место свою племянницу, которая и уничтожила вам базу данных.
Лица учредителей потемнели. Виктор Павлович открыл рот, как выброшенная на берег рыба, пытаясь что-то сказать, но не смог издать ни звука.
— Что ж, — произнес второй учредитель ледяным тоном, глядя на директора. — Виктор Павлович, зайдите к нам в кабинет. Поговорим об оптимизации.
Я вышел на улицу. Утро было солнечным и прохладным. В кармане лежал телефон с приятной суммой на счету. Я знал, что Виктора Павловича снимут с должности сегодня же. Я знал, что Эльвира больше никогда не подойдет к серверам. А еще я знал, что иногда карма работает быстрее, чем любые судебные иски. Особенно если в деле замешаны глупость, жадность и удаленные бэкапы.