Найти в Дзене

Слезы в серверной: как одна ошибка чуть не стоила карьеры

Пятница на двадцатом этаже обычно пахла грядущими выходными и крепким эспрессо. Отдел кипел ленивой, предвкушающей жизнью. Александр, ритмично кивая в такт музыке в наушниках, дописывал последний скрипт, а Анна сводила итоговые цифры для квартального отчета. До конца рабочего дня оставался ровно час, когда Анна, нажав комбинацию клавиш, замерла. Экран моргнул, и вместо стройной таблицы с данными по сотням тысяч пользователей появилась лаконичная, холодная строка: `0 rows returned`. Анна неверяще протерла очки. Она проверила запрос еще раз. Потом еще. Внутри всё оборвалось, словно она шагнула в пустую шахту лифта. Строка `DROP TABLE` в её буфере обмена, которая предназначалась для тестовой базы, каким-то дьявольским образом была исполнена на рабочем сервере. Она удалила базу данных пользователей за последний квартал. Безвозвратно. Руки Анны затряслись так сильно, что мышка выскочила из-под пальцев и с грохотом упала на пол. Этот звук заставил Александра обернуться. Он снял один наушник.
Оглавление

Пятница на двадцатом этаже обычно пахла грядущими выходными и крепким эспрессо. Отдел кипел ленивой, предвкушающей жизнью. Александр, ритмично кивая в такт музыке в наушниках, дописывал последний скрипт, а Анна сводила итоговые цифры для квартального отчета. До конца рабочего дня оставался ровно час, когда Анна, нажав комбинацию клавиш, замерла. Экран моргнул, и вместо стройной таблицы с данными по сотням тысяч пользователей появилась лаконичная, холодная строка: `0 rows returned`.

Ледяной ужас

Анна неверяще протерла очки. Она проверила запрос еще раз. Потом еще. Внутри всё оборвалось, словно она шагнула в пустую шахту лифта. Строка `DROP TABLE` в её буфере обмена, которая предназначалась для тестовой базы, каким-то дьявольским образом была исполнена на рабочем сервере.

Она удалила базу данных пользователей за последний квартал. Безвозвратно.

Руки Анны затряслись так сильно, что мышка выскочила из-под пальцев и с грохотом упала на пол. Этот звук заставил Александра обернуться. Он снял один наушник.
— Ань, ты чего? Мышь сбежать пытается?
Анна не могла произнести ни слова. Бледная как мел, она просто смотрела на экран. Александр нахмурился, встал и подошел к её столу. Ему хватило одного взгляда на лог её терминала, чтобы всё понять.

— Твою мать... — тихо выдохнул он. Это была высшая степень тревоги в его лексиконе.
— Саша... что мне делать? — её голос сорвался на плач. — Меня уволят. Меня уволят по статье. Это конец. Отчет в понедельник утром у генерального.

В мире цифр нет прощения за одно неверное движение пальца. Цена ошибки измеряется не извинениями, а разорванными контрактами и сломанными судьбами.

План спасения

Александр быстро огляделся. В офисе было шумно, Игорь и Людочка что-то бурно обсуждали у кулера. Мария Викторовна находилась на совещании с инвесторами и должна была вернуться с минуты на минуту.

— Так, без паники, — Александр схватил Анну за плечо. — Бери ноут. Идем в серверную. Быстро. Воздухом подышим.
Анна на ватных ногах пошла за ним. Серверная была единственным местом на этаже, куда доступ имели только технические специалисты, и где царил вечный холод от мощных кондиционеров.

-2

Дверь с магнитным замком щелкнула за ними, отрезая их от внешнего мира гулом охлаждающих установок. Анна прислонилась к холодной стене и закрыла лицо руками. Слезы хлынули градом. Весь её идеальный мир, выстроенный тяжелым трудом, ипотека, репутация незаменимого аналитика — всё рассыпалось из-за одной глупой ошибки из-за усталости.

— Ань, дыши, — Александр открыл свой ноутбук, поставив его прямо на гудящую стойку сервера. — Я сейчас всё исправлю.
— Как?! Бэкапы делаются только ночью! Данные за сегодня потеряны! — она всхлипнула, размазывая тушь под очками.
— Официальные бэкапы — да. Но я... скажем так, я параноик. У меня есть теневой дамп памяти, который я настроил скриптом на каждый час. Мария Викторовна запретила это делать, потому что это жрет ресурсы сервера, но я всё равно оставил лазейку.

Анна подняла на него заплаканные глаза.
— Ты нарушил протокол безопасности?
— Я нарушил протокол, чтобы спасти протокол, — усмехнулся он, хотя его пальцы летали по клавиатуре со скоростью пулемета. — Проблема в другом. Чтобы залить этот дамп обратно прямо сейчас, мне нужны полные рут-права. А они требуют подтверждения ключом Марии Викторовны.
— У нас его нет.
— У меня есть скрипт обхода, — тихо сказал Александр. — Но если Мария Викторовна увидит попытку взлома лог-сервера с моего IP-адреса, она уволит меня. И тут уже без вариантов.

Жертва ради любви

Анна замерла. В этот момент она осознала, что Александр собирается сделать. Он, человек, который жил правилами, чистым кодом и логикой, готов был рискнуть своей работой, своей карьерой, чтобы прикрыть её ошибку.

— Нет, Саша. Не делай этого, — она положила руку на его пальцы, останавливая их. — Это моя вина. Я пойду к Марии и всё расскажу.
Александр посмотрел на неё сверху вниз. В тусклом свете индикаторов серверов его лицо казалось жестким и чужим, но в глазах было столько тепла, что Анне захотелось снова расплакаться, теперь уже от благодарности.

— Ань. В этом офисе мне не нужна идеальная работа, если на ней не будет тебя с твоими дурацкими отчетами и кофе с корицей. Отпусти мои руки.

Она медленно убрала ладонь. Александр нажал `Enter`. На экране побежали строки зеленого кода. Сто процентов загрузки... Восстановление прошло успешно. База данных была как новенькая, словно никакой ошибки и не существовало.

Александр с шумом выдохнул и откинулся назад, тяжело опираясь на металлическую стойку.
— Всё. Данные на месте. А теперь приведи себя в порядок, ты выглядишь так, будто тебя Пломбир покусал.

-3

Расплата

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

Дверь кабинета начальницы распахнулась. Мария Викторовна вошла в отдел, держа в руках планшет.
— Александр Дмитриевич. Ко мне в кабинет. Быстро.

Сердце Анны ухнуло вниз. Она заметила подмену. Александр медленно встал. Анна тоже вскочила с места.
— Мария Викторовна, позвольте мне... — начала она.
— Анна Сергеевна, вы остаетесь на месте и доделываете отчет, — ледяным тоном приказала Мария. — Александр, я жду.

Дверь кабинета закрылась. Следующие двадцать минут показались Анне вечностью. Она не могла смотреть в монитор. Возвращая данные, Александр поставил на кон всё, что имел. И теперь он расплачивался за неё.

Когда дверь снова открылась, Александр вышел абсолютно спокойным. Он подошел к своему столу и начал собирать вещи в рюкзак.
Анна бросилась к нему.
— Саша! Что она сказала? Она тебя уволила?!

Александр посмотрел на неё, потом на рюкзак, в который только что положил наушники. И вдруг широко улыбнулся.
— Она сказала, что мой скрипт обхода рут-прав — это талантливо, но совершенно незаконно. И что если я еще раз взломаю её сервер ради того, чтобы спасти «свою истеричную женщину от инфаркта», она заставит меня переписывать всю архитектуру в одиночку.

Анна неверяще смотрела на него.
— То есть... ты остаешься?
— Мария Викторовна умеет ценить как хороший код, так и хорошие чувства. А вещи я собираю, потому что рабочий день закончен. И, кажется, я заслужил самый большой стейк в этом городе за свой счет. То есть за твой счет.

Анна рассмеялась, и это был самый счастливый смех, который когда-либо слышали стены двадцатого этажа. Ошибка была стерта, данные восстановлены, но главное — она поняла, что в холодном мире серверов и протоколов есть место настоящему, горячему человеческому сердцу.