site_logo

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

Highload

Обновлено: 27 сентября 2024

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    Заключение

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