Открыть сервис

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

Вертикальная масштабируемость (англ. vertical scaling, scale-up) — это способ увеличения производительности вычислительной системы, при котором мощность наращивается за счёт добавления или замены компонентов внутри одного узла (сервера, компьютера, виртуальной машины). В отличие от горизонтальной масштабируемости, предполагающей добавление новых узлов, вертикальная масштабируемость не меняет количество элементов в системе, а усиливает существующий.

Принцип действия

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

  • Увеличение объёма оперативной памяти (RAM) — позволяет системе обрабатывать больше данных в оперативной памяти, сокращая обращения к диску.
  • Замена процессора на более мощный — увеличение тактовой частоты, количества ядер, объёма кэша или использование процессора с более современной архитектурой.
  • Установка более быстрых накопителей — переход с жёстких дисков (HDD) на твердотельные накопители (SSD), использование NVMe-дисков.
  • Увеличение пропускной способности сети — установка сетевых карт с более высокой скоростью передачи данных.
  • Добавление специализированных ускорителей — графических процессоров (GPU), FPGA или ASIC для задач машинного обучения, криптографии, обработки видео.

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

Преимущества и недостатки

Преимущества

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

Недостатки

  • Физические ограничения — каждый сервер имеет пределы по объёму памяти, количеству процессоров, энергопотреблению и тепловыделению. Дальнейшее масштабирование становится невозможным после достижения аппаратного максимума.
  • Высокая стоимость — топовые компоненты (например, серверные процессоры с большим числом ядер, большие объёмы RAM) стоят непропорционально дорого по сравнению с несколькими более дешёвыми узлами.
  • Единая точка отказа (SPOF) — выход из строя одного узла приводит к полной недоступности системы. Для обеспечения отказоустойчивости требуется резервирование (кластеризация), что усложняет архитектуру.
  • Ограниченная масштабируемость — после исчерпания возможностей одного узла дальнейшее наращивание производительности требует перехода на горизонтальную модель.

Сравнение с горизонтальной масштабируемостью

ХарактеристикаВертикальная масштабируемостьГоризонтальная масштабируемость
Способ увеличения мощностиУсиление одного узлаДобавление новых узлов
Сложность реализацииНизкая (часто без изменений ПО)Высокая (требуется распределённая архитектура)
Предел масштабированияЖёсткий (аппаратные ограничения)Теоретически неограничен
Стоимость на единицу производительностиРастёт экспоненциальноРастёт линейно
ОтказоустойчивостьНизкая (единая точка отказа)Высокая (при правильной настройке)
ЗадержкиМинимальные (внутри одного узла)Выше из-за сетевого обмена
ПримерыУвеличение RAM на сервере, замена CPUДобавление новых серверов в кластер

Применение

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

  • Базы данныхреляционные СУБД (например, Oracle, PostgreSQL, MySQL) часто требуют мощных однопроцессорных серверов для обеспечения транзакционной целостности. Вертикальное масштабирование позволяет увеличить объём обрабатываемых данных без перехода на распределённые схемы.
  • Высокопроизводительные вычисления (HPC) — для задач, требующих интенсивной работы с памятью (например, симуляции в физике, биоинформатике), используются серверы с большим объёмом RAM и быстрыми процессорами.
  • Виртуализация — гипервизоры (VMware, Hyper-V, KVM) позволяют динамически выделять ресурсы виртуальным машинам, что эквивалентно вертикальному масштабированию на уровне хоста.
  • Облачные вычисления — провайдеры (Amazon Web Services, Microsoft Azure, Яндекс.Облако) предлагают виртуальные машины с различными конфигурациями (например, Amazon EC2 серии m5.24xlarge с 96 vCPU и 384 ГБ RAM). Пользователь может выбрать более мощный экземпляр без изменения архитектуры приложения.
  • Встраиваемые системы — в промышленных контроллерах, медицинском оборудовании и автомобильной электронике замена модуля на более производительный часто проще, чем проектирование распределённой системы.

Примеры

  • База данных на одном сервере — компания использует PostgreSQL на сервере с 16 ГБ RAM. При росте нагрузки объём памяти увеличивается до 64 ГБ, а процессор заменяется на более мощный. Приложение не требует изменений.
  • Облачная виртуальная машина — разработчик запускает веб-приложение на виртуальной машине с 2 vCPU и 4 ГБ RAM. При увеличении трафика он меняет тип машины на 8 vCPU и 32 ГБ RAM через консоль облачного провайдера.
  • Игровой сервер — сервер Minecraft с модами на одном физическом узле. При подключении большего числа игроков администратор увеличивает объём оперативной памяти и добавляет более быстрый SSD.

Ограничения и альтернативы

Основным ограничением вертикальной масштабируемости является физический предел современных серверов. Например, максимальный объём оперативной памяти для серверов на базе архитектуры x86-64 составляет порядка 12 ТБ (для процессоров Intel Xeon Scalable 4-го поколения). Дальнейшее увеличение требует перехода на другие архитектуры (например, ARM) или технологии (например, CXL — Compute Express Link), что пока не получило широкого распространения.

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

Источники

  1. Tanenbaum A., Van Steen M. «Distributed Systems: Principles and Paradigms». — Pearson, 2007.
  2. Coulouris G., Dollimore J., Kindberg T. «Distributed Systems: Concepts and Design». — Addison-Wesley, 2011.
  3. Документация Amazon Web Services: «Amazon EC2 Instance Types» (2023).
  4. Документация Microsoft Azure: «Sizes for virtual machines in Azure» (2023).
  5. Статья «Vertical Scaling vs. Horizontal Scaling» — журнал «IEEE Software», 2018.
  6. Материалы курса «Масштабируемость вычислительных систем» — МФТИ, 2020.

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →