Поддержка и развитие
SaaS-платформы для поиска тендеров на Laravel
и PostgreSQL

Как мы приняли на поддержку легаси-проект без документации, восстановили работу критических парсеров и передали клиенту полностью управляемую систему
Клиент: EWATender.

Отрасль: B2B SaaS, государственные и коммерческие закупки.

Услуги:

  • аудит легаси-проекта;
  • техническая поддержка Laravel;
  • сопровождение SaaS;
  • reverse engineering;
  • разработка технической документации;
  • сопровождение PostgreSQL;
  • разработка и поддержка парсеров;
  • миграция кода;
  • технический аудит.
Технологии: Laravel, Vue.js, Nuxt.js, PostgreSQL.

О проекте

EWATender — SaaS-платформа для поиска и анализа государственных и коммерческих тендеров.

Сервис агрегирует информацию с различных площадок, помогает пользователям искать закупки, а также предоставляет дополнительные образовательные продукты и услуги тендерного сопровождения.

За годы развития система превратилась в крупный легаси-проект с большим количеством интеграций, парсеров и внутренних сервисов.

С какой проблемой столкнулся клиент

На протяжении примерно пяти лет систему развивал один разработчик. После его ухода выяснилось сразу несколько критичных проблем:

  • отсутствовала техническая документация;
  • бизнес не понимал устройство собственного продукта;
  • часть парсеров перестала корректно работать;
  • код был распределен между несколькими репозиториями или вовсе отсутствовал;
  • внешние сервисы и доступы были известны только бывшему разработчику.

Перед нами стояла задача не просто исправить ошибки, а принять проект на полноценную техническую поддержку и сделать его независимым от конкретного исполнителя.

Что мы сделали

Провели технический аудит проекта

Работа началась с полной инвентаризации системы. Мы изучили архитектуру платформы, восстановили принципы работы сервисов и одновременно начали создавать техническую документацию, которой ранее не существовало. Фактически пришлось выполнить обратный инжиниринг проекта.

Восстановили работу парсеров

Основная ценность платформы — актуальная информация о тендерах. Во время аудита выяснилось, что часть парсеров работала некорректно. Из-за этого пользователи не видели часть закупок. Мы проверили работу всех парсеров, определили причины ошибок и восстановили корректную обработку различных источников данных.

Решили проблему после изменения API государственных закупок

Во время сопровождения произошел критический инцидент.

Основной источник данных изменил способ предоставления информации и ввел ограничения на количество запросов. Стандартный механизм перестал позволять получать весь необходимый объем данных. Мы проанализировали доступные варианты и реализовали альтернативный способ получения информации через API мобильного приложения.

После этого появилась новая проблема — ограничение количества страниц при выборке. Мы переработали алгоритм запросов, разделив их по категориям и типам закупок, что позволило продолжить получать полный объем данных.

Создали техническую документацию

Одной из важнейших задач стало документирование проекта. Мы подготовили более 30 технических документов, описав:

  • архитектуру системы;
  • работу каждого парсера;
  • внешние интеграции;
  • резервное копирование;
  • запуск проекта;
  • обслуживание инфраструктуры;
  • используемые сервисы.

После завершения работ клиент получил полный комплект документации для дальнейшего сопровождения системы.

Передали клиенту исходный код

До начала проекта часть кода отсутствовала в репозиториях или находилась только у предыдущего разработчика. Мы объединили кодовую базу, подготовили единый Git-репозиторий и передали его заказчику вместе с историей изменений. Теперь проект может сопровождать любая команда разработки.

Работа с PostgreSQL

Проект использовал PostgreSQL вместо более привычного для нас MySQL. Во время сопровождения мы подробно изучили существующую архитектуру базы данных и особенности реализации.

В проекте активно использовались:

  • партиционирование больших таблиц;
  • JSON-поля;
  • полнотекстовый поиск PostgreSQL;
  • Foreign Data Wrappers;
  • хранимые процедуры и триггеры.

Это позволило понять существующую архитектуру без переписывания системы и безопасно продолжить развитие проекта. Сегодня мы применяем этот опыт и на других проектах с PostgreSQL.

Что было сделано

  • проведен аудит легаси-проекта;
  • восстановлена работа парсеров;
  • реализован новый механизм получения данных после изменения API;
  • подготовлено более 30 документов технической документации;
  • выполнена инвентаризация внешних сервисов;
  • создан единый Git-репозиторий;
  • восстановлена управляемость проекта.

Что получил клиент

После завершения работ компания перестала зависеть от одного разработчика.

Клиент получил:

  • полностью документированную систему;
  • рабочие парсеры тендерных площадок;
  • прозрачную архитектуру проекта;
  • единый репозиторий исходного кода;
  • информацию обо всех внешних интеграциях;
  • возможность безопасно развивать платформу с любой новой командой разработки.

Какие задачи мы решаем на подобных проектах

Этот кейс показывает нашу экспертизу в следующих направлениях:

  • поддержка Laravel-проектов;
  • сопровождение SaaS-платформ;
  • аудит легаси-систем;
  • reverse engineering;
  • техническая документация;
  • разработка и сопровождение парсеров;
  • сопровождение PostgreSQL;
  • восстановление проектов после ухода разработчиков;
  • принятие чужого кода на поддержку;
  • развитие сложных веб-систем без полной переработки архитектуры.

Итог

EWATender — хороший пример того, что далеко не каждый проект требует переписывания с нуля.

Даже если документация отсутствует, архитектура сложна, а бизнес зависит от одного разработчика, систему можно принять на сопровождение, восстановить ее управляемость и обеспечить дальнейшее развитие без остановки продукта.