﻿# Архитектура

> [HTML Version](architecture.html)

Система ELMA365 является микросервисным решением, построенным на базе следующих технологий: Golang, NodeJS, Angular. Используемые СУБД: PostgreSQL, MongoDB. В качестве шины обмена событий и данных используется RabbitMQ. Для кеширования данных быстрого доступа используется Valkey или Redis. Используется контейнеризация на базе Docker, а также оркестратор Kubernetes. Для хранения файлов используется объектное хранилище данных на базе S3 протокола.

Кластер ELMA365 может быть развёрнут на серверных мощностях клиента и быть доступен как в Internet, так и в Intranet. 

Внешняя безопасность обеспечивается механизмом аутентификации пользователя системы токеном JWT и гибкой настройкой системы привилегий внутри системы. Внутренняя безопасность обеспечивается стандартными средствами безопасности используемых баз данных. Пароли и токены доступа хранятся в защищённом хранилище секретов Kubernetes.

Серверы PostgreSQL, MongoDB, RabbitMQ, Valkey или Redis и S3 включены в поставку инсталлятора ELMA365 On-Premises и могут быть установлены на одном физическом сервере клиента для ознакомления и тестирования продукта.

В редакции Enterprise предполагается несколько вариантов установки этих серверов:

- для тестирования и разработки можно установить вспомогательные компоненты на одном физическом сервере клиента;

- в продуктивной среде предполагается один из следующих вариантов:

	- конфигурация, когда PostgreSQL, MongoDB и S3 устанавливаются на отдельных серверах;

	- отказоустойчивая локальная архитектура для обеспечения повышенной надёжности компонентов хранения данных. Все работы по настройке отказоустойчивости этих сервисов остаются на стороне клиента.

Подробнее читайте в статье [«Подготовка инфраструктуры ELMA365 On-Premises»](infrastructure-preparation.md).

(illustration_2.png)