О чём эта история

Платформа GetCourse — это инфраструктура для организации и проведения онлайн‑обучения, которую создали в России и применяют в 48 странах мира. Сейчас на площадке размещено более 700 тысяч онлайн‑курсов, а количество видеоданных в хранилище GetCourse приблизилось к 6 ПБ. Хотя штаб‑квартира GetCourse находится в Москве, до 2022 года существенная часть этого объёма хранилась в зарубежных ЦОДах, но в начале года команда решила разработать план действий на случай форс‑мажора и продублировать всю инфраструктуру в России.

Для хранения всего видеоконтента они подключили S3‑хранилище Yandex Object Storage, а чтобы при необходимости иметь возможность снова сжать исходные файлы, настроили переформатирование файлов — транскодинг. Транскодинг выполнялся в облаке на виртуальных машинах Yandex Compute Cloud общей мощностью 12 000 vCPU и 64 000 ГБ RAM. В результате эксперимента стоимостью 250 тыс. рублей команда пришла к выводу, что сможет сэкономить на оплате S3‑хранилища до 20 млн рублей в год.

Задача — перенести данные «на лету»

GetCourse — площадка «всё в одном» для онлайн‑школ. На данный момент в хранилищах GetCourse размещено более 3 млн видеоуроков и записей домашних заданий от 5 млн учеников общим объёмом почти 6 ПБ. Площадка позволяет преподавателям не только сохранять видеолекции, но и защищать их от копирования: у GetCourse есть собственные разработки по защите авторского контента с помощью водяных знаков, которые встраиваются в видеопоток в процессе стриминга ученику, что позволяет сделать каждую копию просматриваемой лекции уникальной.

В начале 2022 года команда GetCourse решила разработать план действий на случай, если нужно будет быстро сменить ЦОД для хранения видеоданных.

Главными требованиями к провайдеру были нахождение всех ЦОД на территории России, а также возможность осуществить перенос почти 6 ПБ данных в кратчайшие сроки без остановки работы платформы.

К идее переноса своих данных в облачное хранилище команда GetCourse пришла не сразу. Первым сценарием рассматривали миграцию в выделенное хранилище. Этот сценарий подходил по многим параметрам, за исключением ключевого — времени, которое потребовалось бы для переноса 6 ПБ данных. Так как сценарий рассчитывался на случай экстренного переезда, от этого плана решили отказаться.

Тогда у команды появилась идея не дублировать данные, а при необходимости запустить процесс транскодинга — преобразования видеофайлов из одного формата в другой — и переноса всего хранилища в новый ЦОД в реальном времени. Такая нетривиальная задача требовала огромных мощностей, предоставить которые в сжатые сроки могли только облачные провайдеры.

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

Транскодинг петабайтов данных в облаке

Для проекта были подключены два сервиса Yandex Cloud:

  • Yandex Compute Cloud — для транскодинга.
  • Yandex Object Storage — для хранения преобразованных видеофайлов и дальнейшего стриминга оттуда конечным пользователям.

Чтобы подготовиться к потенциальному переезду, нужно было подобрать оптимальную конфигурацию машин, установить и настроить на них собственное программное обеспечение GetCourse для транскодинга, подготовить все алгоритмы действий и рассчитать необходимое время полной миграции. Команда GetCourse организовала экспериментальную миграцию части данных.

Эксперимент проходил в три итерации.

На первом этапе были выбраны виртуальные машины и подключены сетевые HDD‑ и SSD‑диски Yandex Compute Cloud. Процесс транскодинга настроили с помощью HDD‑ и SSD‑носителей, но уже при первых запусках стало ясно, что это не сработает. Транскодинг проходил слишком медленно из‑за того, что сетевые диски работали слишком медленно. Инженеры GetCourse рассчитали требуемую скорость записи, и оказалось, что достичь нужного результата средствами сетевых дисков не получится.

Во второй итерации команда решила использовать для транскодинга оперативную память виртуальных машин для RAM‑дисков. Для этого этапа выбрали виртуальные машины без SSD, но с максимально возможным количеством ядер (96 vCPU) и максимальным количеством оперативной памяти (640 ГБ RAM). Однако при запуске транскодинга снова возникли трудности: на этот раз не хватало пропускной способности сети. Специалисты технической поддержки Yandex Cloud помогли по‑другому собрать виртуальные машины и настроить NAT таким образом, чтобы задержек на сетевом уровне не возникало.

К началу третьей итерации своего эксперимента команда GetCourse имела настроенные виртуальные машины и сеть, которые полностью удовлетворяли её запросам. Задачей этого этапа стало увеличение объёма видеоданных, которые бы обрабатывались параллельно. Для этого запросили у Yandex Cloud квоту на подключение виртуальных машин суммарной мощностью 12 000 vCPU и 64 000 ГБ RAM.

Процесс транскодинга происходил по следующей схеме:

  • Исходное видео размещалось в S3‑хранилище сервиса Yandex Object Storage.
  • На виртуальной машине Yandex Compute Cloud, где было установлено всё необходимое ПО для транскодинга, запускался процесс переформатирования видеофайла.
  • Полученные фрагменты записывались в памяти виртуальной машины.
  • Когда в памяти собиралась полная версия видеофайла, он переносился обратно в S3‑хранилище.

Быстро и экономно: оптимизированное S3‑хранилище

В результате эксперимента компания GetCourse получила план действий на случай экстренного переноса хранилища. Для команды важно, чтобы миграция при необходимости прошла быстро и бесшовно. Сейчас, по оценкам сотрудников GetCourse, запуск одной виртуальной машины занимает у них не более 5 минут. Такая скорость достигается благодаря нескольким факторам:

  • Подключение любого объёма новых мощностей через панель управления в течение нескольких минут.
  • Предустановка на виртуальные машины необходимого минимума ПО.
  • Круглосуточная техподдержка экспертов Yandex Cloud, которые помогают оперативно решать возникающие проблемы.

В результате эксперимента стоимостью 250 тыс. рублей команда пришла к выводу, что сможет сэкономить на оплате S3‑хранилища до 20 млн рублей в год.

Мнение

Сергей Михайлов,
CEO и основатель GetCourse
Сергей Михайлов,
CEO и основатель GetCourse

Когда мы выбирали Yandex Cloud, приставка Yandex сыграла ключевую роль. У нас есть большое доверие этому бренду. И особенно важно, что это технологическая компания. Yandex Cloud — это про IT.