Инфраструктура для EdTech: как GetCourse работает на 550 выделенных серверах

Инфраструктура для EdTech: как GetCourse работает на 550 выделенных серверах

Рассказываем, как компания GetCourse развернула производительную и масштабируемую платформу для запуска онлайн-школ.

Изображение записи

Кейс будет полезен для компаний в следующих сферах:

  • EdTech
  • SaaS
  • высоконагруженные сервисы

Задачи:

  • Построить производительную и масштабируемую инфраструктуру.
  • Гарантировать стабильность сети.
  • Обеспечить соответствие законодательным требованиям.

О компании

GetCourse — платформа «все в одном» для создания образовательных курсов и запуска онлайн-школ.

Она включает в себя полный стек инструментов для онлайн-образования: систему обучения (LMS), конструктор лендингов (CMS) и рассылок, инструменты low-code, сквозную аналитику, собственный видеохостинг и файловое хранилище. За время существования GetCourse на платформе было зарегистрировано более 50 000 учебных проектов.

Вызовы и решения

Построить производительную и масштабируемую инфраструктуру

IT-инфраструктура GetCourse начиналась более 10 лет назад с аренды одной виртуальной машины. На ней размещалось сразу все: бэкенд, фронтенд, базы данных и файловое хранилище.

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

Развернули сервис на выделенных серверах

Сегодня часть IT-инфраструктуры GetCourse, которая развернута в Selectel, построена на более чем 550 выделенных серверах. Их неспроста так много, поскольку они решают разные задачи.

Базы данных занимают до 40% от общего объема IT-инфраструктуры, развернутой в Selectel. В качестве основной СУБД используется MySQL. Она же является и самой высоконагруженной — в среднем каждую секунду к ней обращается более 900 000 запросов. В ней же хранится более 250 ТБ данных с учетом основного массива и реплик. Кластеры БД особенно чувствительны к объему оперативной памяти, поэтому для них используются серверы произвольной конфигурации, при этом в некоторых сценариях объем RAM может достигать 2 ТБ.

Наряду с реляционными СУБД используются ClickHouse для сбора аналитических данных и логов, Kafka как шина данных, Victoria Metrics для метрик и мониторинга. В сумме объем данных в перечисленных СУБД превышает 100 ТБ.

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

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

«У нас все крутится вокруг метрик, снимается их очень много. Благодаря этому нам достаточно легко принимать решения по новому железу. Например, мы вместе со специалистами Selectel недавно апгрейдили кластер основной БД. Тогда мы переконфигурировали каждый сервер в нем и получили прирост производительности по CPU около 70%. При этом стоимость новых серверов увеличилась всего на 10%. Безусловно, по возможности мы решаем вопросы производительности с помощью оптимизации кода, но иногда эффективнее вложиться в железо».

Константин Семчишкин CTO GetCourse

Для управления выделенными серверами готовой конфигурации доступен Terraform-провайдер. С помощью него можно выбрать подходящую конфигурацию серверов в нужной локации, настроить операционную систему и сеть.

Гарантировать стабильность сети

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

Объединили серверы в локальную сеть и защитили от DDoS-атак

Серверы GetCourse объединены в приватную L3-сеть через глобальный роутер. Чтобы минимизировать сетевые задержки, каждая часть приложения находится в той же зоне доступности, что и данные.

К серверам-балансировщикам подключен безлимитный интернет-трафик на скорости 1 Гбит/с. Для некоторых кастомных конфигураций подключена сеть 10 Гбит/c.

Дополнительно настроена защита от DDoS-атак на уровнях L3-L4 с асинхронным логированием от Curator. Именно на этих уровнях обычно происходят массовые DDoS-атаки с использованием ботнетов, от которых компании нужно защищать свой сервис.

Обеспечить соответствие законодательным требованиям

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

Сервисы Selectel соответствуют требованиям 152-ФЗ

Сервисы Selectel соответствуют требованиям 152-ФЗ «О персональных данных» до максимального уровня защищенности.

В панели управления поддерживаются необходимые меры безопасности — от идентификации и управления контроля доступом (IAM) до логирования действий в системе.

Результаты

  • 550

    серверов поддерживают инфраструктуру сервиса.

  • 99,97%

    SLA сервиса.

  • >900 000

    запросов в секунду к базам данных.

  • >350 ТБ

    хранится на серверах баз данных.

«Отдельное спасибо Selectel за надежность «железа». Далеко не у всех провайдеров все настолько хорошо с Bare Metal-серверами. Это касается и питания, и комплектующих, и сети. Долгое время с инфраструктурой работала небольшая команда инженеров, и лишь несколько лет назад штат начал постепенно расширяться. Поэтому для нас было важно делегировать рутинные задачи команде Selectel и сосредоточиться на развитии сервиса».

Константин Семчишкин CTO GetCourse