Шаблоны вычислительной нагрузки
Если трафик к облачному ресурсу, например виртуальной машине (или набору виртуальных машин) или веб-приложению, был бы постоянным и неизменным, масштабирование бы не потребовалось. Администратор облака мог бы просто подготавливать количество экземпляров, необходимое для выполнения нагрузки, и этого было бы достаточно. Но шаблоны трафика меняются со временем — иногда предсказуемо, а иногда — нет. В реальном мире администратор должен диагностировать нагрузку на ресурсы, которыми он управляет, и использовать масштабирование, чтобы убедиться, что система может справиться со спросом.
Прежде чем мы обсудим масштабирование, давайте узнаем, зачем мы используем масштабирование, рассмотрев несколько распространенных шаблонов нагрузок, которые испытывают виртуальные машины и другие облачные ресурсы.
Постоянный рост
Одна из самых частых причин масштабирования — это постоянный рост спроса. На рисунке 1 показан трафик на веб-сайте компании в течение 24 месяцев. Компания быстро растет, и трафик веб-сайта это отражает. Если предположить, что один веб-сервер может обрабатывать 5000 запросов в единицу времени, компания начинает работу с трех или четырех веб-серверов, но через два года ей потребуется около 20, чтобы справиться с растущим спросом и продолжить обслуживание клиентов.
Рис. 1. Согласованный рост.
Постоянный рост — это один из самых простых шаблонов нагрузки, так как изменение происходит стабильно и постепенно. Возможно, мы могли бы увеличивать масштаб с помощью физических серверов, так как можем предположить, когда потребуется следующий сервер (или набор серверов), и у нас есть несколько недель или даже месяцев, чтобы подготовиться, но облачные вычисления позволяют подключить новые виртуальные серверы за несколько минут. И хотя тенденция за 24 месяца показывает постоянный и предсказуемый рост, нагрузка может существенно меняться в течение более коротких периодов времени. Облачные вычисления гораздо проще адаптируются к микротенденциям, чем масштабирование с помощью физических серверов.
Постоянно изменяющаяся нагрузка
Быстрая эластичность, предлагаемая облачными вычислениями, очень важна, когда нагрузка меняется непредсказуемо в течение относительно коротких периодов. На рисунке 2 показана нагрузка на веб-сайт в течение 24 часов. Если предположить, что один сервер может обслуживать 5000 запросов в единицу времени, необходимое количество серверов варьируется от 2 до 16 в течение дня. Мы можем принять этот трафик, поддерживая 16 виртуальных веб-серверов постоянно, но помните, что поставщики облачных служб взимают плату за виртуальные машины даже при простое. Избыточная емкость не только тратит энергию, но и почти удваивает стоимость.
Рис. 2. Постоянно меняющиеся нагрузки.
Циклические нагрузки
На рисунке 3 показана нагрузка, которая увеличивается и уменьшается регулярно и отчасти предсказуема — например, спрос увеличивается в рабочее время и падает вечером и ночью. На пике нагрузки требуется около 20 серверов для обработки спроса (при показателе 5000 запросов в единицу времени на каждый сервер). Неразумно включать и выключать физические серверы круглые сутки, но виртуальные серверы можно легко подготавливать и освобождать по расписанию, чтобы обеспечить приблизительное соответствие емкости спросу. Физические серверы, которые простаивают или мало используются в течение 12 часов в день, приводят к нежелательным капитальным затратам и лишнему потреблению энергии. Виртуальные серверы тоже имеют свою цену, но их можно отключить, если они не нужны, и быстро создать при необходимости.
Рис. 3. Циклическая нагрузка, которая повторяется каждые 24 часа.
Непредсказуемые всплески
Один из наиболее сложных шаблонов с точки зрения затрат и обслуживания — непредсказуемые всплески (рис. 4). Если пиковые значения можно спрогнозировать, например, веб-сайт обслуживает службу доставки пиццы и нагрузки увеличиваются в выходные и праздники, то дополнительную емкость можно запланировать. Но если пиковые нагрузки невозможно спрогнозировать, нужно быть готовым к ним в любое время.
Рис. 4. Непредсказуемые всплески.
Мы можем представить чрезмерную стоимость (стоимость серверов, подготовленных для работы с пиковыми нагрузками, которые почти простаивают в периоды сниженного трафика) как область между верхней частью кривой и горизонтальной линией, нарисованной по самой высокой точке. В этом случае стоимость предоставления емкости для 100 000 запросов в единицу времени для нагрузки на рисунке 4 значительно выше, чем стоимость предоставления эквивалентной емкости на рисунке 3.
Если мы можем спрогнозировать величину пикового спроса (но необязательно его время) и нам не важна цена, мы можем обеспечить необходимую емкость в любое время, подготовив достаточно серверов для обработки самых высоких нагрузок. Облачные вычисления позволяют активировать ресурсы при необходимости и отключать их (и не платить за них), если они не используются. Эластичность обеспечивается путем масштабирования облачных ресурсов. Давайте подробно рассмотрим концепцию масштабирования и узнаем, почему это ключевой фактор для экономики облачных вычислений.