Rain Lag

Картонный инцидент: как Ferris Dock превратили «вечные загрузки» в прорыв по надежности

История о том, как превращать инциденты в устойчивые улучшения надежности с помощью структурированных постмортемов, сильной наблюдаемости, chaos engineering и культуры непрерывного обучения.

Картонный инцидент: как Ferris Dock превратили «вечные загрузки» в прорыв по надежности

Внутри вымышленной, но до боли знакомой компании Ferris Dock есть ставшая легендой история.

Её называют «Картонный инцидент».

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

Ferris Dock использовали этот инцидент, чтобы радикально изменить подход к надежности, инцидентам и обучению. Это история о том, как им это удалось — и как вы можете сделать то же самое.


Картонный инцидент: короткая история

Ferris Dock управляли логистической и докинговой платформой, которой пользовались тысячи складов. В один вторник днём деплой кода спровоцировал каскадные замедления. Запросы не падали с ошибкой быстро — они просто… крутились.

Статус‑страница слишком долго оставалась зелёной, потому что пороги мониторинга не были настроены на частичную деградацию. Клиенты обновляли страницу снова и снова, решив, что проблема в их браузере или Wi‑Fi.

К тому моменту, когда инцидент был полностью распознан, операции у нескольких клиентов уже серьёзно пострадали. Один менеджер склада, окончательно потеряв терпение, распечатал дашборд Ferris Dock, приклеил его к куску картона, написал красным маркером «СИСТЕМА СНОВА ЛЕЖИТ» и повесил в зоне разгрузки.

Фотография этого картонного плаката дошла до Ferris Dock.

Она стала объединяющим артефактом.

Вместо того чтобы замять инцидент, руководство распечатало это фото и повесило в комнате для разборов инцидентов. Картонный плакат стал символом: больше никаких «потраченных впустую» сбоев, никакого пустого «кручения» без обучения.


Шаг 1: Относитесь к каждому инциденту как к ресурсу для обучения

Первым изменением в Ferris Dock стало мышление: любой инцидент — большой или маленький — это возможность улучшить систему и организацию.

Это означало:

  • Никаких разборов «на поиск виноватых»
  • Никаких пропусков постмортемов из‑за «незначительности» инцидента
  • Никаких расплывчатых «в следующий раз будем аккуратнее» вместо конкретных действий

Вместо этого они приняли простой принцип:

Если инцидент разбудил человека пейджером — он обязан чему‑то нас научить.

Чтобы превратить это в практику, они разработали структурированный, повторяемый процесс постмортемов.


Шаг 2: Постройте понятный, повторяемый процесс анализа инцидентов

Шаблон постмортема в Ferris Dock состоял из четырёх ключевых частей:

1. Фактическая шкала времени

Поминутная (или пошаговая) последовательность того, что произошло:

  • Когда начались проблемы
  • Что видели пользователи
  • Какие алерты сработали (или не сработали)
  • Кто что сделал и когда

Эта шкала времени исключала интерпретации. Это были только факты из логов, алертов, переписки в чате и журналов деплоев.

2. Многопричинный анализ первопричин

Вместо поиска одной‑единственной «root cause», они смотрели на несколько уровней причин:

  • Пусковые причины (например, изменение конфига, неудачный деплой)
  • Сопутствующие причины (например, отсутствующие алерты, шумные дашборды, неясные runbook’и)
  • Системные причины (например, хрупкая архитектура, размытая ответственность, слабое тестирование)

Они часто использовали техники вроде «5 Why» или причинно‑следственных деревьев, но с одним жёстким правилом:

Анализ первопричин не может остановиться на конкретном человеке.

Обвинение людей — тупиковый путь. В Ferris Dock фокусировались на:

  • Провалах в процессах
  • Ограничениях инструментов
  • Архитектурных слабых местах
  • Сбоях коммуникации

3. Конкретные, отслеживаемые action items

Каждый инцидент заканчивался коротким, приоритизированным списком изменений, например:

  • Архитектурные правки (например, добавить кеширование, убрать единичные точки отказа)
  • Улучшения наблюдаемости (например, недостающие метрики, сломанные дашборды)
  • Обновления runbook’ов (например, более понятные шаги, лучшая эскалация)
  • Защитные барьеры (guardrails) (например, проверки перед деплоем, feature flags, автоматические откаты)

Каждый пункт был:

  • Назначен конкретному владельцу
  • Обозначен по срокам
  • Заведён в ту же систему, где и обычные задачи (а не в забытый документ)

4. Общая, доступная документация

Постмортемы не прятали. Они были:

  • Проиндексированы и доступны для поиска
  • Легки для быстрого просмотра
  • Протегированы по системе, сервису и типу отказа

Новых инженеров в Ferris Dock поощряли читать старые инциденты в рамках онбординга. «Учитесь на прошлой боли, прежде чем столкнётесь с ней сами».


Шаг 3: Проектируйте с учётом отказов, а не с мечтой о совершенстве

Главный урок Картонного инцидента был не в том, чтобы «в следующий раз не допустить именно этот баг». Он был глубже:

Системы будут падать. Проектируйте так, чтобы сбои были ожидаемыми, ограниченными и восстановимыми.

Ferris Dock начали инвестировать в проактивную профилактику инцидентов, фокусируясь на архитектуре и «failure-aware» дизайне:

  • Резервирование и «graceful degradation»: сервисы могли работать в урезанном режиме, а не полностью падать
  • Таймауты и фолбэки: запросы, которые раньше крутились бесконечно, теперь быстро завершались с полезными сообщениями об ошибке
  • Переборки и лимиты (bulkheads и rate limits): один проблемный клиент не мог уронить весь сервис
  • Ясное владение компонентами: у каждого критичного компонента была конкретная ответственная команда

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


Шаг 4: Инвестируйте в сильную наблюдаемость (observability)

Инцидент показал, что дашборды Ferris Dock были яркими — но мало полезными. Они измеряли «интересные» показатели, а не то, что по‑настоящему отражает пользовательский опыт.

Они полностью пересмотрели observability, задав три вопроса:

  1. Можем ли мы обнаружить проблемы рано, ещё до того, как пользователи начнут слать гневные письма?
  2. Можем ли мы понять, что сломалось, опираясь только на метрики, логи и трейсы?
  3. Можем ли мы реагировать быстро и с уверенностью?

Конкретно они:

  • Внедрили golden signals (latency, traffic, errors, saturation) для ключевых сервисов
  • Добавили метрики, ориентированные на пользователя, например, успешные операции в минуту, а не только загрузку CPU
  • Стандартизировали структурированные логи во всех сервисах
  • Ввели distributed tracing, чтобы видеть прохождение запросов через микросервисы

Результат: меньше «таинственных» сбоёв и куда более быстрый триаж инцидентов.


Шаг 5: Используйте chaos engineering и SLO, чтобы находить слабые места заранее

Ferris Dock осознали, что до этого они уже проводили «невольные эксперименты хаоса» в проде — то есть инциденты.

Они решили проводить их осознанно.

Chaos engineering

В контролируемом режиме они начали:

  • Убивать инстансы
  • Инжектировать задержки
  • Рвать сетевые соединения
  • Симулировать отказы зависимостей

И параллельно наблюдать:

  • Остаётся ли система работоспособной (или хотя бы деградирует плавно)?
  • Корректно ли срабатывают алерты?
  • Помогают ли runbook’и инженерам быстро реагировать?

Сбои, выявленные в ходе chaos‑экспериментов, были куда менее болезненны, чем те, о которых первыми узнавали клиенты.

SLO: Service Level Objectives

Они также определили SLO, чтобы количественно зафиксировать ожидания по надежности. Например:

  • «99.9% запросов к check‑in API успешно завершаются за менее чем 500 мс в течение 30 дней».

Отслеживание SLO позволило им:

  • Видеть тренды надежности, а не только отдельные инциденты
  • Понимать, когда надежность надо ставить выше новых фич
  • Измерять, дают ли постинцидентные улучшения реальный эффект

Шаг 6: Стройте культуру непрерывного обучения

Технических изменений оказалось недостаточно. Ferris Dock нуждались в культурном сдвиге.

Они внедрили практики, чтобы каждый инцидент — независимо от масштаба — улучшал надежность:

  • Blameless постмортемы: фокус на дизайне системы, а не на ошибках людей
  • Регулярные встречи по инцидентам: короткие, повторяющиеся сессии, где команды просматривают свежие инциденты вместе
  • Психологическая безопасность: инженеров напрямую поощряли рассказывать о «почти сбоях», слабых местах и случаях «нам просто повезло»
  • Признание профилактики, а не только героизма: ценили тихую работу по предотвращению проблем и повышению устойчивости

Картонный плакат в переговорке постоянно напоминал:

Цену нашего необучения платят пользователи.


Шаг 7: Прозрачно коммуницируйте с пользователями

Один из болезненных уроков Картонного инцидента заключался в том, что пользователи слишком долго оставались в неведении. Они не понимали:

  • Упал ли сервис или просто тормозит
  • В безопасности ли их данные
  • Стоит ли пробовать снова или просто ждать

Хуже того, на фоне хаоса появились фишинговые атаки: мошенники писали клиентам, представляясь поддержкой Ferris Dock и запрашивая учётные данные.

В ответ Ferris Dock формализовали свою стратегию коммуникаций во время инцидентов:

  • Публичная статус‑страница с обновлениями в реальном времени и понятными статусами инцидента (investigating, identified, monitoring, resolved)
  • Объяснения простым языком, что может видеть пользователь (например, «Вы можете замечать долгие загрузки на странице бронирований. Ваши данные в безопасности.»)
  • Напоминания о безопасности и фишинге во время и после инцидентов:
    • «Мы никогда не попросим ваш пароль или код 2FA по e‑mail или в чате»
    • «Если вы получаете подозрительные сообщения во время инцидента, перешлите их на security@…»
  • Постинцидентные резюме, в которых объяснялось:
    • Что произошло (без избыточного технарского жаргона)
    • Что было затронуто
    • Что делается, чтобы это не повторилось

Так инциденты перестали быть чисто негативным событием и превратились в возможность укреплять доверие через честность.


Собираем всё вместе

Картонный инцидент научил Ferris Dock не только тому, что «один деплой был с багом». Он заставил их полностью перестроить мышление о надежности:

  • Инциденты стали активом для обучения, а не позором, который нужно скрывать
  • Постмортемы стали структурированными и действенными, а не сессиями поиска виноватых
  • Архитектура стала учитывать отказы, а не делать вид, что они невозможны
  • Observability повзрослела, и инженеры получили возможность быстро видеть и чинить проблемы
  • Chaos engineering и SLO стали выявлять слабые места до того, как те ударят по клиентам
  • Культура сдвинулась к непрерывному обучению, безопасности и ответственности
  • Коммуникация с пользователями улучшилась, включая ясные статусы, рекомендации по безопасности и анти‑фишинговые напоминания

Картонный плакат до сих пор висит в их внутренней «war room» — не как напоминание о провале, а как символ обязательства:

Сбои будут. «Крутиться на месте» — необязательно. Учиться — обязательно.

Если ваша организация всё ещё «крутится» в инцидентах, возьмите пример с истории Ferris Dock. Начните с малого: проведите один структурированный постмортем, определите одно SLO, закройте один пробел в наблюдаемости.

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

Картонный инцидент: как Ferris Dock превратили «вечные загрузки» в прорыв по надежности | Rain Lag