[SHUTDOWN] END OF LIFE (EOL). Архитектура финального релиза
Рано или поздно любой инженер, увлекшийся рефакторингом своей жизни, упирается в фундаментальный баг. Можно сколько угодно настраивать фокус, поднимать ментальные фаерволы от токсичного трафика и балансировать нагрузку, чтобы не словить выгорание. Но в какой-то момент система крашится об уязвимость, которую невозможно пофиксить патчем. Просто потому, что она вшита в саму базовую систему ввода-вывода (BIOS) нашего железа (Hardware).
В логах это выглядит примерно так. 02:00 ночи. Оборудование переведено в Sleep Mode, кулеры крутятся на минималках. И вдруг внезапно запускается фоновый аудит. Глаза открываются. Пульс уходит за сотню, оперативная память заливается холодным потом, и на внутренний монитор выводится один-единственный запрос: «А какой смысл оптимизировать код, выстраивать архитектуру и копить ресурсы, если этот сервер всё равно неизбежно отключат от питания?»
Возникает NullPointerException. Процессор пытается вычислить состояние небытия (отсутствие самого процессора), предсказуемо уходит в бесконечный цикл и вешает систему. Мы ловим классический «синий экран смерти» (BSOD) прямо в кровати.
Гуманитарии и философы называют это страхом смерти или экзистенциальным кризисом. В терминах системного администрирования — это ошибка прогнозирования End-of-Life (EOL).
Давайте попробуем разобрать эту уязвимость. Только хардкорная инженерия, архитектура и попытка понять, почему наш внутренний софт так панически боится процедуры завершения работы.
Читать далее