Финансы, страхование, инвестиции
Июнь 2025
EWATender — SaaS-платформа для поиска и анализа государственных и коммерческих тендеров.
Сервис агрегирует информацию с различных площадок, помогает пользователям искать закупки, а также предоставляет дополнительные образовательные продукты и услуги тендерного сопровождения.
За годы развития система превратилась в крупный легаси-проект с большим количеством интеграций, парсеров и внутренних сервисов.
На протяжении примерно пяти лет систему развивал один разработчик. После его ухода выяснилось сразу несколько критичных проблем:
- отсутствовала техническая документация;
- бизнес не понимал устройство собственного продукта;
- часть парсеров перестала корректно работать;
- код был распределён между несколькими репозиториями или вовсе отсутствовал;
- внешние сервисы и доступы были известны только бывшему разработчику.
Кроме исправления ошибок, наша задача заключалась в том, чтобы принять проект на полноценную техническую поддержку и сделать его независимым от конкретного исполнителя.
Работа началась с полной инвентаризации системы. Мы изучили архитектуру платформы, восстановили принципы работы сервисов и одновременно начали создавать техническую документацию, которой ранее не существовало. Фактически пришлось выполнить обратный инжиниринг проекта.
Основная ценность платформы — актуальная информация о тендерах. Во время аудита выяснилось, что часть парсеров работала некорректно. Из-за этого пользователи не видели часть закупок. Мы проверили работу всех парсеров, определили причины ошибок и восстановили корректную обработку различных источников данных.
Во время сопровождения произошел критический инцидент.
Основной источник данных изменил способ предоставления информации и ввел ограничения на количество запросов. Стандартный механизм перестал позволять получать весь необходимый объем данных. Мы проанализировали доступные варианты и реализовали альтернативный способ получения информации через API мобильного приложения.
После этого появилась новая проблема — ограничение количества страниц при выборке. Мы переработали алгоритм запросов, разделив их по категориям и типам закупок, что позволило продолжить получать полный объем данных.
Одной из важнейших задач стало документирование проекта. Мы подготовили более 30 технических документов, описав:
архитектуру системы;
работу каждого парсера;
внешние интеграции;
резервное копирование;
запуск проекта;
обслуживание инфраструктуры;
используемые сервисы.
После завершения работ клиент получил полный комплект документации для дальнейшего сопровождения системы.
До начала проекта часть кода отсутствовала в репозиториях или находилась только у предыдущего разработчика. Мы объединили кодовую базу, подготовили единый Git-репозиторий и передали его заказчику вместе с историей изменений. Теперь проект может сопровождать любая команда разработки.
Проект использовал PostgreSQL вместо более привычного для нас MySQL. Во время сопровождения мы подробно изучили существующую архитектуру базы данных и особенности реализации.
В проекте активно использовались:
партиционирование больших таблиц;
JSON-поля;
полнотекстовый поиск PostgreSQL;
Foreign Data Wrappers;
хранимые процедуры и триггеры.
Это позволило понять существующую архитектуру без переписывания системы и безопасно продолжить развитие проекта. Сегодня мы применяем этот опыт и на других проектах с PostgreSQL.
проведен аудит легаси-проекта;
восстановлена работа парсеров;
реализован новый механизм получения данных после изменения API;
подготовлено более 30 документов технической документации;
выполнена инвентаризация внешних сервисов;
создан единый Git-репозиторий;
восстановлена управляемость проекта.
После завершения работ компания перестала зависеть от одного разработчика.
Клиент получил:
полностью документированную систему;
рабочие парсеры тендерных площадок;
прозрачную архитектуру проекта;
единый репозиторий исходного кода;
информацию обо всех внешних интеграциях;
возможность безопасно развивать платформу с любой новой командой разработки.