Варианты архитектуры проекта

Урок 2 из 6

20 мин

Варианты архитектуры проекта

10 мин

«1С-Битрикс: Управление сайтом» и Битрикс24 способны работать в любом окружении, где выполняются минимальные системные требования.

Для крупных проектов обычно рекомендуем использовать физические или виртуальные сервера. При этом при использовании виртуальных серверов под БД важно обеспечить быстродействие дисковой подсистемы.

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

Далее рассмотрим основные варианты архитектуры серверной инфраструктуры, их плюсы и минусы.

Полные ноды

Самый простой вариант архитектуры кластера с минимальными требованиями к количеству оборудования. Идеально подходит для обеспечения базовой отказоустойчивости или страховки от пиковых нагрузок.

картинка

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

Плюсы:

  • нужно минимум 2 сервера;
  • максимальное использование (утилизация) возможностей серверов;
  • простота и понятность.

Минусы:

  • низкая скорость добавления новых серверов в кластер;
  • низкая гибкость распределения нагрузки.

Рекомендации к применению полных нод

Обеспечение отказоустойчивости и обработка высокой нагрузки с минимальными ресурсами.

Раздельные ноды

Данный вариант архитектуры позволяет гибко масштабировать кластер, также обладает высокой скоростью масштабирования. Ниже также приведена схема данной архитектуры, указаны основные моменты, из этой схемы еще отдельно могут быть вынесены сервера M-cash, Redis и т.д.

картинка

Добавление одной ноды становится равно добавлению конкретной роли: не хватает базы — добавили ноду с базой, не хватает кэша — добавили ноду с сервером кэширования и т.д.

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

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

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

Плюсы:

  • гибкость и простота масштабирования;
  • быстрота добавления ресурсов.

Минусы:

  • необходимо минимум 4 сервера;
  • меньшая степень утилизации ресурсов сервера;
  • большая сложность системы в целом.

Рекомендации к применению раздельных нод

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

Гео-кластер

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

Такой подход позволяет поддерживать работу проекта даже при полном падении одного из ДЦ.

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

Гибридные архитектуры

При развитии кластера для решения новых задач могут возникать различные сочетания архитектур. Распространенный вариант — дополнение архитектуры "полных нод" дополнительными slave-серверами или серверами memcached, sphinx и остальными, и она постепенно превращается в гибридную.