В начале карьеры я отлаживал по наитию. Что-то ломалось, я смотрел на код, что-то менял, переразворачивал, надеялся. Иногда срабатывало. Чаще становилось только хуже.
Когда вы строите системы, от которых зависят люди, вы не можете позволить себе гадать. Я разработал фреймворк для систематической отладки. Он не гламурен, но работает каждый раз.
Фреймворк: ISOLATE
I — Identify (Определи симптом, а не причину) S — Scope (Оцени радиус поражения) O — Observe (Изучи данные: логи, метрики, трейсы) L — List (Составь гипотезы — минимум 3) A — Assess (Оцени каждую гипотезу на основе доказательств) T — Test (Проверь исправление изолированно) E — Explain (Объясни, что произошло — постмортем)
Давайте разберём реальный пример.
Реальный случай: Дашборд загружается 30 секунд
I — Определи симптом. Пользователи сообщают, что дашборд качества загружается 30+ секунд. Локально он загружается за 2 секунды. Только в продакшене.
Не спешите говорить «это проблема базы данных» или «это сетевая проблема». Просто опишите, что вы видите.
S — Оцени радиус поражения. Это все пользователи или конкретные? Все браузеры? Когда началось? Связано с деплоем?
В этом случае: все пользователи, началось 3 дня назад, деплоев в этом окне не было. Это исключает «мы выкатили сломанный код» как причину.
O — Изучи данные.
