Тема проекта: Сбор и анализ потоковых данных криптовалют.

Цель и задачи проекта

Цель проекта: обработать потоковые данные по криптовалютам и создать интерактивный дашборд.

  1. Собрать  данные по криптовалютам из потока.
  2. Сохранить данные в хранилище и собрать витрину.
  3. Визуализировать данные в виде дашборда.
  4. Сделать выводы по выполненному проекту.

Какие технологии использовались

  • Kafka 
  • S3 Minio
  • ClickHouse
  • Docker
  • Parquet
  • Python

Kafka

Цель использования:

Для реализации асинхронной и надежной передачи потоковых данных с источника

Почему выбрали:

Высокая отказоустойчивость и горизонтальная масштабируемость.

Поддержка множества клиентских библиотек и интеграций.

Возможность хранить данные как временное буферное хранилище.

Впечатления:

Плюсы: Отличная производительность при работе с большими объемами данных, гибкость в топологиях сообщений (topics, partitions, consumer groups).

Минусы: Сложности в настройке и мониторинге кластера, особенно без специализированных инструментов. Требует понимания концепций логгирования и партиционирования.

S3 MinIO

Цель использования:

Для долгосрочного хранения неструктурированных данных (сырые данные).

Почему выбрали:

Совместимость с AWS S3 API позволяет легко переносить решения в облако.

Бесплатный и open-source. Простая интеграция с другими компонентами системы.

Впечатления:

Плюсы: Простота развертывания, хорошая документация, поддержка multipart upload, шифрования и т.д.

Минусы: Не все функции облачного S3 доступны «из коробки», но для большинства задач хватает.

ClickHouse

Цель использования:

Для аналитической обработки больших объемов данных в режиме реального времени.

Почему выбрали:

Очень высокая скорость выполнения аналитических запросов.

Поддержка вставки миллионов строк в секунду.

Удобная SQL-совместимая оболочка.

Впечатления:

Плюсы: Невероятно быстрый движок для OLAP-запросов, особенно если правильно использовать движки таблиц (MergeTree и его вариации).

Минусы: Не предназначен для OLTP, некоторые операции обновления/удаления ограничены, может быть сложно настроить безопасность и кластеризацию без опыта.

Docker

Цель использования:

Для контейнеризации сервисов, упрощения развёртывания и изоляции окружений.

Почему выбрали:

Позволяет создавать воспроизводимые окружения.

Упрощает запуск и тестирование сервисов локально.

Облегчает деплой на разных стадиях CI/CD.

Впечатления:

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

Минусы: При увеличении числа сервисов начинает нужна оркестрация (например, Kubernetes), а также важно правильно организовать сетевую и дисковую политику.

Streamlit

Цель использования:

Разработка интерактивного пользовательского интерфейса для отображения результатов анализа данных и работы ML-моделей.

Почему выбрали:

Простота освоения и быстрое создание MVP.

Интеграция с популярными библиотеками (Pandas, Matplotlib, Plotly, Scikit-learn)

Не требует знания HTML/CSS/JavaScript для создания прототипов.

Впечатления:

Плюсы:

Очень простая и интуитивная API. Отлично подходит для экспериментов и быстрого показа результатов коллегам или заказчику.

Минусы:

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

Parquet

Цель использования:

Хранение  больших объёмов структурированных данных.

Почему выбрали:

Поддерживает сжатие и кодирование, что уменьшает размер хранимых данных.

Хорошо интегрируется с такими инструментами, как Pandas, ClickHouse, S3 и другими.

Позволяет сохранять схему данных вместе с самими данными.

Впечатления:

Плюсы:

Отличная производительность при чтении подмножества полей.

Хорошая совместимость между разными платформами и фреймворками.

Минусы:

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

Что получилось

Ссылки:

https://github.com/netart-studio/otus_de_project

BI, Дашборд

Графики котировок со средними скользящими и кривые спредов

Видео демонстрация

Демонстрация проекта: rutube.ru

Выводы

  • Цель проекта достигнута. Все поставленные задачи выполнены.
  • Трудности были с настройкой Kafka
  • На выполнение проекта ушло две недели. 
  • Проект оказался полезным, я освоил новые для себя инструменты такие как Kafka, S3 Minio, Clickhouse. Полезность проекта оцениваю в 10 балов.