Десять минут. Столько уходило на то, чтобы найти один лог ошибки. Открыть Azure portal, найти нужный ресурс, отфильтровать по времени, скроллить, скопировать, вставить, переключиться на другой портал, свести таймстемпы вручную — они никогда не совпадали ровно — и молиться, что лог ещё не ротировался. И так каждый раз. А решение — единый поиск по логам, который свернул все эти порталы в одну строку поиска, — я собрал за одни выходные. Это история о том, почему я сделал это, ни у кого не спросив.
Ритуал, который никто не ставил под сомнение
Проект eShop, команда поддержки тихо тонула. Не в багах — в процессе. Каждый раз, когда разработчик натыкался на проблему в проде, начинался один и тот же ритуал. Открыть Azure portal. Найти ресурс. Переключиться на второй портал ради другого сервиса. Свести таймстемпы между ними, потому что часы никогда не сходились красиво. Проскроллить простыни текста. Скопировать. Вставить куда-то ещё. Повторять, пока не найдёшь ту самую строку.
Десять минут, если ты быстрый. Пятнадцать, если лог уже ротировался и приходилось лезть в холодное хранилище.
И вот что меня по-настоящему бесило: разработчики даже не могли сделать это сами. Доступ к порталам с логами был только у ops. Поэтому разработчик ловил баг, заводил тикет и ждал. Кто-то из ops брал его в работу, прогонял тот же десятиминутный ритуал, вставлял результат обратно в тикет и шёл дальше. Умножь это на каждый баг-репорт, каждый день, на всю команду.
Я две недели смотрел на это, пока меня не переклинило.
Сборка за выходные
Я не стал просить разрешения. Не писал предложение и не открывал обсуждение в backlog. В пятницу пришёл домой, открыл ноутбук и начал делать.
Задача по дизайну была почти вызывающе простой: одна строка поиска. Вводишь ошибку. Жмёшь enter. Получаешь лог. Никаких прыжков по порталам, никакой арифметики с таймстемпами, никаких запросов доступа.
Внутри — три движущиеся части:
- Backend на Python — тянет логи из разных источников и отдаёт единый search API.
- Elasticsearch делает всю тяжёлую работу — full-text search по всему, так что «найди мне каждое вхождение этого исключения за последний час» превращалось в один запрос вместо пяти ручных.
- Docker-контейнеры оборачивают всё это, чтобы разворачивалось где угодно, а мне не приходилось нянчить окружение.
К вечеру воскресенья оно работало. Вводишь текст ошибки, жмёшь enter — и результаты приходят секунд за тридцать. С десяти минут по пяти порталам до тридцати секунд в одном окне.
Утро понедельника
В понедельник утром я показал это команде. Особо ничего не ждал — собирал в основном чтобы унять собственное раздражение.
Лид поддержки буквально меня обнял. Разработчик, который полутра каждое утро копировал логи между вкладками браузера, просто уставился в экран и сказал: «почему у нас этого не было год назад».
А потом сдвинулись цифры. Количество тикетов в поддержку резко упало в следующие недели. Не потому, что баги исчезли — они не исчезли. Тикетов стало меньше, потому что разработчики наконец могли сами находить ответы. Без доступа к порталам, без очереди в ops, без ожидания. Разработчик ловил ошибку, вбивал её в строку поиска и получал лог быстрее, чем успел бы дописать тикет. Вся петля «заведи и жди» просто… испарилась для большой части случаев.
Почему выигрывают проекты, о которых никто не просил
Я выкатил кучу вещей, которые были аккуратно расписаны, оценены и согласованы. Почти ни одну из них не обнимали.
Сильнее всего заходят инструменты, о которых никто не просил. Они рождаются в конкретном месте: тому, кто делает работу руками, надоедает достаточно сильно и достаточно часто, чтобы починить это за выходные. Ни roadmap, ни согласований. Только трение и текстовый редактор.
И здесь есть настоящий урок, если ты инженер и хочешь стать тем, кого команда реально хочет рядом:
- Следи за ежедневным ритуалом. Десятиминутная задача, которую все делают без жалоб, — это золотая жила. Люди перестают замечать боль, к которой привыкли.
- Не заводи feature request. Собери фикс. Рабочее демо бьёт красиво написанное предложение каждый раз. Никто не обнимает тикет в Jira.
- Делай маленьким. Одна строка поиска. Один понятный before/after. Тебе не нужна платформа — тебе нужно вычеркнуть десять минут из чьего-то дня.
- Показывай результат, а не план. «Смотри» — гораздо более сильный питч, чем «вот что я хотел бы сделать».
Ничего из этого не было ни в одном roadmap. Это две недели наблюдения за тем, как умные люди жгут время на сломанном процессе, одни выходные и три обычных инструмента, склеенные упрямым нежеланием и дальше заводить тикеты.
Обычно именно так и появляются лучшие внутренние инструменты. Не с разрешения — с раздражения и ноутбука.