Рубрикатор |
Статьи |
Юрий БУШЕВ  | 09 июля 2018 |
Масштабирование облачной архитектуры: что важно предусмотреть
Произвести масштабирование инфраструктуры облака, когда в этом возникнет необходимость, можно только в том случае, если предусмотреть такую потребность заранее — еще на этапе проектирования его архитектуры.
Трудный возрастВ основе облачных решений лежит технология виртуализации, т.е. создание виртуального представления физического оборудования. Проблема заключается в том, что если изначально вся нагрузка компании ложится на один виртуальный сервер (VPS/VDS), то в дальнейшем технически невозможно организовать миграцию части данных на второй дополнительный сервер. Другими словами, расширить парк оборудования под конкретный проект будет нельзя: приложения, которые работали на первом VPS, так и будут «крутиться» именно на этом сервере.
Какой выход есть в такой ситуации? Произвести вертикальное масштабирование системы: увеличить в физическом оборудовании количество оперативной памяти, объем и скорость обмена данных с жестким диском, тактовую частоту процессора. Это на какое-то время поможет. Но поскольку у «железа» всегда есть предел, вы не сможете бесконечно наращивать мощность одной вычислительной единицы и рано или поздно вам придется полностью обновить инфраструктуру.
Альтернативой вертикальному масштабированию является горизонтальное, т.е. увеличение облачных ресурсов за счет присоединения большего количества виртуальных серверов к уже существующей системе. Единственное ограничение — заложенные на этапе проектирования лимиты, обусловленные техническими особенностями информационной системы.
С этим не возникает трудностей у стартапов, которые появляются сейчас, когда аренда инфраструктуры по модели IaaS уже распространена: обычно они приобретают вычислительные мощности у облачного провайдера — и им даже не обязательно с точностью до конкретного количества запросов в единицу времени прогнозировать, как будет возрастать их нагрузка в будущем. Они в любом случае смогут масштабировать свою систему в любую сторону «в один клик».
Сложнее обстоит дело с небольшими, но зрелыми компаниями. Они, как правило, изначально размещаются в коммерческих ЦОДах или имеют корпоративный дата-центр — в любом случае их инфраструктура полностью или большей частью представлена физическими и виртуальными серверами. Зачастую корпоративная система под отдельные задачи построена таким образом, что функционировать она умеет только в рамках одного сервера — неважно, физического или виртуального. Другими словами, написанное специалистами компании серверное ПО не подразумевает взаимодействиями с другими модулями, расположенными вне этого сервера. Все работает исключительно локально.
Стартапы могут учесть горький опыт предшественников и не повторять ошибок, которые могут стать для бизнеса если не фатальными, то наверняка принести убытки.
В настоящее время я работаю в компании, которая продает GPS-трекеры вместе с услугой онлайн-мониторинга, — показания можно просмотреть в режиме реального времени в личном кабинете на сайте компании или в корпоративном приложении.
На этапе запуска мы планировали, что спустя три-четыре месяца будет продано около 5 тыс. GPS-трекеров, что обернется нагрузкой приблизительно в 100 обращений к серверу в секунду.
Для того чтобы обработать такое количество запросов, нам были нужны два сервера на базе Intel Xeon E5 2620 v4 с RAID-массивом из HDD-дисков на 1 Tбайт для хранения данных телеметрии, а также один сервер на базе Intel Xeon E5 2660 v4 для обработки запросов от трекеров и пользователей приложений.
Или же мы могли просто арендовать облачные ресурсы у сервис-провайдера. Мы, разумеется, выбрали второй вариант.
Спустя полгода на наших мощностях работали уже 25 тыс. трекеров: когда необходимо было масштабировать сервис, провайдер просто включил дополнительную группу облачных серверов в общую цепочку, и мы безболезненно увеличили мощности.
Если бы мы изначально не подумали о том, как возрастет наша нагрузка условно через шесть месяцев, и купили бы один дорогой, но мощный сервер, то вскоре столкнулись бы с ситуацией, когда для него не нашлось бы более мощных (по доступным ценам) комплектующих, — и тогда разделить нагрузку было бы невозможно. Иногда такие решения связаны с элементарной экономией: написать код, который будет распределять нагрузку на несколько серверов дороже и дольше по времени, чем просто купить один сервер. Поскольку в самом начале задача стоит вполне конкретная — быстрее запустить сервис, вопрос масштабирования откладывается компаниями в долгий ящик.
И напоследок: облачные решения по модели IaaS выгодны бизнесу с сезонными нагрузками. Например, сейчас, в период Чемпионата мира по футболу, у букмекерских компаний нагрузка перед матчами резко возрастает. А в другие промежутки времени она гораздо ниже — тогда можно сводить к минимуму потребление ресурсов и не платить лишние деньги за простой инфраструктуры, которая по факту не используется.
Юрий Бушев, специалист по Node.js-разработке
Заметили неточность или опечатку в тексте? Выделите её мышкой и нажмите: Ctrl + Enter. Спасибо!
Читайте также:
Российский рынок облачных инфраструктурных сервисов 2023
Как попасть в российскую «таблицу Менделеева» виртуализации?
Российские облака: курс на экосистемы
Российское ПО виртуализации. Новые вызовы и предложения
Инсорсинг, коробочные решения и облачные сервисы. Тенденции и предпочтения российского бизнеса