Вертикальная масштабируемость¶
Вертикальная масштабируемость (англ. 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), что пока не получило широкого распространения.
В случаях, когда вертикальное масштабирование невозможно или экономически нецелесообразно, применяется горизонтальная масштабируемость — добавление новых узлов в кластер. Для этого архитектура приложения должна поддерживать распределённую обработку (например, шардирование баз данных, балансировку нагрузки, микросервисы). В современной практике часто используется комбинированный подход: сначала вертикальное масштабирование для быстрого увеличения производительности, затем — горизонтальное для обеспечения отказоустойчивости и дальнейшего роста.
¶Источники
- Tanenbaum A., Van Steen M. «Distributed Systems: Principles and Paradigms». — Pearson, 2007.
- Coulouris G., Dollimore J., Kindberg T. «Distributed Systems: Concepts and Design». — Addison-Wesley, 2011.
- Документация Amazon Web Services: «Amazon EC2 Instance Types» (2023).
- Документация Microsoft Azure: «Sizes for virtual machines in Azure» (2023).
- Статья «Vertical Scaling vs. Horizontal Scaling» — журнал «IEEE Software», 2018.
- Материалы курса «Масштабируемость вычислительных систем» — МФТИ, 2020.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →


