О Skyeng
Skyeng — крупнейшая российская онлайн-школа английского языка, входящая в топ-20 IT-компаний России по версии Forbes. Со школой сотрудничают 5,8 тысяч высококвалифицированных педагогов, в ней занимается более 64 тысяч учеников, со времени основания проведено уже 5 миллионов уроков. Занятия проводятся на собственной web-платформе Vimbox с использованием технологий искусственного интеллекта и Big Data: она обеспечивает видеосвязь между студентом и преподавателем, а также хранит весь образовательный контент. За обучение «на ходу» отвечает мобильное приложение Skyeng.
Большая часть решений, используемых школой, разработаны внутри компании. Это связано с инновационностью Skyeng: аналогов просто нет. Однако, по словам Артёма Науменко, руководителя IT-инфраструктуры компании, «изобретать велосипеды» в школе не принято. «Если то, что нам нужно, уже есть и его можно купить, мы купим, а силы потратим на разработку своего продукта, — говорит специалист. — В частности, если мы находим облачный сервис, предлагающий нужную нам функциональность, мы всегда его тестируем, и если все хорошо, то покупаем и пользуемся». Одним из таких нужных сервисов стала платформа Яндекс.Облако.
Проблема: дисковый кредит и низкая скорость
Разработкой решений для экосистемы школы занимается более 80 программистов. У каждого разработчика есть своя облачная копия всей обучающей платформы. Типичный тестовый сервер — 2 ядра CPU, 8 ГБ RAM, 50 ГБ SSD.
Раньше все эти серверы располагались в Amazon Web Services (инстанс типа t2.medium в регионе eu-central-1). «Долгое время нас всё устраивало, — говорит Артём Науменко. — У Amazon удобный сервис RDS, предоставляющий возможность работать с такими СУБД, как MySQL и PostgreSQL, а также облачный Elasticsearch. Собственно, наши рабочие серверы с высокими требованиями к отказоустойчивости по-прежнему остаются там. Но вот с тестовыми серверами возникли определённые проблемы».
Архитектура информационной системы Skyeng — сервисная. «Сейчас у нас порядка 50 сервисов, — рассказывает Артём Науменко, — их число растёт, от серверов требуется все больше ресурсов, мы начали упираться в дисковый кредит — количество операций с диском за час. Разработчики страдали». Тарифный план представлял каждому серверу 3 IOPS/ГБ, т. е. всего 150 операций с диском в секунду.
У AWS нельзя изменить параметры дискового кредита, не увеличив объём самого SSD. А переход на инстансы типа C без дисковых кредитов выливается в двукратное увеличение цены.
Некоторые проблемы создавал довольно большой пинг до европейских серверов. «У нас почти все разработчики работают удалённо, — говорит Артём Науменко. — Средний пинг до серверов составлял 100 мс, из Москвы — 50 мс. При использовании удалённого xdebug задержки ощущались».
«Когда узнали, что Яндекс предлагает такие же серверы на 30% дешевле и без ограничения по дисковым операциям, конечно, захотели попробовать», — делится Артём Науменко.
Решение в Яндекс.Облаке
Поскольку на момент переезда Яндекс.Облако только запустилось, среди доступных сервисов было только два подходящих:
Managed Service for PostgreSQL и
Сompute Сloud. «Но первое нам не подошло, потому что у Яндекс.Облаке десятая версия PostgreSQL, а у нас 9.6, — говорит Артём Науменко. — Решили вручную поднимать базы и Elasticsearch».
Пинг до Москвы уменьшился до 5 мс, средний — до 50, что значительно облегчило разработчикам использование пошагового дебага.
Появилась возможность менять отдельные параметры сервера. «У нас могут быть разные запросы, не только по диску, — рассказывает Артём Науменко. — Например, для каких-то задач может потребоваться увеличить память. В AWS при этом нужно было добавлять ещё и производительность CPU, в Яндекс.Облаке мы можем получить ровно то, что нам необходимо».
Результат: быстрый «переезд» и экономия
Процесс переноса серверов занял около месяца:
- Подняли базы данных PostgreSQL, MySQL, Elasticsearch;
- Сделали образ одного сервера разработчика (тестинга);
- С помощью Terraform размножили этот тестинг на 70 разработчиков;
- Залили 70 копий баз данных во все базы.
Сейчас в Яндекс.Облаке у Skyeng уже 86 виртуальных машин и отдельные серверы с PostgreSQL, MySQL, Elasticsearch, Prometheus и VPN шлюз.
«За счет переезда в Яндекс.Облако мы экономим около 60 тысяч рублей в месяц по сравнению с тем, что у нас было, — говорит Артём Науменко. — Если же сравнить с инстансами type C, то получится 200-300 тысяч. К концу года, с учётом планируемого расширения штата разработчиков, мы полностью окупим затраты на перенос».
Артём Науменко, руководитель IT-инфраструктуры компании Skyeng. Выступление на конференции cloud up!
Специалист отмечает, что пока в Яндекс.Облаке не так много сервисов, но их количество быстро растёт: на днях появился
сервис управляемой базы данных MySQL. «Если картина с отсутствием отказов и даунтаймов сохранится, вполне возможно, что в будущем попробуем перенести в Яндекс.Облако что-то более требовательное к надежности», — заключает Артём Науменко.