Содержание

Горизонтальное и вертикальное масштабирование IT-инфраструктуры

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

Что такое масштабирование и когда оно применяется

Масштабирование — это процесс добавления ресурсов, направленный на возможность информационной системы справляться с растущими объемами данных и их обработкой. Не существует IT-инфраструктуры, которая оставалась бы неизменной в течение длительного времени в работающем окружении. Даже если компания поставила процессы на паузу, не растет и не развивается, количество данных все равно будет накапливаться, а информационные системы — усложняться. Вычислительные запросы требуют хранения в памяти сервера большого объема данных и выделения значительных ресурсов.

 

Поэтому одна из приоритетных задач IT-специалистов — обеспечить масштабируемость инфраструктуры, то есть возможность быстро и без лишних затрат расширить объем и производительность IT-решения. Масштабирование IT-инфраструктуры может быть горизонтальным и вертикальным.

Вертикальное масштабирование

Вертикальное масштабирование предполагает увеличение мощностей за счет добавления ресурсов: процессоров, памяти, дисков и т.д. Вертикальное масштабирование применяют в тех случаях, когда компания достигла ограничений производительности конкретного элемента инфраструктуры или ее узла (CPU, СХД и т.п.). По мере роста требований к производительности IT-инфраструктуры компоненты вычислительной системы заменяются более мощными. Рост производительности каждого отдельного компонента приводит к повышению общей производительности. 

 

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

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

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

 

Еще один плюс горизонтального масштабирования — возможность работать без простоев. При горизонтальном масштабировании экземпляры ПО работают на нескольких узлах IT-инфраструктуры. Даже если один из них выйдет из строя, оставшиеся распределят ее нагрузку между собой, и ПО продолжит работать. Для сравнения: при вертикальном масштабировании выход из строя виртуальной машины приведет к тому, что ПО перестанет работать и возникнет необходимость вмешательства для восстановления работоспособности. Поэтому при вертикальном масштабировании чем дороже серверы, тем меньше вероятность сбоя в работе и простоя. Горизонтальное масштабирование позволяет отказаться от покупки дорогого оборудования с повышенной надежностью. Проще и выгоднее приобрести недорогие элементы инфраструктуры и в случае выхода из строя заменить их на новые. Расходы можно сократить примерно в 20 раз. При этом созданная на новом оборудовании виртуальная машина будет содержать часть данных, которая обеспечит стабильную работу в составе общего кластера. Это позволит мигрировать виртуальные машины из одной инфраструктуры в другую, не останавливая работу.

Как гиперконвергенция позволяет перейти к горизонтальному масштабированию

Гиперконвергентные решения позволяют использовать виртуальную инфраструктуру в качестве платформы для эксплуатации решения в формате горизонтального масштабирования. Тем самым компания может заменить вертикальное масштабирование на горизонтальное. Гиперконвергенция — это современная  инфраструктура, в которой слои вычислений, хранения и сетевые ресурсы объединены в компоненты без выделенных ролей. Это обеспечивает простоту, скорость и наглядность, а также отсутствие дискретности.

 

При необходимости масштабирования гиперконвергентной инфраструктуры к ней добавляют новые узлы. При этом все узлы и элементы будут одинаковыми, а все роли объединены. Это позволяет значительно упростить инфраструктуру и снизить стоимость ее обслуживания. Если при конвергентном подходе для обслуживания инфраструктуры «с историей» нужна команда из 15-20 человек, то гиперконвергентные решения могут управляться одним специалистом.

 

Пример российского гиперконвергентного решения — платформа vStack. Платформа позволяет выстраивать инфраструктуру на принципах горизонтального масштабирования и поэтому может использоваться с аппаратным обеспечением как корпоративного, так и потребительского уровня. Заказчик может самостоятельно формировать контур собственной IT-системы и выбирать оборудование для эксплуатации платформы исходя из собственных потребностей, а не конфигурационных лимитов, навязанных ему производителем. 

 

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

 

Виды и отличия методов масштабирования баз данных

В процессе развития бизнеса растёт объём необходимых данных и операций с ними. В определённый момент один сервер перестаёт справляться с нагрузкой, и тогда необходимо масштабирование баз данных. Как осуществляется этот процесс?

Вертикальное масштабирование

Вертикальное масштабирование предполагает наращивание мощностей сервера. Основным преимуществом метода является его простота. Нет необходимости переписывать код при добавлении мощностей, а управлять одним крупным сервером намного проще, чем целой системой. Это же является и основным недостатком — масштабирование ресурсов одного сервера имеет вполне конкретные аппаратные ограничения. Также стоит учесть стоимость такого решения: сервер с кратным объёмом вычислительных ресурсов в большинстве случаев оказывается дороже, чем несколько менее мощных серверов, дающих в сумме такую производительность.

Вертикальное масштабирование баз данных

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

Горизонтальное масштабирование означает увеличение производительности за счёт разделения данных на множество серверов. Такой способ предполагает увеличение производительности без снижения отказоустойчивости. Существует три основных типа горизонтального масштабирования.

Горизонтальное масштабирование баз данных

Репликация

Этот термин подразумевает копирование данных между серверами. При использовании такого метода выделяют два типа серверов: master и slave. Мастер используется для записи или изменения информации, слейвы — для копирования информации с мастера и её чтения. Чаще всего используется один мастер и несколько слейвов, так как обычно запросов на чтение больше, чем запросов на изменение. Главное преимущество репликации — большое количество копий данных. Так, если даже головной сервер выходит из строя, любой другой сможет его заменить. Однако как механизм масштабирования репликация не слишком удобна. Причина тому — рассинхронизация и задержки при передаче данных между серверами. Чаще всего репликация используется как средство для обеспечения отказоустойчивости вместе с другими методами масштабирования.

Репликация баз данных

Партицирование/секционирование

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

Секционирование баз данных

Шардирование/шардинг/сегментирование

Шардинг — это принцип проектирования базы данных, при котором части таблицы хранятся раздельно, на разных физических серверах. Шардинг является наиболее приемлемым решением для крупномасштабной деятельности, особенно если его использовать в паре с репликацией. Но стоит отметить, что это достаточно сложно организовать, так как необходимо учитывать межсерверное взаимодействие.

Сегментирование баз данных

Резюме

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

Все, что вам нужно знать

У вас есть два варианта расширения ИТ-системы для удовлетворения требований возросшей нагрузки: горизонтальное или вертикальное масштабирование. Обе стратегии включают в себя добавление новых ресурсов (ОЗУ, ЦП, жестких дисков и т. д.) в вычислительную инфраструктуру, но они имеют разные преимущества и проблемы.

Итак, когда спрос на ваше приложение или веб-сайт растет, следует ли масштабировать его по горизонтали или по вертикали?

Эта статья предлагает подробное сравнение горизонтального и вертикального масштабирования , две разные стратегии добавления дополнительных ресурсов в ИТ-систему. Читайте дальше, чтобы узнать о различиях между двумя моделями масштабирования и посмотреть, какая из них лучше подходит для вашего случая использования.

Что такое масштабируемость?

Масштабируемость — это способность компьютерной системы (аппаратного или программного обеспечения) продолжать нормально функционировать при изменении ее размера или объема. Масштабируемая система легко расширяется, чтобы удовлетворить растущий спрос клиентов и большие рабочие нагрузки, не влияя на качество обслуживания.

Каждая ИТ-система (веб-сайт, приложение, база данных и т. д.) имеет предел масштабируемости , точка, при которой она больше не может без проблем справляться с дополнительным спросом. Нехватка ресурсов для удовлетворения потребностей в трафике или запросов пользователей приводит к задержке, а некоторые экстремальные перегрузки приводят к сбоям и простоям сервера.

Единственный способ увеличить предел масштабируемости системы — добавить дополнительные вычислительные ресурсы (т. е. масштабировать систему). Системный администратор масштабирует машину, улучшая одно (или несколько) из следующего:

  • Дисковый ввод-вывод.
  • Центральный процессор (ЦП).
  • Память/память.
  • Пропускная способность сети.

Вы также можете масштабировать систему. Этот процесс включает в себя снижение способности приспосабливаться к меньшему спросу, как правило, для устранения ненужных расходов и сокращения расходов на ИТ. Уменьшение масштаба распространено в облачных вычислениях, поскольку системные администраторы стремятся контролировать затраты на облачные вычисления за счет оптимизации использования ресурсов.

Масштабирование (вверх или вниз) может быть постоянным или временным. Временное масштабирование — это вариант, когда компания ожидает краткосрочного всплеска трафика или активности, который со временем пройдет (например, когда веб-сайт электронной коммерции готовится к праздничному сезону).

Существует две стратегии расширения возможностей системы:

  • Горизонтальное масштабирование (добавление дополнительных серверов в пул ресурсов и распределение нагрузки на большее количество устройств).
  • Вертикальное масштабирование (обновление текущей машины дополнительными или лучшими компонентами, например, добавление нового процессора или дополнительной оперативной памяти на сервер).

Давайте подробно рассмотрим обе модели масштабирования и посмотрим, что они предлагают.

Что такое горизонтальное масштабирование?

Горизонтальное масштабирование (или « масштабирование «) относится к добавлению дополнительных узлов в пул ресурсов системы для удовлетворения возросшего спроса. Вы не улучшаете характеристики существующей машины — вместо этого вы добавляете в кластер больше серверов того же размера и распределяете рабочую нагрузку между большим количеством устройств.

Масштабирование позволяет системному администратору объединить мощность нескольких машин для удовлетворения текущих требований нагрузки. Узлы не обязательно должны находиться в одном центре обработки данных, они даже не должны быть в одном регионе.

Преимущества горизонтального масштабирования

  • Масштабируемые системы не имеют предела масштабируемости. Единственными ограничениями горизонтального масштабирования являются бюджет и пространство в центре обработки данных.
  • Распределение данных и операций между узлами повышает отказоустойчивость. Если один из серверов выходит из строя, остальная часть системы поддерживает работу служб и их доступность.
  • Система не отключается в процессе масштабирования.
  • Масштабируемые системы
  • также позволяют беспрепятственно сокращать емкость, поэтому вам не придется постоянно платить за пиковый спрос.
  • Квалифицированная команда знает, как настроить систему с автоматическим масштабированием (в обоих направлениях).
  • Системные администраторы могут распределять резервные копии данных по нескольким узлам.

Недостатки горизонтального масштабирования

  • Необходимо добавить программное обеспечение для балансировки нагрузки и обеспечить эффективную синхронизацию узлов. Эта установка сложна для менее опытных команд.
  • Чем больше узлов вы добавляете в систему, тем сложнее становится повседневное управление сервером.
  • Согласованность данных является проблемой из-за связи между серверами.
  • Связь между узлами снижает производительность в плохо оптимизированном кластере.
  • Серверы по-прежнему сталкиваются с аппаратными ограничениями, если машины слишком малы.
  • Каждый новый сервер требует больше места, охлаждения и мощности, поэтому затраты на горизонтальное масштабирование быстро выходят из-под контроля.
  • Большее количество узлов создает большую поверхность атаки и требует более сложного планирования реагирования на инциденты.

Вот простая аналогия для объяснения того, что означает масштабирование. Допустим, вы планируете прокатиться с тремя приятелями в четырехместной машине. Что вы будете делать, если еще три человека захотят присоединиться к вам?

Масштабирование равносильно получению еще одного такого же четырехместного автомобиля и поездке в колонне из двух автомобилей.

Что такое вертикальное масштабирование?

Вертикальное масштабирование (или « масштабирование до ») означает добавление дополнительного оборудования к существующей машине, чтобы вы могли выполнять ту же рабочую нагрузку с лучшими характеристиками.

Например, если серверу требуется большая вычислительная мощность, вертикальное масштабирование устройства будет означать обновление его ЦП. Другие примеры вертикального масштабирования включают в себя:

  • Добавление оперативной памяти к машине.
  • Замена жесткого диска на SSD с большим объемом памяти.
  • Повышение скорости сети.

В некоторых случаях вертикальное масштабирование означает полную замену машины, чтобы справиться с возросшим спросом.

Этот тип масштабирования был популярным вариантом, когда у нас были монолитные приложения, которые должны были выполняться на одном сервере. В настоящее время вертикальное масштабирование является распространенным выбором для малых и средних компаний, которые видят заметную разницу в производительности или UX по сравнению с модернизированной машиной.

Преимущества вертикального масштабирования

  • Быстрое время отклика, так как нет синхронизированных узлов, которые взаимодействуют друг с другом.
  • Обновление определенных компонентов стоит меньше, чем покупка нового сервера.
  • Вам нужно меньше места в серверной комнате для вертикального масштабирования, чем горизонтального (счета за охлаждение и электроэнергию также ниже).
  • Все выполняется на одном узле, что обеспечивает лучшую согласованность и целостность данных.
  • Простота внедрения, поскольку нет необходимости в балансировке нагрузки или виртуализации.
  • Вы не усложняете повседневное управление ИТ.

Недостатки вертикального масштабирования

  • Существует ограничение на масштабирование одной машины, поскольку каждое устройство имеет пороговое значение для ОЗУ, хранилища и вычислительной мощности.
  • Более высокая вероятность простоя службы, поскольку вы полагаетесь на один компьютер, выступающий в качестве единой точки отказа.
  • Для выполнения обновления необходимо перевести компьютер в автономный режим.
  • Всегда есть процент вычислительных ресурсов, которые вы не используете активно.
  • Повышенный риск безвозвратной потери данных из-за размещения всего на одном сервере.

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

Горизонтальное и вертикальное масштабирование: различия

В приведенной ниже таблице горизонтального и вертикального масштабирования представлено непосредственное сравнение двух моделей масштабируемости:

Точка сравнения Горизонтальное масштабирование (масштабирование) Вертикальное масштабирование (увеличение)
Как работает масштабирование Вы добавляете новые серверы того же размера в существующий пул машин Вы обновляете компоненты существующего сервера (или получаете новое устройство для замены текущего)
Сложность процесса Высокий (требуется балансировка нагрузки и код для управления согласованностью данных) Низкий (выключите сервер, извлеките старый компонент, установите новый и перезапустите устройство)  
Общая стоимость   Высокий (при каждом масштабировании вы покупаете новые серверы) Низкий (если вы покупаете только один или два новых компонента)
Балансировка нагрузки Да
Единственная точка отказа Да
Вопросы производительности Узлы обмениваются данными через сетевые вызовы (RPC), что снижает производительность системы Все работает на одном сервере, что повышает производительность
Хранение данных Вы распределяете данные между несколькими узлами Все данные находятся на одном сервере
Согласованность данных Проблема, поскольку данные перемещаются между разными узлами Данные находятся в одной системе, поэтому меньше вероятность грязного чтения или грязной записи
Верхний предел масштабируемости Нет (вы всегда можете добавить больше машин) Да (каждая машина имеет пороговое значение для ОЗУ, хранилища и вычислительной мощности)
Время простоя при масштабировании Да
Работа с быстрым ростом Очень гибкий (в некоторых случаях даже автоматический) Ручной и негибкий
Риск неиспользования ресурсов Низкий Высокий
Требуется доработка кода Требуется разорвать последовательную часть логики, чтобы рабочие нагрузки выполнялись параллельно на нескольких машинах Логика не меняется (вы просто запускаете тот же код на устройстве с более высокими характеристиками)
Возможность масштабирования Да Нельзя без отключения машины и удаления компонентов
Программы базы данных Cassandra, Google Cloud Spanner и MongoDB MySQL и Amazon RDS

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

Горизонтальное или вертикальное масштабирование: что выбрать?

Как масштабирование, так и масштабирование являются полезными стратегиями, которые подходят для различных вариантов использования и бизнес-приоритетов:

  • Горизонтальное масштабирование повышает отказоустойчивость и создает систему, которая может беспрепятственно масштабироваться дальше.
  • Вертикальное масштабирование обеспечивает согласованность данных и производительности для менее ресурсоемких задач.

Вот основные факторы, которые следует учитывать при выборе модели масштабирования:

  • Производительность: Вертикальное масштабирование — это более простой и эффективный вариант, если одна машина может удовлетворить ваши потребности в производительности. В противном случае масштабирование является единственным жизнеспособным выбором.
  • Размер текущих экземпляров: Если вы полагаетесь на меньшие экземпляры, вертикальное масштабирование перед масштабированием, вероятно, является лучшей долгосрочной стратегией.
  • Гибкость: Горизонтальное масштабирование — это то, что нужно, если вам требуется возможность динамической адаптации ИТ-ресурсов к текущей нагрузке.
  • Регулярность обновления: Масштабирование сложнее настроить изначально, но модель упрощает каждое последующее расширение. С другой стороны, масштабирование — это не тот процесс, который вы хотите выполнять регулярно из-за связанных с ним простоев.
  • Ограничение масштабируемости: Увеличение масштаба всегда имеет установленный порог, поэтому используйте горизонтальное масштабирование, если вы хотите избежать ограничения масштабируемости.
  • Избыточность: Если ваше приложение или рабочая нагрузка не могут допустить простоя, лучше использовать горизонтальное масштабирование, поскольку оно не имеет единых точек отказа (плюс, процесс масштабирования не приводит к останову системы).
  • Географическое распространение: Размещение всего приложения на одном сервере иногда невозможно (например, когда вы пытаетесь уменьшить локальную задержку или соблюдать правила соответствия). Выберите горизонтальное масштабирование, если вам необходимо распространять приложение по разным регионам.
  • Стоимость: Вертикальное масштабирование дешевле в реализации и обслуживании, чем набор узлов с горизонтальным масштабированием. Рассчитайте стоимость увеличения серверных ресурсов и сравните ее с затратами на добавление дополнительных серверов, чтобы увидеть, какой подход более целесообразен с точки зрения бюджета.

Bare Metal Cloud от phoenixNAP обеспечивает автоматизированное развертывание серверов с предварительно настроенными выделенными серверами, подходящими для любой рабочей нагрузки. BMC создан для работы в облаке, им можно управлять через API и интерфейс командной строки, а также он обеспечивает мгновенное горизонтальное масштабирование.

ПОДРОБНЕЕ

Знайте, как выбрать оптимальную модель масштабирования

Горизонтальное масштабирование становится все более популярным благодаря лучшему использованию ресурсов и гарантиям безотказной работы. Однако эта тенденция не означает, что вы всегда должны стремиться к горизонтальному масштабированию — некоторые варианты использования по-прежнему гораздо лучше подходят для масштабирования. Оценивайте соответствие каждой рабочей нагрузки и набора данных в вакууме и всегда рассматривайте обе модели масштабирования, прежде чем приступать к проектированию системы.

Горизонтальное Против. Вертикальное масштабирование: как они соотносятся?

Мы все хотим роста, но часто оказываемся не в состоянии справиться с ним. Это немного похоже на поход в спортзал, поднятие тяжестей и наблюдение за реальными результатами только для того, чтобы понять, что вы больше не влезаете в свою старую одежду. Теперь вы должны решить, хотите ли вы изменить их или купить новую одежду.

Мы можем использовать эту очень простую аналогию, чтобы понять разницу между горизонтальным и вертикальным масштабированием. Это подробное руководство охватывает:

Содержание

  • Что такое масштабируемость?
  • Что такое горизонтальное масштабирование?
  • Что такое вертикальное масштабирование?
  • Горизонтальное Против. Вертикальное масштабирование: краткий обзор
  • Горизонтальное Против. Вертикальное масштабирование
    • Преимущества горизонтального масштабирования
    • Недостатки горизонтального масштабирования
    • Преимущества вертикального масштабирования
    • Недостатки вертикального масштабирования
  • Что выбрать и когда?
  • Горизонтальное Против. Вертикальное масштабирование: варианты использования
  • Локальная или локальная версия Облачное масштабирование
  • Стоимость: Главный определитель

Что такое масштабируемость?

Масштабируемость описывает эластичность системы. Хотя мы часто используем его для обозначения способности системы к росту, это определение не является исключительным. Мы можем уменьшать масштаб, масштабировать и масштабировать соответственно.

Если вы используете веб-сайт, веб-службу или приложение, их успех зависит от объема получаемого ими сетевого трафика. Обычно недооценивают объем трафика, который будет потреблять ваша система, особенно на ранних этапах. Это может привести к сбою сервера и/или снижению качества вашего обслуживания.

Таким образом, масштабируемость описывает способность вашей системы адаптироваться к изменениям и требованиям. Хорошая масштабируемость защищает вас от простоев в будущем и гарантирует качество ваших услуг.

Но какие варианты у вас есть, когда дело доходит до реализации масштабирования и обеспечения масштабируемости вашего бизнеса? Вот тут-то и появляются горизонтальное и вертикальное масштабирование.

Что такое горизонтальное масштабирование?

Горизонтальное масштабирование (также известное как горизонтальное масштабирование) означает добавление дополнительных узлов или машин в вашу инфраструктуру для удовлетворения новых требований. Если вы размещаете приложение на сервере и обнаруживаете, что оно больше не имеет мощности или возможностей для обработки трафика, добавление сервера может быть вашим решением.

Как работает горизонтальное масштабирование

Это очень похоже на делегирование нагрузки между несколькими сотрудниками вместо одного. Однако недостатком этого может быть дополнительная сложность вашей операции. Вы должны решить, какая машина что делает и как ваши новые машины работают с вашими старыми машинами.

Можно считать это противоположностью вертикального масштабирования.

Что такое вертикальное масштабирование?

Вертикальное масштабирование (также известное как масштабирование) описывает добавление дополнительных ресурсов в систему, чтобы она удовлетворяла потребности. Чем это отличается от горизонтального масштабирования?

В то время как горизонтальное масштабирование относится к добавлению дополнительных узлов, вертикальное масштабирование описывает добавление большей мощности к вашим текущим машинам. Например, если вашему серверу требуется большая вычислительная мощность, вертикальное масштабирование будет означать обновление ЦП. Вы также можете вертикально масштабировать память, хранилище или скорость сети.

Как работает вертикальное масштабирование

Кроме того, вертикальное масштабирование может также означать полную замену сервера или перенос рабочей нагрузки сервера на обновленный.

Горизонтальное Против. Вертикальное масштабирование: краткий обзор

 

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

Вертикальное масштабирование

Описание

Увеличение или уменьшение количества узлов в кластере или системе для обработки увеличения или уменьшения рабочей нагрузки

Увеличение или уменьшение мощности системы для обработки увеличенной или уменьшенной рабочей нагрузки

Пример

Добавить или уменьшить количество виртуальных машин (ВМ) в кластере ВМ

Добавьте или уменьшите объем ЦП или памяти существующей ВМ

Исполнение

Масштаб входа/выхода

Масштаб вверх/вниз

Распределение нагрузки

Рабочая нагрузка распределяется между несколькими узлами.

Части рабочей нагрузки находятся на этих разных узлах

Один узел обрабатывает всю рабочую нагрузку.

Параллелизм

Распределяет несколько заданий между несколькими машинами по сети одновременно. Это снижает нагрузку на каждую машину

Полагается на многопоточность на существующей машине для одновременной обработки нескольких запросов

Требуемая архитектура

Распределено

Любой

Реализация

Требует больше времени, опыта и усилий

Требуется меньше времени, опыта и усилий

Сложность и обслуживание

Высшее

Нижний

Конфигурация

Это требует изменения последовательной части логики для одновременного запуска рабочих нагрузок на нескольких машинах

Нет необходимости менять логику. Тот же код может работать на устройстве с более высокими характеристиками

.

Время простоя

Да

Балансировка нагрузки

Необходимо активно распределять рабочую нагрузку между несколькими узлами

Не требуется в одиночном узле

Отказоустойчивость

Низкий, потому что другие машины в кластере предлагают резервную копию

Высокий, так как это единственный источник отказа

Затраты

Высокие затраты изначально; оптимальный по времени

Недорогой изначально; менее рентабельным с течением времени

Сеть

Быстрая связь между машинами

Более медленная связь между машинами

Производительность

Высшее

Нижний

Ограничение

Добавьте как можно больше машин

Ограничено объемом ресурсов, который может обрабатывать одна машина

Горизонтальное масштабирование против.

Вертикальное масштабирование: углубленный взгляд

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

У вас есть уровень представления (пользовательский интерфейс/клиент), уровень логики (виртуальный сервер/службы) и уровень данных (хранилище/базы данных). В случае горизонтального масштабирования вы можете делегировать каждый уровень (или функции, отвечающие за них) другому узлу.

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

Для дальнейшей иллюстрации рассмотрим базы данных. Если вы размещаете свою базу данных на одном выделенном сервере и она становится слишком большой, горизонтальное масштабирование будет означать добавление нового узла, разделение и совместное использование данных между старым сервером и новым.

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

С учетом сказанного давайте рассмотрим простую разбивку преимуществ и недостатков вертикального и горизонтального масштабирования.

Преимущества горизонтального масштабирования

  • Масштабирование проще с аппаратной точки зрения — Все, что требуется для горизонтального масштабирования, — это добавить дополнительные машины в текущий пул. Это избавляет от необходимости анализировать, какие характеристики системы необходимо обновить.
  • Меньше периодов простоя — Поскольку вы добавляете машину, вам не нужно выключать старую машину при масштабировании. Если все сделано эффективно, может никогда не возникнуть необходимость в простоях, и клиенты с меньшей вероятностью пострадают.
  • Повышенная отказоустойчивость и отказоустойчивость . Если вы полагаетесь на один узел для всех ваших данных и операций, вы рискуете потерять все это в случае сбоя. Распределение его между несколькими узлами спасает вас от потери всего.
  • Повышенная производительность — если вы используете горизонтальное масштабирование для управления сетевым трафиком, это позволяет использовать больше конечных точек для соединений, учитывая, что нагрузка будет делегирована между несколькими машинами.

Недостатки горизонтального масштабирования

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

Преимущества вертикального масштабирования

  • Экономичность — Обновление уже существующего сервера стоит меньше, чем покупка нового. Кроме того, у вас меньше шансов добавить новое программное обеспечение для резервного копирования и виртуализации при вертикальном масштабировании. Расходы на техническое обслуживание потенциально могут остаться прежними.
  • Менее сложная коммуникация процесса . Когда один узел обрабатывает все уровни ваших служб, ему не нужно будет синхронизироваться и взаимодействовать с другими машинами для работы. Это может привести к более быстрому ответу.
  • Более простое обслуживание . Обслуживание не только дешевле, но и менее сложно из-за количества узлов, которыми вам нужно управлять.
  • Меньшая потребность в изменении программного обеспечения — Вы с меньшей вероятностью измените принцип работы программного обеспечения на сервере или его реализацию.

Недостатки вертикального масштабирования

  • Более высокая вероятность простоя — Если у вас нет резервного сервера, который может обрабатывать операции и запросы, вам потребуется значительное время простоя для обновления вашей машины.
  • Единая точка отказа . Наличие всех ваших операций на одном сервере увеличивает риск потери всех ваших данных в случае аппаратного или программного сбоя.
  • Ограничения по обновлению — Существует ограничение на количество обновлений машины. Каждая машина имеет свой порог для оперативной памяти, хранилища и вычислительной мощности.

Что выбрать?

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

  • Стоимость — Первоначальные затраты на оборудование для горизонтального обновления выше. Если вы работаете с ограниченным бюджетом и вам нужно быстро и дешево добавить больше ресурсов в свою инфраструктуру, то вертикальное масштабирование может быть лучшим вариантом для вас.
  • Забота о будущем — Добавление дополнительных обновленных компьютеров посредством горизонтального масштабирования повысит общий порог производительности вашей организации. Существует ограничение на то, насколько вы можете вертикально масштабировать один узел, и он может не справиться с требованиями будущего.
  • Топографическое распределение — Если вы планируете иметь клиентов по всей стране или по всему миру, неразумно ожидать, что все они будут получать доступ к вашим услугам с одного компьютера в одном месте. В такой ситуации вам потребуется горизонтально масштабировать свои ресурсы, чтобы поддерживать соглашение об уровне обслуживания (SLA).
  • Надежность — Горизонтальное масштабирование может предложить вам более надежную систему. Это увеличивает избыточность и гарантирует, что вы не полагаетесь на одну машину. Если одна машина выходит из строя, другая может временно компенсировать слабину.
  • Возможность обновления и гибкость . Если вы запускаете уровни своего приложения на отдельных машинах, их легче отделить и обновить без простоев.
  • Производительность и сложность . Производительность будет зависеть от того, как работают ваши службы и как они взаимосвязаны. Простые незамысловатые приложения не выиграют от запуска на нескольких машинах. На самом деле, это может ухудшить его качество. Иногда лучше оставить приложение как есть и обновить оборудование в соответствии со спросом. Для горизонтального масштабирования может потребоваться переписать код или добавить виртуальную машину, объединяющую все серверы.

Горизонтальное Против. Вертикальное масштабирование: варианты использования

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

Используйте вертикальное масштабирование в следующих случаях:

  • Вместе с инженерами и другими заинтересованными сторонами вы убедились, что увеличение возможностей машин, таких как ЦП и объем памяти, обеспечит требуемый для ваших рабочих нагрузок уровень цены и производительности
  • Если вы только начинаете; вы не знаете, насколько постоянен трафик или сколько пользователей вы получите
  • Хотите использовать существующую систему внутри компании и услуги облачного провайдера для большей части клиентских решений
  • Вы знаете, что резервирование невозможно или необходимо для оптимальной работы
  • Обновлений немного и они редки, так что время простоя не беспокоит
  • У вас есть устаревшее приложение, которое не требует распределенной или высокой масштабируемости

Используйте горизонтальное масштабирование, когда:

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

Прежде чем выбрать горизонтальное или вертикальное масштабирование, внимательно изучите текущий вариант использования и сравнивайте его с будущими ожиданиями. Например, запустите часть своей рабочей нагрузки на каждой системе, чтобы увидеть, как она работает в соответствии с вашими соглашениями об уровне обслуживания (SLA) с вашими клиентами.

Локальная версия vs. Масштабирование в облаке

Для большей части этого руководства мы решили упростить задачу, используя для наших примеров локальное необлачное масштабирование. Однако облачное масштабирование работает почти так же.

Поставщик облачных услуг (CSP) может реализовать горизонтальное масштабирование на основе гиперконвергентной инфраструктуры или использовать виртуальные распределенные службы.

Первый довольно распространен среди частных и гибридных облачных решений. В большинстве случаев ваш облачный провайдер справится с масштабированием. Это означает, что вам или вашему ИТ-руководству не придется беспокоиться о том, какое новое оборудование потребуется для удовлетворения новых требований.

Поставщики услуг, такие как Azure и AWS, используют автоматическое масштабирование.

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

Стоимость: главный определяющий фактор

Несмотря на ваши устремления или потребности организации, в конечном итоге ваше решение может определить стоимость.

Хотя горизонтальное масштабирование звучит великолепно с функциональной точки зрения, вы не можете себе это позволить (прямо сейчас). Тем не менее, по-прежнему важно помнить, что локальное вертикальное и горизонтальное масштабирование могут быть не единственными доступными вам вариантами.

Вы можете интегрировать оба варианта или перенести инфраструктуру своей организации к поставщику облачных услуг и позволить ему выполнять масштабирование за вас.