Coinmarket — сервис для сбора данных и анализа рынка

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

Сроки и цены

Альфа-версия 3 месяца Бета-версия 2 месяца

Технологии

Backend Symfony3 (PHP7)

Команда

Разработчики Дмитрий Константинов Артемий Анцев Николай Баранов Александр Дорожкин Алексей Калина CEO Константин Брумм

О проекте

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

Задачи

  • Создать систему, способную обрабатывать большие объемы данных
  • Реализовать возможность парсинга данных, различных по формату

Решение

Сервис анализирует огромное количество информации: мы подключили порядка 30 бирж и создали возможность для менеджера подключать большинство бирж в административной панели. Для этого мы провели анализ API всех известных нам бирж и выделили общие шаблоны их парсинга. Эти шаблоны мы заложили в логику добавления новой биржи, и если биржа подходит по формату к автоматическим парсерам (о них — далее), ее можно просто добавить в админке.

Парсинг бирж — самая сложная и однозначно самая интересная часть работы над проектом. Основной задачей была как раз обработка данных без потери скорости; последовательный парсинг с ней бы не справился, и мы реализовали параллельный парсинг. Делаем это через очереди на RabbitMQ.

Как уже говорили выше, биржи могут существенно различаться по формату API, поэтому мы использовали разные виды парсеров: — простой парсер, когда при запросе биржа отдает все актуальные тикеры по одному URL; — двойной парсер, когда список тикеров отдается по другому урлу, в качестве параметра принимается список торговых пар из первого метода; — множественный парсер, тикер по каждой валютной паре получается отдельным запросом. Запросы выполняются в одно время в одном php-скрипте; — кастомные парсеры. Когда данные от биржи не попадают ни под один из существующих парсеров, мы писали новый класс парсера.

Большой объем работы пришелся на обработку полученных данных от парсинга. Сначала мы выделили общие метрики у валют, за которыми следим на бирже, такие, как курс к доллару, объем, circulation supply и пр. А после парсинга мы реализуем анализ пар по каждой валюте, вычисление курсов, изменений цен и статистики.

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

Evercode Lab

Close