Несколько лет назад сервис онлайн-бронирования отелей Ostrovok.ru перевел инфраструктуру с облака Amazon Web Services на серверы Selectel. Издержки миграции окупились за месяц, а стоимость хостинга уменьшилась в два раза. В рамках фестиваля «Российские интернет-технологии-2020» руководитель отдела инфраструктуры сервиса Денис Божок рассказал о причинах переезда, архитектурных ограничениях и старом добром heavy bare-metal.
О выборе Amazon Web Services
До переезда мы жили на паре десятков серверов в маленьком дата-центре и четкого плана по переходу на облачные платформы у нас не было. Но с ростом числа отелей на сайте росло и количество их фотографий. К 2014 году объем визуального контента составлял порядка 4-5 терабайт.
Для дальнейшего роста нужно было думать над масштабированием хранилища фотографий, искать удобные инструменты для их хранения и резервирования. Тогда и пришла мысль попробовать решение от AWS — его легендарное S3 хранилище.
Дата-центры Amazon расположены более чем в 20 регионах по всему миру. В Европе на данный момент выделено пять регионов — Милан, Париж, Лондон, Франкфурт и Ирландия.
Об отсутствии необходимых сервисов
Шесть лет назад мы «заезжали» в регион Франкфурт. На тот момент он был молодым, и все сервисы, уже внедренные в более зрелых регионах, до него доходили с задержкой. Не раз бывало, что нам нужен был функционал сервиса, которого либо не было совсем, либо он отсутствовал в нашем регионе.
Например, в наш регион завезли спотовые инстансы — аукцион серверных мощностей, благодаря которому можно сэкономить до 90% их стоимости. Но инструментов, позволяющих настроить автоматический заказ нужных серверов, не было. Приходилось заходить в консоль аукциона, выбирать тип инстанса, устанавливать цену, добавлять новые «виртуалки» в кластер. Неэффективная трата времени и высокий шанс упустить изменение цен. Поэтому мы создали свой менеджер спотов, который заказывал нужные серверы по подходящим ценам и сам добавлял их в кластер. Аналогичный инструмент — spot fleet — на Amazon Web Services появился лишь спустя несколько лет.
Точно так же нам пришлось оптимизировать работу с системой управления базами данных DynamoDB от AWS. Одна из ее фишек в том, что ты платишь за IOPS (количество операций ввода-вывода в секунду) и сам можешь выставлять лимиты по операциям. Это удобно, но, опять же, не было автоматизированного управления. Поэтому мы разработали собственный механизм, который выставлял подходящие нам лимиты IOPS и регулировал их по мере необходимости.
Кроме того, долгое время в AWS не было удобных инструментов для работы с Docker, которым мы уже активно пользовались. Поэтому до появления подходящих нам сервисов на Amazon Web Services справлялись своими силами.
В целом, не могу назвать перечисленные ситуации критичными. При переходе из облака на решения on-premises будьте готовы, что
многие процессы, выполняемые ранее облачным провайдером, перейдут в вашу зону ответственности. Идеальное решение — то, что максимально подходит под ваши требования и особенности компании.
О причинах переезда
В 2016 году мы задумались о смене провайдера и начали поиск на российском рынке. Причин для переезда c облака от Amazon было несколько.
Во-первых, мы хотели оптимизировать расходы. Все-таки AWS, несмотря на относительное удобство, стоит немалых денег. Мы понимали, что можем эффективнее использовать наши ресурсы. Кроме того, нам нужно было следовать № 152-ФЗ, который требует хранения персональных данных на территории России.
Для миграции инфраструктуры мы выбрали Selectel. Здесь сработало сарафанное радио: наши знакомые были клиентами компании и дали хорошие отзывы. Решили попробовать. Связались с менеджерами, обсудили условия и договорились, что, если не будет хватать текущих возможностей, Selectel поможет.
Нас это устроило, взяли курс на миграцию — с облака в «железо».
Об экономии
По грубым подсчетам, сервис подешевел двукратно после переезда на серверы Selectel. Конечно, это не значит, что любой переезд с зарубежного провайдера на отечественный будет таким же выгодным. Однако практика показывает, что усилия, потраченные на миграцию, как правило, окупают себя в первый месяц. Приятный бонус для Ostrovok.ru состоял в том, что вместо виртуальных серверов мы получили физическое оборудование, полностью соответствующее нашим требованиям. На данный момент у нас порядка 400 серверов в Selectel.
Справедливости ради добавлю, что фотографии, из-за которых мы изначально пришли в Amazon Web Services, пока остались там же, в S3 хранилище. Объем фотографий с 2014 года вырос до 70 терабайт. Все остальное — базы с персональными данными, поисковые кластеры и служебные сервисы — мы перевезли. В планах есть окончательная миграция, но это операция непростая.
О «граблях»
Тут могу сказать одно: у каждого будут свои «грабли». И это нормально. Главное — понимать цель переезда.
Мы столкнулись с многими архитектурными ограничениями. Так, нам нужно было настроить общую сеть между физическими серверами и нашими VPC (Virtual Private Cloud, «виртуальное частное облако») в Облачной платформе Selectel. На VPC мы переносим сервисы, которые неприхотливы к объему ресурсов. Например, кластер DNS-серверов у нас расположен в частном облаке — удобно и надежно. Иногда можем развернуть какой-нибудь тест на VPC, удалив облако по завершении задачи.
Так вот, готового решения для обеспечения связи между серверами и VPC на тот момент не было. Тогда мы с помощью ребят из Selectel организовали L2-связность, которой пользуемся по сей день. Сейчас подобная услуга
доступна для всех клиентов «из коробки».
При работе с «железом» важно держать в голове свойственные ему минусы. Из своего опыта я бы выделил два ярких нюанса:
- Конфигурации серверов в кластерах нужно держать актуальными и своевременно заменять на новое «железо». В противном случае можно упереться в отсутствие необходимых комплектующих.
- Перед вводом серверов в эксплуатацию нужно самим подобрать тесты на их соответствие текущей конфигурации. Случается так, что одинаковые по конфигурации серверы отличаются по производительности. Лучше это обнаружить до введения сервера в кластер.
О старом добром heavy bare-metal
Конечно, будь инфраструктура в облаке, со многими описанными проблемами мы бы не столкнулись. Но после цикла «железо-облако-железо» пришли к выводу: для Ostrovok.ru нет ничего лучше старого доброго heavy bare-metal.
Проблема любого облака — vendor lock-in, или привязка к поставщику. Если кратко, ты подсаживаешься на облачные сервисы, того же Amazon, и теряешь свободу передвижений. Например, съехать с Relational Database Service (база данных от Amazon) на свою «ламповую» базу данных без простоя очень проблематично.
Добавим к этому специфичные инструменты, которые сложны в администрировании и отслеживании нагрузки, и не очень прозрачный биллинг. На AWS было почти нереально учесть все факторы при подсчете стоимости будущего сервиса. И довольно просто промахнуться с лимитами. Причем об ошибке вы узнаете уже по факту, когда получите счет от провайдера.
Выбор «железа» — наше решение, обусловленное опытом и особенностями работы компании. У нас и разработка, и релизы достаточно предсказуемы. Когда на Ostrovok.ru ожидается рост из-за сезонности или маркетинговых акций, мы заранее обеспечиваем рост количества серверов. Либо скидываем лишние, если нагрузка снижается.
О важности поддержки
У меня был опыт взаимодействия как с зарубежной, так и с российской технической поддержкой.
Иностранная построена на простой логике: хочешь поддержку — плати деньги. Хочешь быструю поддержку — плати еще больше денег. Кроме того, на AWS приходилось оплачивать поддержку для каждого нашего аккаунта — одна подписка на несколько, даже сопряженных, не распространялась.
Звучит невероятно, но российская техподдержка работает более оперативно. В Selectel, например, в панели управления есть чат, в котором можно связаться со специалистом и в адекватные сроки получить ответ. Без дополнительных подписок и премиум-аккаунтов.
Также за годы хостинга в Selectel мы вошли в список ключевых клиентов компании и получили отдельную линию поддержки — Customer care. Нам сразу дают апдейт по задаче, отвечают быстро и в любое время суток, не нужно ждать официального старта рабочего дня.
Работа поддержки — важный нюанс. Одно дело, когда инженер не может настроить сервис и ему нужна помощь. Другое — когда сервис свежий и в нем есть ошибки на стороне провайдера. С таким за годы хостинга на AWS мы тоже сталкивались. Во втором случае платить за премиум-поддержку, как мне кажется, неправильно. Ведь ты платишь за то, чтобы сообщить специалистам облака об их багах.
Об оптимизации во время пандемии
Так как нагрузка на серверы снизилась, то и требований к количеству оборудования стало меньше. Первое, что мы сделали: посчитали риски; прикинули, сколько понадобится серверов, когда пользователи вернутся на сайт; отказались от лишнего.
Вторым этапом оптимизировали дорогие сервисы. Как раз появился явный стимул «отрефакторить» то, что давно хотелось, в пользу как архитектуры, так и экономики. В итоге скинули еще несколько серверов.
Мы и до коронавируса пересматривали наши решения с точки зрения эффективности. Поэтому эпидемия не сильно повлияла на наши методы оптимизации. Скорее наоборот, она подтвердила, что и раньше мы все делали правильно.
Если вы задумались о смене провайдера хостинг-услуг, вот на что стоит обратить внимание:
- Обозначьте проблему, которую вы хотите решить. Осознав ее, просчитайте экономическую целесообразность. Она складывается как из прямых расходов за сервисы, так и из времени, которое ваши сотрудники тратят на администрирование.
- С четкой целью можно начать изучать рынок: кто из компаний лучше всех поможет вам решить проблему. Если альтернатив несколько, отталкивайтесь от качества и скорости технической поддержки.
- Если ваш бизнес акцентирован на российский рынок, присмотритесь к отечественным провайдерам. Так стоимость услуг будет меньше зависеть от перепада курсов валют.
- Хотя бы раз в полгода нужно пересматривать оптимальность и эффективность работы ваших сервисов. Не откладывайте оптимизации на потом. Постоянное совершенствование архитектуры сделает существование вашего бизнеса более уверенным в непредвиденных ситуациях.
Текст написан на основе открытого интервью Дениса Божок с архитектором облачных решений Selectel Романом Тимофеевым. Интервью состоялось в рамках онлайн-фестиваля «Российские интернет-технологии-2020» 26 мая.
Ostrovok.ru – сервис онлайн-бронирования отелей. Компания предоставляет клиентам более 1 300 000 вариантов размещений в гостиницах, хостелах и апартаментах от прямых поставщиков и крупных партнеров. Входит в Emerging Travel Group, которая управляет четырьмя тревел-брендами: Ostrovok, B2B.Ostrovok, ZenHotels, RateHawk.