ДевОпс Jun 23, 2020

Как обеспечить масштабируемость облака

Евгения Вишнёва

CEO

Автор

Content

  1. Что такое масштабируемость?
  2. Типы масштабирования
  3. Как обеспечить максимальную масштабируемость
  4. Как мы решаем проблемы масштабирования?
  5. Заключение
Content

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

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

Облачное масштабирование вашего бизнесаИсточник изображения: Static.bluepiit

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

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

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

Если вы хотите проверить, насколько эффективно работают ваши сетевые протоколы и ресурсы веб-сервера, вы можете использовать любую доступную утилиту тестера нагрузки (например, siege), которая будет эмулировать искусственный приток пользователей на ваш сервер с тоннами запросов. Вам просто нужно отследить два ключевых параметра: n - определяет общее количество запросов и c - указывает количество одновременных запросов.

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

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

Почему нужно уделять особое внимание масштабируемости?

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

Типы масштабирования

Основные и наиболее распространенные типы процедур масштабирования включают в себя:

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

Вертикальное масштабированиеИсточник изображения: Dzone

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

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

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

Вопрос “что лучше - вертикальное или горизонтальое масштабирование?” не теряет актуальности.

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

Диагональное масштабирование

Это относительно новый термин, который придумал Джон Аллспо - автор и соучредитель Adaptive Capacity Labs. Таким образом, диагональное масштабирование объединяет лучшее из двух миров и определяет вертикальное масштабирование горизонтально масштабированных узлов, которые уже реализованы в существующей серверной инфраструктуре.

Как обеспечить максимальную масштабируемость

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

Проведение балансировки нагрузки

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

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

Процедура балансировки реализуется с помощью целого набора алгоритмов и методов, каждый из которых соответствует следующим уровням модели OSI: Network, Transport и Application. В практической реализации это требует использования нескольких физических серверов вместе со специализированным программным обеспечением, аналогичным веб-серверу Nginx.

Переход к автоматической масштабируемости веб-служб

Автоматическое масштабирование является особым подходом к динамическому масштабированию в контексте облачных сервисов (т.е. масштабирование, которое подразумевает настройку вычислительных мощностей в соответствии с объемом сетевой нагрузки). В частности, пользователям служб, которые включают процедуры автоматического масштабирования (наиболее известными из которых являются Amazon Web Service, Google Cloud Platform и Microsoft Azure), при необходимости предоставляются дополнительные виртуальные машины (которые могут быть автоматически исключены из кластера или контейнера по мере снижения трафика и интенсивности запросов).

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

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

Контейнеры микросервисов, кластеризация

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

Реализация кэширования

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

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

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

Использование служб CDN

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

В качестве альтернативы CDN может быть убыточным решением, если ваша ЦА (целевая аудитория), несмотря на широкое территориальное распределение, имеет локализации с концентрацией определенных пользователей. То есть, предположим, что около 60% вашей ЦА основано в США, 30% в Лондоне, а остальные 10% разбросаны по всей планете. В таком случае использование CDN будет рациональным решением только для последних 10% (тогда как в других местах потребуется установка новых серверов).

Как мы решаем проблемы масштабирования?

В настоящее время среди наших ярких примеров масштабирования, проведенного собственными специалистами, можно назвать создание архитектуры высокой масштабируемости для таких общедоступных облачных хранилищ, как AWS, Microsoft Azure, Google Cloud и Digital Ocean. Мы используем сценарии автоматического развертывания среды с помощью Terraform - системы следующего поколения для создания, управления и настройки облачной инфраструктуры. Наши серверные кластеры основаны на программном обеспечении для автоматического масштабирования Kubernetes и вспомогательной технологии контейнеризации Docker.

Заключение

масштабируемость в среде облачных вычислений - ДинарисИсточник изображения: CDN.Lynda

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

Доверьте поиск решения профессионалам

Наши сертифицированные специалисты знают, как воплотить вашу идею в реальность.

Введите имя
Введите E-mail
Пожалуйста, введите корректный телефон
Сообщение слишком короткое

Ваше сообщение было успешно отправлено. Мы скоро свяжемся! Success icon