Обязанности и достижения:
Turron - система поиска видео-исходников (Видео-Shazam)
Об проекте:
Пару месяцев назад, я столкнулся с проблемой поиска интересующих меня видео. Google Lens не мог выдать нужный результат, ему не хватало контекста (в скриншоте его маловато). Так что я решил создать свой аналог Shazam, но для видео. Представляю Turron - поисковик, анализирующий короткие видеофрагменты (2-5 сек.) и находит максимально точные совпадения с помощью перцептивного хеширования ключевых кадров по личной базе данных.
Что сделал:
* Спроектировал и внедрил горизонтально масштабируемую микросервисную архитектуру для поиска по видео на базе перцептивного хэширования (pHash), устойчивого к любым постобработкам.
* Разработал отдельные сервисы для загрузки видео, извлечения ключевых кадров (FFmpeg), генерации и сравнения хэшей (по Hamming Distance), хранения метаданных.
* Настроил Kafka для асинхронного обмена между сервисами и Eureka + API Gateway для автоматической регистрации и маршрутизации.
* Поддержал отказоустойчивость через Circuit Breaker, реализовал полноценную поддержку MinIO (AWS S3 совместимый) для хранения видео.
* Настроил CI/CD через GitHub Actions: автосборка Docker-образов, версионирование и деплой без ручного вмешательства.
* Добавил метрики и мониторинг через Spring Actuator, Prometheus и Grafana — отслеживание производительности в реальном времени.
Результат (которым я доволен!):
* Система масштабируется без блокировок, обрабатывает тысячи видеофрагментов в сутки с высокой точностью и отказоустойчивостью.
* Время от загрузки фрагмента до получения исходника — около 600-800 мс.
* Точность определения совпадений - 97% на валидационной выборке из 1000+ фрагментов (расстояние Хэмминга тащит).
* Система стабильно обрабатывает до 10к видеофрагментов в сутки без деградации и с возможностью линейного масштабирования.
* CI/CD пайплайн ускорил цикл релизов на 70% за счёт автоматической сборки, версионирования и деплоя Docker-образов.
* Архитектура протестирована и готова к расширению на внешние источники видеоконтента без рефакторинга основной логики. В планах работать с YouTube и Jellyfin API.
Стек:
Java 21, Gradle, Spring, Hibernate, PostgreSQL, MinIO, Kafka, Docker, K8s, Prometheus, Grafana, Netflix Eureka.