Блог

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

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

Масштабируемость — возможность системы увеличивать свою производительность при увеличении количества выделяемых ей ресурсов.

ESM-платформа SimpleOne

Виды масштабирования

Существует два вида масштабирования: вертикальное и горизонтальное.

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

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

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

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

  1. Разбиение системы на более мелкие структурные компоненты по функциям и разнесение их по отдельным серверам.
  2. Масштабирование в рамках функции:
    • увеличение количества серверов, параллельно выполняющих одну и ту же функцию;
    • использование современных технологий. Например, при масштабировании сервера баз данных (БД) используется репликация, партицирование и шардирование.

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

Разнесение серверов

Система SimpleOne разделена по функциям на четыре группы: клиентский сервер, сервер приложений, сервер БД и сервер файлового хранилища.

Разбиение системы SimpleOne по функциям
Разбиение системы SimpleOne по функциям

Клиентский сервер

Клиентский сервер отвечает за первичную коммуникацию пользователя с приложением. Этот сервер позволяет запустить приложение, загружая необходимый для работы код: CSS, JS, ReactJS, ConfigJS.

Сервер приложений

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

Сервер баз данных

Сервер БД обслуживает и управляет БД, отвечает за целостность и сохранность данных.

Сервер БД является «узким» местом производительности. Чтобы снизить нагрузку на него, в SimpleOne файлы хранятся на отдельном сервере.

Сервер файлового хранилища

Файлы хранятся в хранилище, доступном по протоколу S3.

Amazon Simple Storage Service (Amazon S3) — это сервис хранения объектов, предлагаемый поставщиками облачных услуг. Основное преимущество решения — возможность хранить файлы любого типа, любого объёма, с высоким уровнем надёжности и доступности.

При запросе файла сервер приложений обращается к файловому хранилищу, которое формирует токен и передаёт его браузеру. Через токен пользователь получает доступ к объекту в файловом хранилище.

В основном компании-разработчики не выносят объёмные файлы (видео, картинки и т. д) на отдельный сервер, а хранят их на сервере баз данных. Разнесение хранения данных и файлов по разным серверам даёт преимущества:

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

Заключение

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

Пользуясь настоящим сайтом, вы даете свое согласие на использование файлов cookies