Десять хвилин. Стільки йшло на те, щоб знайти один лог помилки. Відкрити 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. Це два тижні спостереження за тим, як розумні люди палять час на зламаному процесі, одні вихідні і три звичайних інструменти, склеєні впертим небажанням і далі заводити тикети.
Зазвичай саме так і з'являються найкращі внутрішні інструменти. Не з дозволу — з роздратування і ноутбука.