Комплексная разработка решения для автоматического сбора информации
Бизнес составляющая проекта
Заказчику необходимо разработать решение для мониторинга и сбора информации на различных ресурсах с целью наращивания объёма продаж. Разработанная система должна значительно ускорить и автоматизировать рутинные действия по поиску и сбору контактов потенциальных клиентов.
Технологические особенности проекта
Система предназначена для сбора и отображения данных из таких источников, как Crunchbase, Angel.co и др., магазинов приложений Google Play и App Store. Вся полученная информация интегрируется с CRM заказчика.
Приложение позволяет осуществлять сбор любой информации, которая может быть полезной для отдела продаж.
Полученные данных хранятся в облачной базе данных. Реализована возможность фильтрации по различным полям, а также экспорт данных в CSV. Проект развёрнут на инфраструктуре Google Cloud.
Парсеры запускаются по планировщику, что позволяет избежать слишком высокой нагрузки на производительные мощности заказчика. Помимо основных краулеров и парсеров, предусмотрена очередь для парсера-апдейтера, который позволяет обновить информацию по уже собранным данным. Также подготовлен специальный сервис, отображающий «здоровье» парсеров. Это позволяет своевременно предупреждать возникновение серьёзных ошибок в работе системы и вовремя вносить необходимые изменения, позволяющие восстанавливать работоспособность.
Подходы и решения
- Улучшение и рефакторинг парсеров заказчика. В подготовленных командой заказчика парсерах, реализованных на Node.js, не были выделены важнейшие слои. В том числе фронтенд и доступы к базе данных из парсеров хранились в одном месте. Для реализации микросервисной архитектуры были предприняты следующие шаги:
- Выделение отдельного сервиса на Kotlin для доступа к базе данных Google Cloud SQL. В качестве внешнего интерфейса был использован gRPC.
- Рефакторинг и стабилизация парсеров.
- Очистка компонента парсеров от неиспользуемого кода.
- Реализация функциональности для подписки контактов на рассылку компании. Для нужд отдела маркетинга реализована функциональность, позволяющая быстро и удобно принимать решения по подписке/отписке контактов, собранных из CRM, на рекламную рассылку компании в SendGrid.
- Подготовка специального парсера для Twitter. Команда ДжазТим подготовила отдельный парсер для обработки информации из нового источника. Это позволило собрать новую аудиторию для показа таргетированной рекламы об услугах компании. В аудиторию вносятся подписчики определённых аккаунтов, полученные данные экспортируются в отдельный CSV файл. В дальнейшем эта информация автоматически отправляется в рекламную кампанию, и необходимые контакты видят таргетированную рекламу об услугах заказчика.
Особенности проекта
- На момент начала работы нашей команды на проекте уже были реализованы парсеры Google Play, App Store, Angel.co и Crunchbase. Необходимо было доработать и улучшить имеющиеся решения.
- Выполнение всего комплекса разработки специалистами ДжазТим: подготовка как фронтенд-, так и бэкенд-части системы.
- Моментальная поставка разработанной функциональности заказчику. По желанию заказчика на проекте отсутствовала стадия тестирования, stage-версии системы. Поставки новой функциональности осуществлялись сразу же на продакшен версию. Это требовало от команды особой аккуратности и большого акцента на автотестировании.
- Высокая степень зависимости от нововведений и защитных механизмов сайтов и магазинов, с которых осуществляется сбор информации. Для поддержки работы парсеров было необходимо отслеживать изменения условий и оперативно адаптироваться под них.
Используемые технологии
- Парсер:
- Google Cloud: App Engine, Cloud Tasks, Cloud Scheduler, Cloud Storage.
- Node.js, JavaScript, ES6, gRPC, Sentry.
- Библиотеки: express, axios, cheerio, close.io, google-play-scraper, @sendgrid/eventwebhook и др.
- Сервисы:
- Google Cloud: Cloud Run, Cloud SQL, Cloud Tasks.
- Kotlin, Armeria, Flyway, MySQL, jOOQ, gRPC, SendGrid.
Достижения компании на проекте
- Создано несколько новых парсеров для разных площадок (Twitter, Gmail).
- Успешно проведены исследования по методам выгрузки данных, в результате чего найдено оптимальное и удобное для работы решение.
- Оптимизирована скорость работы с облачной базой данных.
- Особое внимание было уделено оптимизации запросов для отображения данных из Google Play.
Свяжитесь с нами, чтобы обсудить Ваш IT-проект