О чём история

Picvario создали платформу, с помощью которой бизнес‑клиенты могут удобно и быстро управлять своим контентом: автоматически переформатировать его, создавать копии разного разрешения, проставлять теги и т. д. На этапе MVP платформа хорошо работала в формате on‑premise, но когда команда задумалась о выходе на крупных клиентов, то встал вопрос о масштабировании платформы.

Чтобы создать быстродейственный и надёжный сервис, Picvario перенесли свою платформу в Yandex Cloud и преобразовали её в SaaS‑продукт, используя Yandex Compute Cloud, Yandex Oblect Storage и сервисы платформы данных. Спустя время, когда возникла потребность в автомасштабировании, Picvario мигрировали в среду Kubernetes®, которая в Yandex Cloud предоставляется как сервис. В результате они получили надёжную платформу и повысили скорость загрузки больших объёмов данных в два раза.

Как стартап решил масштабироваться в облаке

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

Клиенты Picvario — это компании, которые создают много графического контента (фотографии, иллюстрации, видеозаписи). Среди них есть государственные структуры, крупные промышленные корпорации, СМИ, спортивные клубы и другие организации, которые генерируют разное количество контента в разное время (например, выгружают больше фотографий во время мероприятий). Пиковая нагрузка у таких клиентов может составлять до десятков тысяч файлов в сутки.

На этапе MVP Picvario было «коробочным» решением, которое устанавливалось на машины клиентов. По мере усовершенствования сервиса команда решила перейти от on‑premise к SaaS‑модели. На первом этапе был развёрнут SaaS‑стенд на выделенных физических серверах в коммерческом дата‑центре. Такая реализация была не очень удобна для ИТ‑специалистов Picvario, потому что запрос новых мощностей и их настройка занимали много времени.

Благодаря демо‑стенду Picvario нашли первых крупных клиентов своего SaaS‑решения, и возникла потребность переезда на облачную платформу. Это позволило привлекать больше компаний, которые оперируют большим количеством данных и имеют высокие требования к быстродействию и отказоустойчивости.

Picvario решили выбрать облачного провайдера, который имеет готовые решения для работы с микросервисной архитектурой. У команды были планы переезда на Kubernetes, поэтому тот факт, что Yandex Cloud предоставляет его как сервис, стал одним из решающих для выбора. Благодаря Yandex Managed Service for Kubernetes® разработчики могут существенно сэкономить время на обслуживании инфраструктуры Kubernetes‑кластера, потому что облачный провайдер берёт на себя такие задачи как:

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

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

Из дата‑центра в облако, из облака в Kubernetes

Проект проходил в два этапа: миграция в облако и настройка Kubernetes.

Миграция платформы в Yandex Cloud прошла без трудностей. Был подключён сервис Yandex Compute Cloud и запущена одна виртуальная машина (24 ГБ RAM, 12‑ядерный процессор), на которой были развёрнуты 24 контейнера, управляемые на разных этапах сервисом Yandex Container Registry и Docker Compose. Для работы с данными применялась СУБД PostgreSQL, предоставляемая Yandex Cloud как сервис (развёрнут кластер из двух нод 4vCPU, 8 ГБ RAM). Для реализации поиска на виртуальные машины Yandex Compute Cloud был установлен Elasticsearch (развёрнута одна нода, 2vCPU, 4 ГБ RAM). Для хранения медиаданных использовалось объектное S3‑хранилище Yandex Object Storage.

Такая архитектура удовлетворяла потребности Picvario в течение почти двух лет. А когда команда привлекла новых крупных клиентов, стало очевидно, что требуется провести ряд изменений:

  • повысить отказоустойчивость (на тот момент отказ виртуальной машины приводил к отказу всего сервиса),
  • повысить производительность,
  • сгладить влияние пиковой загрузки на быстродействие всей платформы,
  • автоматизировать масштабирование.

ИТ‑отдел Picvario после сравнения нескольких возможных систем оркестровки контейнерной архитектуры принял решение о миграции на Kubernetes. Одним из факторов выбора было то, что он предоставляется у облачного провайдера как сервис Yandex Managed Service for Kubernetes®.

На первом этапе в Kubernetes были перенесены один кластер тестового окружения (на нём развёрнуто два рабочих узла) и один кластер рабочего окружения (на нём развёрнуто минимум 11 узлов, количество которых растёт при нагрузке). Тестовая среда была запущена в одной зоне доступности, а рабочая реплицировалась в трёх зонах доступности. Это было нужно, чтобы окружения были больше изолированы друг от друга, а также для проверки вносимых изменений.

В процессе миграции возникло несколько трудностей, связанных с тем, что исходный медиафайл при обработке разделялся на части и разные его фрагменты могли располагаться на разных виртуальных машинах (узлах). Чтобы решить эту проблему, разработчики Picvario изменили алгоритм работы платформы:

  • скачивание исходного файла с ftp‑сервера клиента,
  • перемещение его в облачное S3‑хранилище,
  • обработка файла (переформатирование, создание копии нужного размера и т. д.), параллельно с этим распознавание изображений с применением сторонних AI‑сервисов,
  • автозаполнение метаданных,
  • сохранение полученных файлов и данных в S3‑хранилище.

На данный момент система умеет в реальном времени обрабатывать изображения и видео, а также работать с документами, таблицами, аудио, векторными изображениями и т. д.
Каждый клиент Picvario работает в собственном изолированном пространстве приложения, эксплуатируя общие системные ресурсы. Чтобы не создавались очереди на обработку при пиковых нагрузках, использовался механизм автомасштабирования за счёт мониторинга очередей (claster autoscale, который предустанавливается и обновляется на стороне Yandex Cloud). Автомасштабирование работает на двух уровнях:

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

Чтобы обезопасить себя от перерасхода бюджета, на этапе настройки сервиса Yandex Managed Service for Kubernetes® указывается минимальное и максимальное количество виртуальных машин, которые можно подключать.

Двойное увеличение скорости загрузки больших импортов

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

В результате миграции Picvario смогли привлечь крупных клиентов, таких как «Уралкалий», омский ХК «Авангард», «Чемпионат.com», ФК «Динамо», и обеспечить им то качество сервиса, которое им было нужно.

В планах команды работа над поддержкой 3D‑моделей, cad‑файлов, чертежей.

Мнение

Рональд Рамазанов,
руководитель DevOps‑команды Picvario
Рональд Рамазанов,
руководитель DevOps‑команды Picvario

В работе с Yandex Cloud в первую очередь отмечу качество работы предоставляемых управляемых сервисов. Важно, что функциональность таких сервисов постоянно развивается, а их количество растёт. Хороший уровень документации, техподдержки, а также активности со стороны команды Yandex Cloud вроде конференций и вебинаров дают возможность выбирать грамотные решения для модернизации инфраструктуры.