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

eCommerce Sep 23, 2019

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

Главная / Блог / Как обеспечить масштабируемость облака

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

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

Источник изображения: Static.bluepiit

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

В поле зрения есть реальная позиция - увеличение против масштабирования. Что лучше?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Реализовать кеширование

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

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

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

Использовать услуги CDN

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

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

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

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

Заключение

Источник изображения: CDN.Lynda

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

Хотите узнать больше

Получите свежие статьи, новости и тематические исследования в первую очередь на вашу электронную почту

Теперь вы подписаны!