Чемодан с ручкой: история видеосервиса Platformcraft

Наш сервис Platformcraft — облачная платформа для хранения, обработки и трансляции видео в сети, например, через встроенный в браузер видеоплеер. Наши клиенты — большой и маленький бизнес, все, кто зарабатывает на показах видео: онлайн-школы, телеканалы, блоггеры, онлайн-кинотеатры и прочие.

В закладки

Обычным людям уже давно не приходит в голову раздавать видео с домашнего жёсткого диска — всё хранится в интернете. Предприниматели больше хранят видео на собственных серверах, но и они приходят к той же модели. Наш сервис позволяет им хранить и раздавать тяжёлые файлы с меньшими расходами и большей надёжностью.

Опытный образец

Platformcraft появился как проект в компании CDNvideo, 70% которой в 2017 году купила китайская корпорация ChinaNetCenter. Ожидалось, что уже в 2021 году 80% мирового интернет-трафика займёт видео, 77% из которых будет доставляться с помощью CDN. И основатели, и китайские инвесторы основное внимание уделяли именно этой технологии. А наш проект появился как опытный образец, чтобы «пощупать» рынок.

Стояла простая и понятная задача: быстро собрать прототип решения и начать подключать первых клиентов. Для реализации этой задачи CDNvideo купила лицензию на готовое решение у украинского программиста-фрилансера.

Это и была первая версия Platformcraft (тогда продукт назывался Cloud4Video). Она была написана на языке Java и представляла собой интерфейс для отправки и выгрузки видеофайлов, которые хранились и транскодировались на серверах Amazon.

Для поддержки и развития софта в штат был нанят один программист. В основном он боролся с перебоями в работе: вначале сервис часто падал и не отвечал требованиям к стабильности. Поддержка купленного решения усложнялась также тем, что это был чужой код, местами и вовсе без комментариев. Разработчик софта жил тогда на Кипре, и требовалось много времени, чтобы связаться с ним и разобраться в причине проблем с сервисом.

Примерно через два года в CDNvideo разочаровались в проекте и начали называть его «чемодан без ручки». Помимо сложностей с поддержкой, проект также не показал предполагаемого роста. Но мы верили, что российские облачные хранилища только начинают развиваться, и летом 2014 года пообщались с сооснователем компании Ярославом Городецким, получив 49% проекта в обмен на обещание заняться его развитием.

У Platformcraft стало пять владельцев: CDNvideo и четверо физических лиц — бывших менеджеров компании (впоследствии мы выкупили ещё часть проекта, и у CDNvideo осталось 25%). С ведущим российским CDN-оператором мы сейчас находимся в партнёрско-дружеских отношениях и стараемся всячески помогать друг другу.

Программистское чудо

Став самостоятельным проектом, мы начали с поиска новой команды разработчиков. Лидера разработки нашли в Череповце. Он попытался разобраться в коде, развернул систему на домашнем сервере, но она просто не запустилась.

Тогда мы решили поискать другие готовые open-source-решения. Мы рассматривали самые популярные тогда технологии — Openstack, Hadoop, Ceph. Чтобы организовать поддержку этих решений, нам требовались толковые системные администраторы, которых не получалось быстро найти. Тогда мы решили заключить договор с компанией IT Summa (удалённое системное администрирование архитектуры).

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

Оглядываясь назад, можно смело сказать, что этот шаг был максимально правильным. Совместно с ребятами из IT Summa мы смогли быстро протестировать все интересующие нас решения. По итогам тестов мы остановились на Openstack, но проблема вылезла там, где не ждали: развернув его на трёх тестовых нодах и дав нагрузку, мы поняли, что решение начинает «сыпаться», если на каждом узле используется не одинаковое железо.

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

Тогда наш директор по разработке выступил с амбициозным заявлением, что сможет написать собственный софт, который будет работать на любом оборудовании. Сперва мы к этой идее отнеслись скептически, но он взял и за три недели написал свой софт с нуля на языке Golang — совершил программистский подвиг.

В итоге проблемы пошли нам на пользу. Мы сделали собственное «умное» и быстрое хранилище. Данные находятся в трёх независимых дата-центрах на территории России, информация на них дублирует друг друга. Кстати, год назад мы переписали код ещё раз, уже на «модном» языке Rust, и сейчас находимся в процессе миграции старых узлов на новый софт. Насколько нам известно, пока мы единственный сервис хранения видео, написанный на Rust.

Расход колы во время написания хранилища Platformcraft составляет один литр на 200 строк кода​

После этого мы начали активно подключать новых клиентов. Одним из самых интересных в смысле влияния на наш продукт стал онлайн-кинотеатр ViPPlay от компании ООО «Виасат Глобал». Телевизионщики использовали для хранения видеосервисы одной крупной технологической компании, но там не могли писать новые сервисы под потребности одного клиента, пусть даже такого важного, как ViPPlay, а мы согласились с радостью.

Специально для ViPPlay мы сделали «полицейскую запись», когда весь эфир записывается и любой кусок позднее можно посмотреть и вырезать. Такая функция нужна для компании Mediascope, которая мониторит онлайн-рекламу и оценивает её эффективность. Ещё под нужды ViPPlay мы написали собственный софт для транскодирования (раньше файлы транскодировал для нас Amazon), возможность чанковой загрузки и сервис многократного резервирования файлов.

Партнёрство с ViPPlay было переломным моментом в нашей истории. Для небольшого стартапа получить крупных клиентов в начале пути можно считать большой удачей.

Во-первых, сразу появляются деньги на развитие. Во-вторых, клиент задаёт для него направление: продукт развивается под его высокие требования. Конечно, всё было не так красиво и быстро, как мы здесь расписываем: были и споры, и бессонные ночи.

Разношёрстные клиенты

Сейчас у нас около 100 клиентов. Ежемесячная плата за сервис начинается примерно от 3000 рублей. Телеканалы приносят 40% от общего дохода, онлайн-кинотеатры — 40%, онлайн-курсы — 8%, интернет-магазины — 1%.

Остальные 11% приходится на медиа, которые сложно отнести к определённой категории. В количественном выражении именно таких клиентов у нас больше всего, и работать с ними очень интересно.

Во время поиска дата-центра для узлов облачного хранилища Platformcraft нам попадались системы охлаждения из преисподней​

Один из клиентов, проект «Спорт Вокруг» представляет из себя подобие социальной сети, объединяющей инициаторов открытых спортивных соревнований и спортсменов. Он организовывает спортивные мероприятия под ключ, проводит трансляции и публикует видео.

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

Ещё один клиент, WIF TV, — это детское онлайн-телевидение, созданное энтузиастами. Дети-операторы и дети-журналисты берут интервью, транслируются детские концерты, передачи для детей и всё в таком духе. Можно включить и залипать.

Основателю WIF-Media нужно было сформировать сетку вещания и в автоматическом режиме запускать одно за другим залитые на сервер видео. Казалось бы, энтузиасту хватило бы обычного Youtube. Однако ни на Youtube, ни в любом другом «потребительском» сервисе, таких функций нет, в социальных сетях тоже.

Нашим сервисом пользуется Национальная футбольная лига, телеканал «МИР 24», бизнес-школа «Синергия», «ТНТ Music», 2ГИС, «Комсомольская правда».

У каждого клиента своя специфика. Например, «Синергия» большую часть видео хранит у себя, и наш сервис использует как опытную площадку, куда можно быстро залить или удалить видео. Национальная футбольная лига выкладывает много коротких видео, активно используя обрезку файлов. В футбольных трансляциях есть много моментов — красная карточка, удаление, гол, которые вырезают прямо из «лайва», пока идет матч, и сразу выкладывают на сайт. «Комсомольская правда» хранит у нас весь контент: не только видео, но и картинки, презентации и документы в PDF.

Будущее покажет

Объем видеофайлов, который загружают наши существующие клиенты растет примерно на 40-50% в год. Что касается новых клиентов, то мы делаем ставку на онлайн образование (по данным АТОЛ, в 2018 году россияне заплатили за разные онлайн-курсы через интернет 1,4 млрд рублей), на телеканалы и кинотеатры. Однако рынок отстает от рынков европейских стран примерно лет на 10. Ситуация та же, что и на рынке CDN: в рунете пока нет такого объема видеофайлов.

​Сотрудники собираются вместе только на корпоративах: все рабочие вопросы мы решаем по сети

На Западе компании, вроде нашей, имеют другой масштаб. Там уже происходят «взрослые» рыночные процессы. Одного мирового лидера, австралийскую компанию Ooalya, летом 2019 года приобрел французский холдинг Dalet, продающий сервисы телеканалам. Второй мировой лидер, американская Brightcove, в год появления нашего сервиса уже вышла на NASDAQ и на данный момент стоит $385 млн. Из России у нас только один конкурент, и мы оба пока далеко не миллионеры.

Российская беда — все стараться сделать самому. Основная задача телеканалов — создавать контент и следить за рейтингами, но многие уже вложились в собственное оборудование для хранения контента и занялись обслуживанием железа. Теперь у них сотни серверов, которые на Avito не продашь. Это удерживает от перехода на облачные технологии: жалко железо, которое пока не отработало свой ресурс.

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

Для российских телеканалов, выбирающих облачные сервисы, у нас есть преимущество, поважнее низких цен: мы храним данные в России и не зависим от политики. Пытаясь заблокировать Telegram, весной 2018 года Роскомнадзор заблокировал в общем 18 млн IP-адресов и заодно «положил» много сайтов, хранящих данные на Amazon и других иностранных сервисах. Нас эта история никак не затронула.

Материал опубликован пользователем.
Нажмите кнопку «Написать», чтобы поделиться мнением или рассказать о своём проекте.

Написать
{ "author_name": "Антон Аплемах", "author_type": "self", "tags": [], "comments": 0, "likes": 2, "favorites": 7, "is_advertisement": false, "subsite_label": "tribuna", "id": 92093, "is_wide": false, "is_ugc": true, "date": "Tue, 12 Nov 2019 12:44:04 +0300", "is_special": false }
0
{ "id": 92093, "author_id": 392942, "diff_limit": 1000, "urls": {"diff":"\/comments\/92093\/get","add":"\/comments\/92093\/add","edit":"\/comments\/edit","remove":"\/admin\/comments\/remove","pin":"\/admin\/comments\/pin","get4edit":"\/comments\/get4edit","complain":"\/comments\/complain","load_more":"\/comments\/loading\/92093"}, "attach_limit": 2, "max_comment_text_length": 5000, "subsite_id": 199116, "last_count_and_date": null }
Комментариев нет
Популярные
По порядку
{ "page_type": "article" }

Прямой эфир

[ { "id": 1, "label": "100%×150_Branding_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox_method": "createAdaptive", "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "ezfl" } } }, { "id": 2, "label": "1200х400", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "ezfn" } } }, { "id": 3, "label": "240х200 _ТГБ_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fizc" } } }, { "id": 4, "label": "Article Branding", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "p1": "cfovx", "p2": "glug" } } }, { "id": 5, "label": "300x500_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "ezfk" } } }, { "id": 6, "label": "1180х250_Interpool_баннер над комментариями_Desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "bugf", "p2": "ffyh" } } }, { "id": 7, "label": "Article Footer 100%_desktop_mobile", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fjxb" } } }, { "id": 8, "label": "Fullscreen Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fjoh" } } }, { "id": 9, "label": "Fullscreen Mobile", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fjog" } } }, { "id": 10, "disable": true, "label": "Native Partner Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyb" } } }, { "id": 11, "disable": true, "label": "Native Partner Mobile", "provider": "adfox", "adaptive": [ "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyc" } } }, { "id": 12, "label": "Кнопка в шапке", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "p1": "bscsh", "p2": "fdhx" } } }, { "id": 13, "label": "DM InPage Video PartnerCode", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox_method": "createAdaptive", "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "bugf", "p2": "flvn" } } }, { "id": 14, "label": "Yandex context video banner", "provider": "yandex", "yandex": { "block_id": "VI-223676-0", "render_to": "inpage_VI-223676-0-1104503429", "adfox_url": "//ads.adfox.ru/228129/getCode?pp=h&ps=bugf&p2=fpjw&puid1=&puid2=&puid3=&puid4=&puid8=&puid9=&puid10=&puid21=&puid22=&puid31=&puid32=&puid33=&fmt=1&dl={REFERER}&pr=" } }, { "id": 15, "label": "Баннер в ленте на главной", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "p1": "byudx", "p2": "ftjf" } } }, { "id": 16, "label": "Кнопка в шапке мобайл", "provider": "adfox", "adaptive": [ "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "p1": "byzqf", "p2": "ftwx" } } }, { "id": 17, "label": "Stratum Desktop", "provider": "adfox", "adaptive": [ "desktop" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fzvb" } } }, { "id": 18, "label": "Stratum Mobile", "provider": "adfox", "adaptive": [ "tablet", "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fzvc" } } }, { "id": 19, "disable": true, "label": "Тизер на главной", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "p1": "cbltd", "p2": "gazs" } } }, { "id": 20, "label": "Кнопка в сайдбаре", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "p1": "cgxmr", "p2": "gnwc" } } } ] { "page_type": "default" }