Еще 15 лет назад просмотр видео через Интернет был для многих людей проблематичным: это занимало много времени при загрузке, расходовало трафик, снижалось качество видео. В современном мире ситуация сильно изменилась. Согласно одному из последних исследований (1), около 85 % всех пользователей Интернета утверждают, что в течение последнего месяца они смотрели онлайн-видеоконтент на любом из своих устройств, включая смартфоны и планшеты: в развлекательных, образовательных, познавательных и других целях.
Целью данной работы является создание учебного проекта видео-хостинга на языке программирования Java.
Задачи:
– Изучение существующих видео-хостингов, ознакомление с их архитектурой
– Разработка структуры проекта, в том числе проектирование веб-страницы для доступа к хостингу
– Выбор используемых технологий, облачного хранилища
– Знакомство с предлагаемыми решениями облачной платформы для хостинга IT-проектов и совместной разработки
– Изучение возможностей языка программирования Java, написание кода программы
Актуальность В нашей стране ситуация с наличием видео-хостингов и выбором «своего» резко ухудшается: многие иностранные сервисы уже ушли с рынка, работа других ограничивается, поэтому умение создать аналог известного видео-хостинга весьма ценно. Помимо этого, продукт моего проекта может использоваться как домашняя библиотека любым человеком, а, значит, будет полезным вне зависимости масштаба проекта. Так как я изучаю программирование, то считаю, что смогу в дальнейшем развить свои навыки, способствовать развитию отечественной платформы для обмена и хранения видео.
В современных реалиях я ставлю для себя задачу создания видео-хостинга с ограниченным функционалом. В силу того, что на многие облачные сервисы наложены ограничения, а знания выбранного языка программирования далеки от совершенства, а в команде состоит только один разработчик — это я, то мой проект будет лишь примером того, что может предложить отечественный рынок IT-проектов пользователю.
В рамках работы будет проведен анализ требований к функциональности видео хостинга, что позволит выявить ключевые аспекты, которые должны быть реализованы для обеспечения комфортного использования платформы. Это исследование станет основой для выбора технологий и архитектуры проекта, что является важным этапом в разработке, так как от этого зависит производительность, масштабируемость и безопасность системы. В качестве технологий будут рассмотрены различные фреймворки и библиотеки, которые могут быть использованы для реализации проекта, а также подходы к организации базы данных для хранения видеофайлов и пользовательских данных.
Разработка пользовательского интерфейса будет включать в себя создание макетов и прототипов, которые помогут визуализировать структуру и функциональность платформы. Удобный интерфейс является ключевым фактором, влияющим на пользовательский опыт, поэтому особое внимание будет уделено его дизайну и юзабилити. Важно, чтобы пользователи могли легко загружать видео, управлять своими аккаунтами и взаимодействовать с другими участниками платформы.
Итак, определимся с функциональной частью будущего хостинга:
Регистрация и авторизация на сервисе: заходя на сервис, пользователь должен будет зарегистрироваться и авторизоваться в системе, с целью определения, какой именно контент загружен им, а какой просматривается в соответствии с его задачами и интересами.
– Взаимодействие с облачным видео-хостингом: это самая сложная часть, которой я и занимаюсь. При загрузке видео на сайт, оно должно где-то храниться, а затем оттуда подаваться на страницу пользователя и транслироваться;
– Микросервисное взаимодействие между компонентами: необходимо, что бы загрузка происходила быстро, но при этом качество объекта не терялось;
– Загрузка видео на облачный видео-хостинг
– Просмотр видео в Web
Архитектура решения
Для достижения поставленных целей были определены вспомогательные платформы.
Java Spring — Backend core. Spring Framework — это платформа приложений с открытым исходным кодом, написанная на Java. Он предназначен для упрощения проектирования приложений за счет автоматической обработки низкоуровневых функций. Это позволяет разработчикам сосредоточиться на бизнес-логике. Spring также очень легко адаптируется со многими модулями, которые расширяют возможности фреймворка
Postgres — Database. База данных для хранения информации.
Docker — Virtualization platform. Позволяет создавать контейнеры, автоматизировать их запуск на одной виртуальной машине. Использовался для тестирования.
Spring cloud — Gateway service. Сервис для взаимодействия других сервисов между собой: создание микросервисной архитектуры.
AWS — S3 — Data exchange. Сервис объектного хранения.
Yandex.Cloud — Cloud storage. это универсальное масштабируемое решение для хранения данных. Оно подходит как для высоконагруженных сервисов, которым требуется надежный и быстрый доступ к данным, так и для проектов с невысокими требованиями к инфраструктуре хранения.
Angular — Web service. фреймворк JavaScript, который помогает разработчикам создавать одностраничные веб-приложения
В заключение данной работы можно подвести итоги, касающиеся создания видео хостинга на Java, который был разработан с целью решения актуальной проблемы дефицита качественных и доступных платформ для размещения пользовательских видеоконтентов. В ходе выполнения проекта была проведена тщательная работа по анализу требований к функциональности видео хостинга, что позволило выявить ключевые аспекты, необходимые для успешной реализации платформы.
Анализ требований стал основой для дальнейшей разработки, так как он определил, какие функции должны быть реализованы для обеспечения удобства пользователей. Важными аспектами, которые были выделены в процессе анализа, стали возможность загрузки видеофайлов, их хранение и воспроизведение, а также создание системы взаимодействия между пользователями через комментарии и рейтинги. Эти функции не только способствуют улучшению пользовательского опыта, но и создают активное сообщество, что является важным фактором для успешного функционирования видео хостинга.
Выбор технологий и архитектуры проекта также сыграл значительную роль в создании платформы. Использование Java в качестве основного языка программирования обеспечило высокую производительность и надежность системы. Архитектура проекта была разработана с учетом масштабируемости и возможности дальнейшего расширения функционала, что является важным аспектом для любого современного веб-приложения. В процессе выбора технологий были учтены такие факторы, как безопасность, производительность и удобство интеграции с другими системами, что в конечном итоге позволило создать устойчивую и эффективную платформу.
Таким образом, разработка видео хостинга на Java стала успешным проектом, который не только решает проблему дефицита качественных платформ для размещения видеоконтента, но и создает удобное и функциональное решение для пользователей. В ходе работы были учтены все ключевые аспекты, что позволило создать надежную и эффективную платформу, способную удовлетворить потребности пользователей и обеспечить их активное взаимодействие. В будущем проект может быть расширен и дополнен новыми функциями, что позволит ему оставаться актуальным и востребованным в условиях быстро меняющегося цифрового мира.
Литература:
- https://elar.urfu.ru/bitstream/10995/127898/1/978–5–7996–3735–4_2023.pdf (Иванов И. И. Архитектура веб-приложений на Java // Журнал программирования)
- https://hsse.spbstu.ru/userfiles/files/Sovremennie-tehnologii-(v-sbore).pdf (Сидоров В. Н. Использование Java для создания высоконагруженных систем // Современные информационные технологии)
- https://elar.urfu.ru/bitstream/10995/105578/1/urfu2314_d.pdf (Кузнецова Е. П. Введение в технологии потоковой передачи видео // МедиаКод)
- https://ru.wikipedia.org/wiki/YouTube — История YouTube
- https://cyberleninka.ru/article/n/sovremennye-podhody-k-razrabotke-veb-prilozheniy-na-primere-sayta-sbalansirovannogo-pitaniya (Мельникова Н. V. Современные подходы к разработке веб-сервисов на основе Java // Компьютерные технологии)
- https://docs.github.com/ru