Как создавалась самописная облачная платформа для бизнеса Platformcraft

Как создавалась самописная облачная платформа для бизнеса Platformcraft

Приветствуем всех, кто интересуется облачным хранением данных.

История Platformcraft началась с маленького дочернего проекта и привела к созданию независимой облачной платформы для бизнеса. Расскажем, как это произошло!

Cloud4Video: начало проекта

История Platformcraft началась внутри CDNvideo, российского провайдера услуг по доставке контента. В 2012 году у нас начали появляться клиенты, интересующиеся хранением данных, но в компании не было собственного облачного хранилища.

Поэтому мы приобрели лицензию на готовый продукт и быстро развернули его на наших серверах. Мы использовали монолитный набор сервисов, над которым работал сторонний программист, и назвали его Ficus.

Однако проект оказался абсолютно нерентабельным:

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

В 2014 году руководство CDNvideo приняло решение передать проект коммерческому директору и продуктологу. Они, в свою очередь, передали поддержку текущей системы компании ITSumma и избавились от Ficus, так как его масштабирование оказалось невозможным.

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

Разработка новой инфраструктуры

В середине 2014 года к нашей команде присоединился новый разработчик, который внедрил ряд сервисов и предложил перейти к open-source хранилищу.

К концу года мы уже работали над первым полноценным образцом продукта, который сразу же начали тестировать клиенты, в том числе телеканал РЕН ТВ.

MongoDB и OpenStack Swift: первые шаги к успеху

Для метаданных мы выбрали MongoDB в конфигурации Replica Set. Оставалось только найти подходящее хранилище, и ITSumma предложила использовать платформу OpenStack Swift, взяв на себя административные задачи.

Мы написали сервисы на Go, и уже на этом этапе у нас получилась рабочая инфраструктура:

Инфраструктура объектного облачного хранилища на Go.
Инфраструктура объектного облачного хранилища на Go.

После нескольких недель тестирования Swift, хранилище потеряло все данные незадолго до запуска в продакшн. Но это были только тестовые файлы, и клиентская информация осталась невредимой.

Итак, нам срочно нужно было решить проблему. Отказ от Swift вызван его сложностью в масштабировании и поддержке. Тогда мы рассмотрели разные альтернативы:

  • Elliptics,
  • Ceph,
  • Hadoop.

Все они оказались слишком сложными и требовали большой команды инженеров. В связи с ограниченными ресурсами и отсутствием бюджета, мы решили создать собственное хранилище – DEPOT.

Наш разработчик вдохновился Elliptics и создал key-value базу для хранения данных любого размера с оптимальным алгоритмом записи на HDD.

Алгоритм работы хранилища.
Алгоритм работы хранилища.

Мы обеспечили надежность и доступность данных с помощью тройной репликации, где каждый файл создает три копии на разных узлах в распределенных дата-центрах. Это гарантирует, что данные будут доступны, только если достигнут кворум (минимум 2 реплики).

Новый прототип хранилища был написан на Go всего за несколько недель и успешно запущен. Благодаря этому, мы смогли удержать текущих клиентов и привлечь новых, такие как МИР ТВ, Комсомольская Правда, Известия, ViP Play и другие.

Преобразование от прототипа к повышенной производительности

Хранилище на Go успешно служило два года, но с увеличением трафика нам потребовались более мощные ресурсы для обработки таких объемов контента.

Мы столкнулись с проблемами, связанными с языком», который потреблял значительные ресурсы и снижал производительность. Мы решили перейти на Rust, чтобы оптимизировать инфраструктуру Platformcraft.

Мы решили проблему загрузки файлов на HDD – переход к напрямую загрузке данных на жесткие диски вызывал проблемы с производительностью, так как HDD работали медленно.

Для увеличения скорости и производительности платформы, мы приобрели SSD и создали буфер для загрузки. Теперь файлы сначала загружаются на твердотельные накопители (горячее хранение), а затем планомерно переносятся на HDD (холодное хранение) в фоновом режиме.

Собственный транскодер для лучшей гибкости

В основном у нас хранится видеоконтент больших размеров, который требует транскодирования в разные форматы.

Ранее мы аутсорсили эту задачу, но ситуация изменилась после блокировки серверов Telegram Роскомнадзором. Это затронуло и нашу платформу, вызвав проблемы с кодированием и блокировкой дата-центров.

Тогда решили построить свой собственный транскодер на основе GPU, который работал бы намного быстрее, чем аутсорсинг. Теперь наш транскодер обрабатывает видео в 10-12 раз быстрее продолжительности самого видео.

Platformcraft сегодня

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

Если вы хотите попробовать облачное хранение и сервисы для работы с контентом, посетите сайт Platformcraft.

11
Начать дискуссию