- О проекте:
Платформа для сбора данных по торгам с криптобирж, анализа данных и построения графиков, ранжирования, принятия решений на основе результатов аналитических вычислений в режиме реального времени.
MoonHub собирает и объединяет новостные данные по криптовалюте, с возможностью в режиме реального времени просматривать всю информацию по криптовалюте на одном экране, от постов в твиттере до влияния их на капитализацию и построение японских свечей.
- Стек технологий:
NodeJS, React, PostgreSQL, Redis, Tarantool, NATS, AWS, Docker
- Задача
Клиент разбирался в криптовалюте и имел связи в мире криптобирж. Он понимал, что существующие продукты не позволяют получить всю информацию в одном месте и пришел к нам с идеей информационного ресурса, который будет агрегировать всю открытую информацию по криптовалютам. А благодаря функционалу соц. сетей можно не только видеть аналитическую информацию, но и обсуждать ее с другими пользователями ресурса.
- Процесс работы:
- Разработка ТЗ. На этом этапе идея была оформлена в описание технической реализации. Были разработаны математические модели и изучены интеграции со сторонними системами.
- Разработка дизайна
- Разбивка работы на этапы, формирование более детальных спецификаций в рамках каждого этапа, в том числе уточнение следующих этапов на основе обратной связи и тестирование предыдущих
- Процесс работы:
- В рамках каждого отдельного этапа была произведена разработка, тестирование и запуск в тестовую эксплуатацию части проекта.
- Бета-тестирование функционала на предрелизном окружении, внесение изменений в UX, математические модели, отсев ненадежных источников данных и формирование пула работ на следующий этап
- Результаты:
Мы запустили первую в мире интеграционную платформу сообщества с уникальным акцентом на цифровые активы. В процессе было решено множество проблем с получением, валидацией и обработкой данных из внешних источников, откорректированы математические модели, также было проведено нагрузочное тестирование и тестирование безопасности приложения.
Немного технических деталей: Мы реализовали несколько типов хранилищ данных:
- краткосрочное копирующее для быстрого доступа к текущим расчетам
- краткосрочное оперативное (до 48 часов) с совмещением хранилищем и сервером приложений
- долгосрочное на основе временных рядов с возможностью настраивать время хранения и сжатия данных
- бд общего назначения для хранения конфигурации, пользователей, результатов расчетов
Tarantool по веб сокетам получал данные из различных источников, раскладывал их по хранилищу и производил расчет зависимых значений, фоновые задачи обрабатывали полученные данные по цепочке расчетов и плавающему временному окну и складывали результаты вычислений как в текущее хранилище, так и во внешние хранилища. Была применена кластеризация хранилища.
Для пользователей был разработан промежуточный сервис, который принимал запросы на подписку на изменение значений, агрегировал их и подписывался на события в оперативном хранилище.
Кроме того, было реализовано несколько сервисов по обслуживанию хранилища временных рядов: первичное заполнение, очистка, сжатие, поиск и заполнение пустот в случае сбоев в наполнении данных.
В результате пользователь получал обновляемые в режиме реального времени японские свечи, агрегированные курсы валют, аналитическую информацию по объемам торгов по биржам, активам, всему рынку в разрезе от 5 минут до 2х недель с глубиной просмотра информации до 10 лет
Применение различных типов хранилищ позволило выбирать наиболее оптимальные технологии для хранения различных данных - от меняющихся несколько раз в секунду и вычислениями имеющими прямой доступ к данным и до “холодных” хранилищ для исторических данных, которые не меняются после их получения