################## Технологии проекта ################## PromUC интегрирован с рядом решений позволяющих значительно расширить задачи применения продукта. Автоматизированная экосистема с открытым программным обеспечением для организации гиперконвергентной инфраструктуры (отказоустойчивый общий пул вычислительных ресурсов, хранилища, виртуализации) , предназначенной для сбора, обработки, хранения данных телеметрии, включая инструментарий: Самодиагностики, Кибербезопасности, СУБД ( резидентная NoSQL, объектно-реляционная SQL), маршрутизации сообщений на основе стандарта AMQP и MQTT. Здесь перечисленны пакеты используемые для построения платформы в целом, продакшен версии и не учитываются средства разработки, отладки, тестирования и документирования. Так же здесь не учитываются клиентские расширения они представлены в специальном разделе. Kubernetes ~~~~~~~~~~ **Kubernetes** Открытое программное обеспечение для оркестровки контейнеризированных приложений — автоматизации их развёртывания, масштабирования и координации в условиях кластера. Поддерживает основные технологии контейнеризации, включая Docker. Основной язык программирования системы — Go. В середине 2014 года опубликованы исходные коды проекта. 21 июля 2015 года выпущена версия 1.0; после чего Google в партнёрстве с Linux Foundation организовал специальный фонд Cloud Native Computing Foundation (CNCF), которому корпорация передала Kubernetes в качестве начального технологического вклада. Считается, что к концу 2010-х годов Kubernetes стал стандартом де-факто для использования в облачных системах и сервисах по модели PaaS, предусматривающих контейнеризацию приложений, в частности, является основой контейнеризационных сервисов ряда крупнейших публично-облачных провайдеров — Amazon (AWS Elastic Container Service), Microsoft (Microsoft Azure Containers), Google (Google Cloud Platform Kubernetes Engine). Лицензия Apache License 2.0 Docker ~~~~~~ **Docker** Программное обеспечение для автоматизации развёртывания и управления приложениями в средах с поддержкой контейнеризации, контейнеризатор приложений. Позволяет «упаковать» приложение со всем его окружением[en] и зависимостями в контейнер, который может быть развёрнут на любой Linux-системе с поддержкой контрольных групп в ядре, а также предоставляет набор команд для управления этими контейнерами. аписан на языке Go. Разрабатывается и поддерживается одноимённой компанией-стартапом, распространяется в двух редакциях — общественной (Community Edition) по лицензии Apache 2.0 и для организаций (Enterprise Edition) по проприетарной лицензии. Nginx ~~~~~ **Nginx** Веб-сервер и прокси-сервер, работающий на Unix-подобных операционных системах Лицензия 2-пунктная лицензия BSD Apache HTTP Server ~~~~~~~~~~~~~~~~~~ **Apache** является кроссплатформенным сервер, поддерживает операционные системы Linux, BSD, Mac OS, Microsoft Windows, Novell NetWare, BeOS. Основными достоинствами Apache считаются надёжность и гибкость конфигурации. Он позволяет подключать внешние модули для предоставления данных, использовать СУБД для аутентификации пользователей, модифицировать сообщения об ошибках и т. д. Лицензия Apache License 2.0 pgAdmin ~~~~~~~ **pgAdmin** - это ведущий инструмент управления с открытым исходным кодом для PostgreSQL, самой передовой в мире базы данных с открытым исходным кодом. | **pgAdmin** предназначен для удовлетворения потребностей как начинающих, так и опытных пользователей **PostgreSQL**, предоставляя мощный графический интерфейс, который упрощает создание, обслуживание и использование объектов базы данных. | **pgAdmin** платформа написана на Python и jQuery и поддерживает все функции PostgreSQL Ссылка на оригинальную документацию: ``_ Gitea ~~~~~ **Gitea** — легковесная Open Source-система для управления Git-репозиториями. Это форк другой легковесной системы — Gogs. Она интересна возможностью сочетать в одном инстансе несколько организаций с довольно широким спектром настроек прав доступа и GitHub-подобным API. **Gitea** очень проста как в установке и настройке, так и в бэкапе. Систему можно запустить на любом относительно современном компьютере, и она сразу предложит некоторые встроенные сервисы: wiki-страницы, задачи и проекты, т.е. todo-листы. **Gitea** работает на любой операционной системе, которая может компилировать Go Windows, macOS, Linux, ARM и т. д. Ссылка на оригинальную документацию: ``_ Portainer ~~~~~~~~~ **Portainer** — это проект с открытым исходным кодом представляющий собой универсальную систему управления контейнерами. Он дает возможность создавать, настраивать и отслеживать контейнеры в средах Docker, Kubernetes, Swarm и Nomad. Панель управления **Portainer** имеет удобный UI для работы с Docker контейнерами прямо из браузера. Панель управления **Portainer** умеет работать как с локально установленным докером, так и с удалёнными серверами. Ссылка на оригинальную документацию: ``_ RabbitMQ ~~~~~~~~ **RabbitMQ** – это программный брокер сообщений на основе стандарта AMQP (с помощью дополнительного модуля может работать с MQTT) — тиражируемое связующее программное обеспечение, ориентированное на обработку сообщений. **RabbitMQ** принимает сообщения от поставщиков и отправляет им подтверждение о приеме, а затем перенаправляет сообщения подписчикам. Получатели подтверждают, что сообщение доставлено, либо сигнализируют о неудаче. Во втором случае сообщение остается в очереди, пока не будет доставлено. А после доставки оно удалится из системы. Основная функциональная особенность **RabbitMQ** — это гибкая маршрутизация сообщений между различными поставщиками и потребителями событий. Решение не ограничивается созданием простой очереди данных между двумя сторонами. В сервере реализована концепция принимающих события узлов (эксчейнджей) — они маршрутизируют данные в разные очереди сообщений **RabbitMQ**. Например, одно и то же сообщение должны получить три подписчика. Оно попадет на узел, который отправит три одинаковых сообщения в три очереди для всех подписчиков, которым оно должно быть доставлено. Ссылка на оригинальную документацию: ``_ Traefik ~~~~~~~ **Traefik Proxy**— это обратный прокси-сервер с открытым исходным кодом, обеспечивающий простую работу с микросервисами и/или просто контейнерами с вашими приложениями. Обратный прокси-сервер (reverse proxy, реверс-прокси) служит для ретрансляции запросов из внешней сети к каким-либо серверам/сервисам внутренней сети (например веб-сервера, БД или файловые хранилища) и позволяет: - обеспечить сокрытие структуры внутренней сети и подробностей о находящейся в ней сервисах; - осуществлять балансировку нагрузки (load balancing) между экземплярами одного и того же сервиса или серверами с одинаковыми задачами; - обеспечить зашифрованное (HTTPS) соединение между клиентом и любым сервисом, в таком случае SSL сессия создается между клиентом и прокси, а между прокси и сервисом во внутренней сети устанавливается незашифрованное HTTP соединение, если сервис поддерживает HTTPS то можно организовать зашифрованное соединение и во внутренней сети; - организовать контроль доступа к сервисам (аутентификацию клиента), а также установить файрвол (брандмауэр). Одним из основных достоинств Traefik Proxy является возможность изменения его конфигурации без приостановки работы (“на лету”) при применении любого из поддерживаемых бэкэндов, называемых провайдерами. Например Docker и Kubernetes. Ссылка на оригинальную документацию: ``_ Redis ~~~~~ **Redis** – Быстрое хранилище данных в памяти с открытым исходным кодом для использования в качестве базы данных, кэша, брокера сообщений или очереди. **Redis** обеспечивает время отклика на уровне долей миллисекунды и позволяет приложениям, работающим в режиме реального времени, выполнять миллионы запросов в секунду. Такие приложения востребованы в сферах игр, рекламных технологий, финансовых сервисов, здравоохранения и **IoT**. Благодаря быстрой производительности **Redis** широко применяется для кэширования, управления сеансами, разработки игр, создания таблиц лидеров, аналитики в режиме реального времени, работы с геопространственными данными, чатов и сервисов обмена сообщениями, потоковой передачи мультимедиа и приложений с отправкой сообщений по модели «издатель – подписчик» (Pub/Sub). Ссылка на оригинальную документацию: ``_ Fluent Bit ~~~~~~~~~~ **Fluent Bit** - Это процессор и переадресатор журналов с открытым исходным кодом, который позволяет собирать любые данные, такие как метрики и журналы из разных источников, фильтровать их согласно заданным правилам и отправлять в несколько пунктов назначения. Это предпочтительный выбор для контейнерных сред, таких как Kubernetes. В качестве основных преимуществ **Fluent Bit** можно выделить следующие: - **Сверхнизкие требования к системным ресурсам.** Для нормальной работы Fluent Bit достаточно 650 Кб оперативной памяти, что дает возможность запускать его на встраиваемых (Embedded ) Linux системах. Скорость обработки при этом достигает 13 000 событий в секунду. - **Использование унифицированного формата логгирования.** Данные, полученные из разных источников, Fluent Bit переводит в формат JSON. Это помогает решить проблему сбора логов из различных систем и открывает широкие возможности для интеграции с другими программными решениями. - **Удобная архитектура.** Архитектура Fluent Bit позволяет расширять имеющийся набор функций с помощью дополнительных плагинов которых на сегодняшний день около 70. С помощью плагинов можно подключать новые источники данных и выводить данные в различных форматах. - **Возможность интеграции с различными языками программирования.** Fluentd может принимать логи из приложений на Python, Ruby, PHP, Perl, Node.JS, Java, Scala. В числе пользователей **Fluent Bit** — такие известные компании как Cisco, Microsoft, Google Cloud, Amazon и другие. Ссылка на оригинальную документацию: ``_ PostgreSQL ~~~~~~~~~~ **PostgreSQL** — свободная объектно-реляционная система управления базами данных, основанная на языке SQL. **PostgreSQL** отличается высокой надёжностью и хорошей производительностью. **PostgreSQL** поддерживает транзакции (ACID), репликация реализована встроенными механизмами. При этом система расширяемая — можно создавать свои типы данных и индексов, а также расширять поведение при помощи языков программирования. Преимущества PostgreSQL: - поддержка БД неограниченного размера; - Нет ограничений на максимальный размер базы данных - Нет ограничений на количество записей в таблице - Нет ограничений на количество индексов в таблице - мощные и надёжные механизмы транзакций и репликации; - расширяемая система встроенных языков программирования и поддержка загрузки C-совместимых модулей; - наследование; - легкая расширяемость. Ссылка на оригинальную документацию: ``_ TimescaleDB ~~~~~~~~~~~ **TimescaleDB** это база данных временных рядов с открытым исходным кодом, разработанная Timescale Inc. Она написана на C и расширяет возможности PostgreSQL. TimescaleDB поддерживает стандартные запросы SQL и является реляционной базой данных. Ссылка на оригинальную документацию: ``_