Jakub Kornafel
← Log

Три недели мой собственный сайт мне врал

Три деплоя упали. Сайт как ни в чём не бывало отвечал двухсоткой. Я узнал об этом только потому, что искал совсем другое.

Я профессионально строю системы, которые умеют сказать человеку, что что-то пошло не так.

Мой собственный сайт три недели отдавал версию на два коммита назад, а я об этом не знал.

Как было дело. 6 августа я отправил две правки на подстраницу. Запустились три деплоя. Все три упали. Каждый записал длительность сборки в ноль миллисекунд и сообщение «Page build failed.» — ни подробностей, ни уведомления, ничего в почте.

Ноль миллисекунд значит, что сборка даже не стартовала, то есть дело было не в моём коде. Легло что-то выше.

А сайт? Сайт чувствовал себя прекрасно. HTTP 200, валидный сертификат, всё грузится. Потому что отдавалась последняя удачная сборка, ровно так же, как накануне. У аварии не было никакой видимой поверхности. Снаружи, из моего браузера, из чьего угодно — здоровый сайт.

Нашёл я это только потому, что ковырялся в совершенно другом месте и из любопытства заглянул в статус деплоев.

Неприятная параллель

Это ровно тот способ ломаться, против которого я целыми днями ставлю ворота. Просто пришёл он с той стороны, которую я не оборонял.

Агент рапортует об успехе. Тесты зелёные. Диф выглядит чисто. Всё на поверхности говорит, что работа сделана, и убедиться в обратном можно единственным способом: проверить то, чем не управляет тот, кто рапортует. Запустить настоящее приложение, спросить настоящее состояние, сравнить с тем, до чего оптимизирующая сторона не дотянется.

По отношению к агентам этот рефлекс у меня был. По отношению к собственному деплой-пайплайну — нет, и он двадцать один день тихо отдавал протухшее.

Починка, кстати, состояла в удалении, а не в добавлении. Сайт — чистый HTML, и всё равно каждый деплой прогонял его через шаблонизатор, который ему никогда не был нужен: 165 секунд на публикацию половины мегабайта. Один пустой файл спустя деплой стал обычным копированием файлов и занимает 19 секунд. Девять десятых времени уходило на шаг, единственным реальным вкладом которого была способность сломаться.

Что я отсюда забираю

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

Проверьте прямо сейчас последний удачный деплой той штуки, в которой уверены больше всего. Я подожду. Если результат вас удивит, напишите мне — я такое коллекционирую.