Любой разработчик, сталкивающийся с увеличением или уменьшением нагрузки на приложения, должен иметь глубокое представление о масштабировании и инструментах, необходимых для точного управления нагрузкой. На эту тему на портале The New Stack рассуждает вице-президент DigitalOcean по маркетингу продуктов и связям с разработчиками Раман Шарма.

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

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

Масштабирование спасает приложения

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

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

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

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

Масштабируемость приложения с использованием PaaS

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

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

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

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