При выборе платформы для корпоративной системы у крупных компаний есть как минимум один общий критерий — производительность. Если система может выдержать максимум 5000 одновременных пользовательских сессий, а у компании их 20 000, то вряд ли такой программный продукт подойдёт. В этом случае начинает играть роль масштабируемость системы.
Масштабируемость — возможность системы увеличивать свою производительность при увеличении количества выделяемых ей ресурсов.
Виды масштабирования
Существует два вида масштабирования: вертикальное и горизонтальное.
- Вертикальное масштабирование — увеличение производительности приложения при добавлении ресурсов в рамках имеющегося оборудования. Например, увеличение оперативной памяти или замена процессора на более мощный. В этом случае масштабируемость ограничена, очень легко достигнуть потолка.
- Горизонтальное масштабирование — увеличение производительности приложения за счёт распределения нагрузки между имеющимся и новым оборудованием. До тех пор, пока есть возможность увеличивать количество серверов, есть возможность увеличивать производительность и обеспечивать комфортную работу большего количества пользователей.
Для того чтобы приложение могло поддержать горизонтальное масштабирование, код приложения должен поддерживать механизм взаимодействия и синхронизации серверов между собой. Мы предусмотрели возможности для горизонтального масштабирования, поэтому платформа SimpleOne может использоваться для реализации проекта практически любого уровня нагруженности.
Горизонтальное масштабирование серверов осуществляется на двух уровнях:
- Разбиение системы на более мелкие структурные компоненты по функциям и разнесение их по отдельным серверам.
- Масштабирование в рамках функции:
- увеличение количества серверов, параллельно выполняющих одну и ту же функцию;
- использование современных технологий. Например, при масштабировании сервера баз данных (БД) используется репликация, партицирование и шардирование.
В этой статье мы расскажем про то, как в SimpleOne осуществляется горизонтальное масштабирование на первом уровне, — про разнесение серверов.
Разнесение серверов
Система SimpleOne разделена по функциям на четыре группы: клиентский сервер, сервер приложений, сервер БД и сервер файлового хранилища.
Клиентский сервер
Клиентский сервер отвечает за первичную коммуникацию пользователя с приложением. Этот сервер позволяет запустить приложение, загружая необходимый для работы код: CSS, JS, ReactJS, ConfigJS.
Сервер приложений
После первичного взаимодействия с клиентским сервером все запросы пользователя идут на сервер приложений. Например, пользователь хочет получить лист или список кнопок. Сервер приложений обрабатывает запрос, запрашивает данные и направляет их пользователю.
Сервер баз данных
Сервер БД обслуживает и управляет БД, отвечает за целостность и сохранность данных.
Сервер БД является «узким» местом производительности. Чтобы снизить нагрузку на него, в SimpleOne файлы хранятся на отдельном сервере.
Сервер файлового хранилища
Файлы хранятся в хранилище, доступном по протоколу S3.
Amazon Simple Storage Service (Amazon S3) — это сервис хранения объектов, предлагаемый поставщиками облачных услуг. Основное преимущество решения — возможность хранить файлы любого типа, любого объёма, с высоким уровнем надёжности и доступности.
При запросе файла сервер приложений обращается к файловому хранилищу, которое формирует токен и передаёт его браузеру. Через токен пользователь получает доступ к объекту в файловом хранилище.
В основном компании-разработчики не выносят объёмные файлы (видео, картинки и т. д) на отдельный сервер, а хранят их на сервере баз данных. Разнесение хранения данных и файлов по разным серверам даёт преимущества:
- Снижение нагрузки на сервер баз данных.
- Файловое хранилище позволяет работать с файлами даже при масштабировании сервера приложений. За счёт использования токенов загрузка файлов на клиенте не приводит к существенному росту нагрузки на сервер приложений.
Заключение
Масштабируемость системы играет важную роль для крупных компаний. Горизонтальное масштабирование даёт практически бесконечные возможности для увеличения производительности ESM-платформы SimpleOne, что делает её подходящей для реализации высоконагруженных проектов любого уровня.