Исходный код YouTube¶
Исходный код YouTube — совокупность программного обеспечения, на котором работает видеоплатформа YouTube, принадлежащая компании Google (подразделение Alphabet). Платформа не является открытым проектом: её серверный и клиентский исходный код в полном объёме не публикуется, однако отдельные компоненты, библиотеки и инструменты, используемые в работе YouTube, распространяются под свободными лицензиями и доступны для изучения.
¶Общие сведения
YouTube запущен 14 февраля 2005 года тремя бывшими сотрудниками PayPal — Чадом Херли, Стивом Ченом и Джаведом Каримом. В 2006 году платформа приобретена Google за 1,65 млрд долларов. С момента запуска сервис развивался на инфраструктуре Google: серверная часть опирается на дата-центры компании и распределённую систему хранения данных, а клиентская часть представляет собой веб-приложение, работающее в браузере.
Полный исходный код YouTube закрыт и является коммерческой тайной Google. Это типично для крупных проприетарных веб-сервисов: раскрытие серверной логики создало бы риски безопасности и конкурентных преимуществ. Вместе с тем значительная часть технологий, без которых работа YouTube невозможна, открыта.
¶Открытые компоненты
¶Библиотеки Google
Для работы YouTube используются несколько открытых библиотек, разработанных Google:
- Protocol Buffers — формат сериализации структурированных данных, применяемый для обмена сообщениями между серверами и клиентом. Исходный код доступен на GitHub под лицензией BSD.
- gRPC — фреймворк для удалённых вызовов процедур, построенный поверх HTTP/2 и Protocol Buffers. Используется для коммуникации между внутренними сервисами Google, включая компоненты YouTube.
- WebRTC — набор технологий для peer-to-peer обмена аудио- и видеопотоками в браузере. Референсная реализация (libwebrtc) открыта Google.
- Brotli — алгоритм сжатия данных, применяемый для сжатия статических ресурсов и трафика.
- AMP (Accelerated Mobile Pages) — фреймворк ускоренной загрузки мобильных страниц, разработанный при участии Google.
¶Спецификации и стандарты
YouTube активно участвует в стандартизации веб-технологий через консорциум W3C и IETF. Поддержка формата WebM (на основе кодеков VP8/VP9 и AV1) и внедрение MSE (Media Source Extensions) и EME (Encrypted Media Extensions) в браузеры во многом определялись требованиями видеоплатформ, включая YouTube.
¶Клиентская часть
Веб-клиент YouTube написан на JavaScript с использованием внутренних фреймворков Google. До 2017 года активно использовался фреймворк Closure, разработанный Google и распространяемый под Apache License 2.0. Позже значительная часть интерфейса была переписана на Polymer — библиотеку веб-компонентов, также разработанную Google и открытую под Apache License 2.0.
Мобильные приложения YouTube для Android написаны на Java/Kotlin и используют внутренние библиотеки Google; исходный код приложений не публикуется. Существует также нативный клиент для телевизионных приставок и смарт-ТВ.
¶Серверная часть
Серверная инфраструктура YouTube построена на внутренних системах Google:
- Google File System (GFS) и его преемник Colossus — распределённая файловая система для хранения видеофайлов и метаданных.
- Bigtable — распределённая NoSQL-база данных, используемая для хранения логов, метаданных и данных о просмотрах.
- Spanner — глобально распределённая реляционная база данных с синхронной репликацией.
- Borg — система оркестрации контейнеров, предшественник Kubernetes, управляющая запуском сервисов в дата-центрах Google.
Исходный код GFS, Bigtable и Borg в закрытой форме недоступен, однако их принципы описаны в публичных научных статьях инженеров Google, а отдельные реализации (например, HDFS в составе Hadoop) вдохновлены этими системами.
¶Инструменты для разработчиков
Для сторонних разработчиков Google предоставляет YouTube Data API v3, позволяющую получать доступ к публичным функциям платформы: поиск видео, управление каналами, загрузка метаданных. API основан на REST и поддерживает форматы JSON и XML. Доступ к API осуществляется через ключи, выдаваемые через Google Cloud Console.
Также существует YouTube IFrame Player API, позволяющий встраивать проигрыватель YouTube на сторонние веб-страницы и управлять его поведением из JavaScript.
¶Значение
Изучение открытых компонентов YouTube имеет практическое значение для разработчиков: библиотеки Google, лежащие в основе платформы, применяются в тысячах проектов по всему миру. Вместе с тем закрытость основного кода платформы остаётся предметом дискуссий о прозрачности крупных технологических компаний и о том, насколько пользователи и регуляторы могут влиять на алгоритмы формирования рекомендаций и модерации контента.
Источники:
- Протоколы и документация Google (developers.google.com)
- Исходный код библиотек Google на GitHub
- Научные статьи Google (GFS, Bigtable, Spanner, Borg)
- Документация YouTube Data API