Платформа «Аналитика сертификатов» живёт за счёт чужих данных: она собирает сведения из государственных реестров России, Киргизии, Казахстана, Беларуси. Реестры регулярно меняют структуру, вводят лимиты, блокируют сбор, переезжают на новую инфраструктуру. Стоит парсингу встать — и через неделю аналитика устаревает, а вместе с ней дешевеет весь продукт. Заказчик сформулировал приоритет рано и коротко: «парсер — основа». Абонемент построен вокруг того, чтобы эта основа не падала. С первого ТЗ в октябре 2021-го и до сегодняшнего дня платформа ни разу не оставалась без присмотра.
Сводка
| Отрасль | Сертификация продукции, B2B-аналитика рынка |
| Конечный клиент | «Аналитика сертификатов» |
| Формат сотрудничества | Регулярное сопровождение по абонементу: бесперебойный парсинг, мелкие доработки, реакция на инциденты, серверная защита, бэкапы |
| Тип проекта | Непрерывная поддержка внутренней B2B-платформы |
| Длительность отношений | октябрь 2021 — июнь 2026 (4,5 года без перерыва) |
| Что покрывает абонемент | Работоспособность парсинга, накопленная мелочёвка, инцидент-реакция, мониторинг, серверный абонемент защиты, бэкапы |
| Документированный поток мелких пакетов | около 90 часов по 6 ТЗ-допзадач (2022–2023), плюс поток отдельных мини-правок |
| Команда | Антон Херсун (руководитель), разработчик аналитической панели, разработчик виджетов и парсеров, инфраструктурная команда |
| Технологический стек | Laravel + Horizon, ClickHouse, MySQL/MariaDB, ротация прокси, перебор номеров, Grafana-мониторинг, бэкапы в S3 |
Постановка задачи
Большие ТЗ в этом проекте оформляются отдельно: платформа, отчёты, шаблоны, виджеты, архитектура базы. Но рядом с крупными задачами всегда течёт мелочь, из которой ТЗ не собрать. Реестр-источник сменил формат — парсер нужно подправить за ночь. Пользователь просит кнопку или новую сортировку: час работы. Внешний администратор портала по ошибке стёр интеграцию, и виджет надо поднимать немедленно. Сервер под нагрузкой, диск заполняется, пора апгрейдить тариф.
Если каждую такую мелочь оформлять отдельным заказом, накладные расходы на документы и счета съедят больше, чем сама работа. Если копить молча и в конце месяца выставить «было всякое разное на много часов», заказчик перестанет доверять смете. Абонемент закрывает обе крайности: предсказуемая ежемесячная подписка покрывает фон, а всё, что выходит за неё, фиксируется явными часами.
Главное, что заказчик покупает по абонементу, — уверенность. Парсинг работает каждый день, а любой сбой будет закрыт быстро, без отдельных переговоров на каждый случай.
Как мы это сделали
1. Парсинг под постоянным присмотром. За четыре с половиной года источники ломались десятки раз, и почти каждый случай закрывался в рамках абонемента, без отдельного ТЗ. Европейские прокси перестали пускать к российским реестрам — собрали мини-ферму российских серверов. Киргизия закрыла публичный реестр — перешли на сбор перебором номеров от последних известных. Федеральная служба сменила инфраструктуру и забанила парсер-машины: систему переписали на несколько машин в два потока с ротацией прокси. Переезд Казахстана на новый реестр обернулся сбором из 46 источников, а новогодние блокировки в Беларуси обошли через рабочий прокси с последующим досбором. Платформа всего этого почти не замечает: заделка успевает раньше, чем устаревают данные.
2. Мелочёвка копится и закрывается пакетом. Договорённость по абонементу простая: одиночный час не превращается в отдельный счёт. В ноябре 2025-го заказчик попросил мелкую кнопку на час работы, и решение было такое: «подождём ещё немного, чего-нибудь появится на неделе, можно к концу периода всё саккумулировать или сделать в счёт аванса». Так уходит лишняя бюрократия. При этом часть мелких ролей и правок закрывается в день обращения: мини-роль «Сотрудник ТО+» была готова через несколько часов после запроса, а пакет июньских допзадач закрыли за день.
3. Дисциплина явной сметы там, где объём растёт. Когда мелочи в 2022–2023 годах стали стабильным потоком, мы оформили его как ежемесячные пакеты допзадач: один документ тзNN_допзадачи_<месяц>_<год> с пронумерованными пунктами и общей оценкой. Суффикс _согласован в имени файла означает, что версия прошла обсуждение и зафиксирована; новые запросы идут уже в следующий пакет. Шесть таких пакетов дали около 90 согласованных часов — и ни одного спора по смете. Побочный эффект оказался полезным: повторяющийся тип запроса виден сразу и вырастает в отдельное крупное направление. Так случилось с парсингом иностранных реестров.
4. Реакция на инциденты за минуты и за ночь. Скорость ответа и есть то, ради чего держат абонемент. Внешний администратор портала случайно стёр интеграцию виджета, заказчик потерял доступ в админку — на восстановление всей работоспособности ушло около двадцати минут от первого сообщения. Когда база «самоубилась и чудом восстановилась» посередине ночного сбора, парсер был поднят к утру, а сам инцидент стал поводом переехать на более мощный сервер. Бывало и тяжелее: после заражения сервера троян-майнером работы по очистке заняли втрое больше планового времени, и заказчик получил по итогам письменный отчёт об инциденте с разбором причин.
5. Защита нагрузки и уборка за пользователями. Аналитики выгружали отчёты на миллионы строк и этим клали сервер. Ответ остался в продукте навсегда: ежедневная автоочистка экспортов старше 3 месяцев плюс лимит на размер выгрузки. Сюда же входят серверная защита и обслуживание отдельным абонементом со счётом поквартально, внешний мониторинг с алертами прямо в рабочий чат и бэкапы, которые за время проекта выросли от еженедельной выгрузки базы на FTP до ежедневного дампа всей базы в объектное хранилище.
Результаты
| Метрика | Значение |
|---|---|
| Длительность непрерывного сопровождения | 4,5 года (октябрь 2021 — июнь 2026) |
| Бесперебойность парсинга | Десятки смен формата и блокировок источников закрыты в рамках абонемента, без длительных простоев продукта |
| Скорость инцидент-реакции | Восстановление виджета за ~20 минут; подъём базы за ночь; письменный отчёт по инцидентам |
| Документированный поток мелких пакетов | ~90 часов по 6 ТЗ-допзадач, без споров по смете |
| Защита и сохранность | Серверный абонемент защиты, автоочистка экспортов и лимиты, бэкапы от еженедельных до ежедневных в S3 |
| Продукт жив на 5-м году | 66–79 активных пользователей еженедельно (статистика входов, весна 2026), нагрузка ровная, без признаков затухания |
Главный результат одной цифрой не выражается. За четыре с половиной года продукт ни разу не остался без поддержки, парсинг пережил каждую смену правил у источников, а заказчик ни разу не получил счёт-сюрприз: фон закрывает абонемент, всё сверх него идёт явными согласованными часами.
Процесс и хронология
| Период | Что закрывал абонемент |
|---|---|
| 2021–2022 | Старт сопровождения; еженедельные бэкапы базы; мини-ферма российских серверов после блокировки европейских прокси |
| 2022–2023 | Шесть ежемесячных пакетов допзадач (~90 ч); апгрейды сервера под рост нагрузки |
| 2023 | Бан парсер-машин источника — переписанная многопоточная система, 100% актуальность периода |
| 2024 | Переход реестров на сбор перебором; автоочистка экспортов и лимиты после перегрузки сервера; адаптация под смену инфраструктуры источников |
| 2025 | Серверный абонемент защиты (поквартально); внешний мониторинг с алертами; восстановление виджета за 20 минут; подъём базы за ночь; новый реестр Казахстана |
| 2025–2026 | Ежедневные бэкапы в S3; миграция на более мощный тариф; обход новогодних блокировок; перестройка сбора под новые лимиты реестра РФ |
Команда
- Антон Херсун, Xaver Pro, руководитель проекта, постановка сметы по абонементу, инцидент-координация, инфраструктура.
- Разработчик аналитической панели ведёт это направление с первого дня и до сегодня; любой модуль, написанный несколько лет назад, дорабатывается тем же человеком.
- Разработчик виджетов и парсеров закрывает мелкие правки по своим зонам; часть последних работ по парсингу подхватил именно он.
- Инфраструктурная команда: серверы, защита, мониторинг и бэкапы под руководством Антона.
Принцип сопровождения простой: кто написал модуль, тот и закрывает по нему мелочи и инциденты. Состав по направлениям не менялся годами, поэтому контекст не приходится передавать заново при каждом обращении. Для абонемента это и есть главная ценность: за любой запрос берётся человек, который уже знает эту часть системы изнутри.
Скриншоты и материалы
Для этого кейса не критично: его суть в модели сопровождения и непрерывности, а не в визуальной составляющей.
Если у вашего продукта есть «основа», которая не должна падать, парсер, интеграция, ночной сбор данных, и при этом постоянно течёт мелочёвка, которая не складывается в большие ТЗ, поговорим. Покажем, как держать это одним абонементом: предсказуемый фон, явные часы сверху и реакция на инциденты за минуты. За разбор денег не берём.