Справочник по сигналу и шуму в разработке
devnoize — практическое руководство о том, как сделать так, чтобы инженерные системы сообщали людям только то, что требует внимания. Логи, алерты, метрики, CI и рабочие уведомления рассматриваются с одной точки зрения: сколько в них сигнала и сколько шума.
Шум — это любое сообщение, которое отнимает внимание и не приводит к действию. Сработавший ночью алерт, после которого дежурный ничего не сделал. Тысяча строк лога, среди которых нужно найти одну. Красная сборка, которую перезапускают, не читая. Двадцать комментариев линтера в код-ревью, из которых важен один. По отдельности каждое такое сообщение стоит немного. Вместе они приучают людей не смотреть — и тогда пропускается то единственное сообщение, которое было важным.
Разделы справочника
Для кого этот справочник
Справочник написан для разработчиков, SRE и руководителей команд, которые отвечают за работающую систему, а не только за написанный код. Предполагается знакомство с основами: вы писали логи, настраивали хотя бы одно правило алерта и видели CI-конвейер изнутри. Специальные знания конкретных продуктов не нужны — примеры приводятся на распространённых открытых инструментах, но принципы переносятся на любые.
- Разработчику пригодятся главы о логах и уведомлениях: что писать в лог, чтобы через полгода в нём можно было разобраться, и как убрать из ревью то, что может проверить машина.
- Дежурному инженеру — главы об алертах и метриках: как добиться, чтобы каждый звонок ночью был оправдан.
- Руководителю команды — вводная глава и чек-листы: как измерить шум и регулярно проводить ревизию.
Как читать
Главы можно читать в любом порядке, но вводная глава задаёт термины, на которые опираются остальные. Каждая глава заканчивается кратким итогом. Для быстрой работы есть таблица уровней логирования, чек-листы для ревизии и глоссарий.
Справочник не привязан к вендорам и не предлагает купить инструмент. Если совет требует конкретной программы, он приводится вместе с принципом, который за ним стоит, чтобы его можно было воспроизвести в другом окружении.