Твою ж мать... Четыре года.
Четыре года этот кусок кремния (или это виртуалка? Да кто ж её теперь разберет, она три гипервизора пережила, как Дункан Маклауд) не видел ребута. Ты смотришь на эти цифры и чувствуешь не гордость. Ты чувствуешь, как по спине ползет холодный пот.
Это не стабильность. Это мина, которую мы каждый день переступаем по дороге в туалет.
Я тут главный по тарелочкам (читай: тимлид). И моя задача — делать вид, что наш инфраструктура не держится на синей изоленте, молитвах и bash-скриптах, написанных парнем, который сейчас, кажется, просветляется где-то на Гоа. Но сегодня мы не будем душнить про кубернетес.
Давайте поговорим о том, почему моя команда напоминает сборище городских сумасшедших, охраняющих свалку.
Бизнес называет это "Legacy". Умные дядьки в пиджаках говорят "Технический долг". А я называю это Синдромом Цифрового Плюшкина. Мы боимся убивать сервера. Нам физически больно гасить сервисы. И это, друзья мои, уже не IT. Это чистая психиатрия.
Эффект "Моей Прелести" (Endowment Effect)
Вы когда-нибудь пробовали заставить бородатого админа удалить виртуалку, на которую никто не логинился со времен выхода "Игры Престолов"? О, не делайте этого. Он посмотрит на вас как на живодера, который топит котят.
— Но там же крутится сервис репортинга!
— Вася! Маркетинг уволили два месяца назад! Там пусто, как в моем холодильнике перед зарплатой!
— Ну... а вдруг логи за 2018-й пригодятся?
В психологии это называется эффект владения. Мы, черт возьми, прикипаем к вещам. Вася потратил три ночи в 2015-м, настраивая этот проклятый sendmail. Для него этот сервер — не набор байт. Это памятник его страданиям. Удалить сервер — значит обесценить его бессонные ночи.
Но есть и более глубокая причина. Мы не удаляем старый код не потому, что он может пригодиться. А боимся нарушить невидимый баланс. Этот кусок if-else работает уже 10 лет. Он обрел свою, отдельную от нас, святость. Удалить его — значит своими руками впустить в систему Хаос. А мы, инженеры, больше всего боимся Хаоса, который нельзя откатить git revert-ом.
В чем разница между хорошим сисадмином и великим? Хороший боится сломать. Великий понимает: если система ломается от одного rm -rf, она была мертва еще вчера.
У нас есть машины с именами Gandalf, Frodo, Sauron. Вы пробовали выключить Гэндальфа? Рука не поднимается! "Ты не пройдешь!". Мы антропоморфируем железо. "Ой, Саурончик опять греется, у него температура". Мы верим, что у кремния есть характер. Что сервер может "обидеться".
Это не DevOps. Это язычество. Мы шаманы, которые приносят в жертву электричество, лишь бы духи аптайма не гневались.
Знаете, что самое жуткое? Тишина. Когда в канале #alerts перестают падать сообщения, первая мысль не "О, все починилось". Первая мысль: "Твою ж мать, мониторинг сдох".
Но мы одухотворяем не только сервера. Мы делаем из проектов святые мощи.
Зомби в стойках и Ловушка Невозвратных Затрат
Особенно больно смотреть на "зомби-проекты". Прибегает менеджер, глаза горят: "Биг Дата! Хадуп! Спарк! Бюджет — миллион!". Мы, как дураки, тянем оптику, закупаем железо, настраиваем эту махину...
Проходит полгода. Кластером пользуется один аналитик раз в месяц.
Логика говорит: сожги это и забудь. Но мозг шепчет: "Мы же столько бабок вложили! Мы же кабелёчки так красиво стяжками утянули!".
И оно стоит. Гудит. Жрет электричество.
А мы ходим мимо, опустив глаза, потому что нам стыдно. Стыдно, что мы построили мавзолей для чьей-то глупой идеи.
Ритуал ребута — это вообще отдельная песня. reboot — это маленькая смерть. Каждый раз, когда я пишу это в консоли, я задерживаю дыхание. Встанет или нет? Поднимутся ли маунты? Не отвалится ли nginx, потому что кто-то полгода назад поправил конфиг на живую и забыл проверить синтаксис?
Мы не перезагружаем их не из-за SLA. Мы просто сцыкуны. Мы боимся, что дедушка-сервер умрет во сне.
Терапия для цифровых некромантов
Короче. Хватит быть хранителями склепа. Я устал. Вот вам рецепт, записывайте (или татуируйте на руке):
- Тест Криком (Scream Test). Мой любимый. Не знаешь, нужен ли сервер? Выдерни патч-корд. Если через час тишина — сервер мусор. Если прибежали с воплями — втыкаешь обратно, делаешь круглые глаза: "Ой, сеть упала!", а сам быстренько записываешь, кто прибежал. Жестоко? Да. Эффективно? Чертовски.
- Убивайте, а не лечите. Старая байка про "Скот против Домашних животных" (Cattle vs Pets). Если сервер требует нежности, ласки и особого порядка запуска сервисов — пристрелите его. Это больное животное. Инфраструктура должна подниматься с нуля за час, иначе это не инфра, а кустарный промысел.
- Цифровой цинизм. Сервер — это расходник. Данные — чаще всего мусор. Помню, списывали старый сторадж, парни чуть не плакали. "Наш первый...". Ребята! Это просто коробка с дисками! Разбейте её кувалдой. Это, кстати, отличная психотерапия.
- Ритуал прощания. Когда убиваешь сервер, который прослужил 5+ лет — запиши его hostname в вики. С датой рождения и смерти. Это не сентиментальность. Это признание. Людям нужно видеть, что их труд не пропал в /dev/null. Иначе в следующий раз они будут саботировать удаление.
Знаешь, что самое страшное? Мы боимся вот этой кнопки больше, чем даунтайма.
(Приготовься принимать звонки от бухгалтерии)
В конечном счете, ты не убийца. Ты — санитар леса. Ты просто инструмент естественного отбора в цифровой природе. Нажми Enter. Если этому коду суждено жить, он воскреснет. Если нет — такова воля энтропии.
Легаси — это не код. Легаси — это наш страх перемен. В тот момент, когда ты говоришь "Работает — не трогай", ты превращаешься в музейного сторожа.
А я не нанимался пыль протирать.
Обсуждение
Обсуждение этой статьи и других материалов проекта проходит в нашем Telegram-канале.
Перейти в Telegram