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

Компания Sports.ru — разработчик крупного русскоязычного спортивного интернет‑портала. Сервис испытывает пиковые нагрузки во время спортивных событий и обрабатывает большой объём информации: только архив графических файлов из постов пользователей занимает уже более 4 ТБ. Инженеры Sports.ru используют несколько десятков виртуальных машин для разработки. Поэтому компании нужны большие объёмы вычислительных ресурсов и гибкое управление ими.

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

Задача компании

Sports.ru — это спортивный интернет‑портал с аудиторией около 30 миллионов человек. Он существует с 1998 года и стал полноценной IT‑компанией, поскольку работает с огромными объёмами данных. Основной контент портала — это тексты, фотографии и данные с архивной спортивной статистикой. Объём только сгенерированного пользователями контента составляет более 4 ТБ.

До миграции Sports.ru размещал данные в собственных хранилищах и возвращал пользователям через собственные серверы. Одна из проблем заключалась в возможностях интернет‑провайдера: картинки получалось отдавать довольно медленно.

Поддержка такого объёма данных требует полноценной разработки. Сейчас в ней участвует несколько направлений: фронтенд, бэкенд, аналитика, DevOps и тестирование. Каждому инженеру нужно собственное окружение в виде отдельных виртуальных машин. Таких ВМ несколько десятков, и до миграции они занимали более 10 физических серверов. При этом виртуальные машины использовались разработчиками не постоянно, часть суток ресурсы простаивали.

Другая проблема с простоем машин была связана с особенностями нагрузки на сайт. Во время больших состязаний или спортивных скандалов она может вырастать с 10 000 до 50 000 RPS и потом почти сразу спадать. Чтобы выдерживать такой большой скачок посещаемости, компания закупала оборудование с запасом. А поскольку крупные спортивные события происходят довольно редко, большую часть времени это оборудование не использовалось.

Объём оборудования также должен учитывать и прирост пользователей — каждый год он составляет 10%.

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

Выбор облака пришёлся на начало 2022 года, когда появились риски, связанные с поставками оборудования. Sports.ru решил искать надёжного облачного партнёра, который сможет гарантировать отказоустойчивость и предлагает большое количество функций и сервисов.

Sports.ru использует подход IaC для управления серверами и до переезда в облако описывал инфраструктуру с помощью Ansible. С переходом в облако для новой инфраструктуры выбрали Terraform, как гибкий и функциональный инструмент. Чтобы наладить систему с отключением ресурсов в нерабочее время и повысить надёжность сервиса при экстремальных пиковых нагрузках, нужны были развитое IaC‑управление и API, который позволил бы легко включать и отключать хосты. Также важна была возможность обращаться по Amazon S3 API к объектному хранилищу.

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

Качественной поддержкой Terraform, объектным хранилищем с доступом по Amazon S3 API и прозрачной ценовой политикой с гибким управлением ресурсами и скидками при резервировании мощностей из всех имевшихся вариантов обладала только облачная платформа Yandex Cloud.

Решение

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

Поскольку основной задачей было сокращение объёма неиспользуемых ресурсов, ключевым решением стало использовать прерываемые ВМ, которые запускаются и выключаются по требованию и работают ограниченное время.

Для создания этой инфраструктуры использованы Compute Cloud и Yandex Cloud Functions.

С помощью Yandex Cloud Functions команда контролирует статус ВМ, запускает и выключает её по заданным правилам. Для управления системой подключили чат‑бот — и теперь сотрудники могут запускать и останавливать свою ВМ прямо из мессенджера.

На данный момент Sports.ru перенёс в облако часть своих сервисов и использует гибридную архитектуру. Команда перенесла в облако среды разработки, часть продакшен‑серверов и часть контента — текстов, картинок и сгенерированных пользователями данных. Для интеграции собственной инфраструктуры с облаком выбрали Yandex Cloud Interconnect.

Данные с текстом и фотографиями разместили в хранилище Yandex Object Storage и интегрировали бакет с Yandex Cloud CDN. Такая схема даёт существенную экономию и позволяет доставлять контент гораздо быстрее, чем при использовании обычных серверов.

Сейчас команда использует 30 виртуальных машин для среды разработки. В каждой такой ВМ по 2 ядра и 6 ГБ памяти. Когда нет пиковой нагрузки, используется примерно 30 ядер. Общее количество используемых для работы портала ядер приближается к 500.

Во время переезда Sports.ru столкнулся с несколькими сложностями из‑за специфики работы с облачными системами. Одной из них стала более медленная поставка данных через Interconnect по сравнению с доставкой из собственного ЦОД. Сейчас этих возможностей хватает для решения задач Sports.ru и нет потребности расширять пропускную способность канала, но при необходимости скорость передачи данных можно увеличить. Второй неожиданностью для Sports.ru стала скорость, с которой развиваются сервисы Yandex Cloud: некоторые из выбранных подходов быстро становятся неактуальными. Чтобы использовать актуальные технологии, команда время от времени пересматривает свои подходы к работе.

Результаты

Хранить данные в Object Storage оказалось надёжнее, чем на собственных серверах: в облаке есть возможность выделить гораздо больше ресурсов на резервирование, и эти ресурсы обслуживает гораздо больше специалистов.

За счёт использования CDN ускорилась доставка данных пользователям.

Благодаря переезду в облако Sports.ru получил возможность отключать виртуальные машины, когда они не используются. Это сократило время работы машин для разработки в два раза. Процесс включения и отключения ВМ при этом изменился незначительно: сотруднику достаточно отправить нужную команду в чат‑бот.

Кроме того, использование Terraform добавило гибкости и функциональности к подходу IaC. Этот переход позволил команде Sports.ru описывать в коде намного больше компонентов инфраструктуры, что упрощает работу с ней.

Команда перешла на более актуальные и производительные процессоры, из‑за чего выросла скорость работы всей системы. Вне периодов пиковых нагрузок для разработки используется 30 ядер, а не 120, как в прошлой физической инфраструктуре. В результате расходы на поддержание вычислительных мощностей для этого окружения уменьшились более чем в три раза. Кроме того, переход в Yandex Cloud позволил повысить отказоустойчивость работы системы.

За ближайший год компания планирует перенести в Yandex Cloud все свои сервисы и использовать сервисы для аналитики данных, такие как Yandex DataLens. Помимо этого, в планах у Sports.ru оптимизировать работу сервисов, увеличить скорость передачи данных, включать в инфраструктуру свежие версии процессоров. Также команда интересуется возможностями GPU‑вычислений и Yandex GPT.

Мнение

Анатолий Безгубов,
Head of DevOps Sports.ru
Анатолий Безгубов,
Head of DevOps Sports.ru

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