Архитектура платформы

Материалы к уроку
Платформа Tantor — это высокофункциональное программное обеспечение с интуитивно понятным графическим интерфейсом, спроектированное для эффективного управления кластерами PostgreSQL. С её помощью, вы не только сможете администрировать кластер Tantor, но и управлять любой другой СУБД основанной на базе PostgreSQL.

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

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

Схема архитектуры Платформы

Основу Платформы составляет клиент-серверная архитектура. Клиентская часть представляет собой веб-интерфейс, который позволяет администраторам управлять базами данных в браузере, аналогично зарубежным продуктам.
Рассмотрим продукт подробнее, а именно его основные архитектурные компоненты, взаимосвязи и принципы работы.
Платформа состоит из нескольких модулей: серверная часть написана на языке Golang, серверный модуль рекомендаций конфигурации СУБД разработан на Python, а фронтенд на — JS (Angular).
Ядром продукта является СУБД, основанная на PostgreSQL, которая была дополнена специальными расширениями для обработки «на лету» большого количества метрик из наблюдаемой СУБД.
Сбор информации с администрируемой базы данных осуществляется через Агент.
Это легковесное приложение, разработанное также на языке Golang, которое наблюдает не только за базой данных, но и за операционной системой в целом.
Также, плюсом агента является его возможность отправлять только изменившиеся данные на основе срезов и пред-агрегация данных, с целью снижения объема сетевого трафика и нагрузки на серверную часть Платформы Тантор.
Связь между агентами, backend- и keeper-серверами осуществляется с помощью брокера сообщений NATS (по протоколу HTTPS), который обеспечивает асинхронный обмен сообщениями и доставку данных в БД.

Как видно на схеме, данные поступают от агентов к NATS. Keeper сохраняет полученные данные и размещает их в OperDB.
Существует также, обратная связь от компонента Backend к агентам, которая реализована таким образом, чтобы агенту не требовалось открывать порты для входящих соединений.
Агент сам приходит и забирает все поступившие команды из NATS, что повышает безопасность системы.

Масштабирование базы данных Платформы

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

Такая архитектура позволяет решать множество практических задач и масштабировать Платформу для любой нагрузки. Платформа предоставляет обширный функционал для администрирования подключенных экземпляров СУБД и позволяет распределить их по рабочим пространствам, созданным пользователями системы, которые могут быть определены локально или во внешнем LDAP репозитории. В каждом пространстве будут находиться серверы всех подключенных СУБД. При входе внутрь сервера пользователь увидит панель инструментов с основными метриками, отображаемыми в режиме реального времени в удобной визуальной форме, а также все предупреждения о возможных неисправностях.

Web-интерфейс позволяет настроить конфигурацию PostgreSQL, с использованием рекомендаций. Эта функциональность реализована с помощью модуля конфигурации, который рекомендует пользователю правильные параметры, основанные на данных, собранных с сервера БД. Применение параметров, не требующих перезагрузки сервера, также осуществляется через веб-интерфейс: запрос поступает в Backend и направляется соответствующему агенту, который выполнит команду и вернет результат.
Следует отметить, что выполнение любых команд агента учитывает нагрузку на сервер, то есть умный агент подождет перед выполнением операции, если СУБД перегружена.