Internal Cloud - это web-интерфейс, используемый для автоматизированной конфигурации кластеров серверов и виртуальных машин, расположенных в сети. Автоматизация базируется на использовании программируемых шаблонов, иерархической структуры, включающей в себя хосты, местоположения, сценарии, профили, фасеты и переменные.

Давыдов Алексей Викторович Компания "Российское программное обеспечение"
Итак, вернулся из поездок (Dusseldorf: LinuxCon / CloudCon / LinuxPlumbers, а потом Нижний) и дошли руки до CME. По результатам общения на конференциях скажу одно - аналогов нет, а штука получается крайне нужная :)

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

Суть системы Internal Cloud состоит в централизованном управлении по сети группой серверов и установкой на них необходимого программного обеспечения. В рамках проектирования системы к этой идее были также добавлены:

  • шаблоны установки и запуска программного обеспечения, включая их собственную иерархию
  • иерархия контейнеров для хранения данных
  • объектно-ориентированные свойства контейнеров
  • роли пользователей и разделение прав доступа к иерархии
Алексей Шеймаер разработчик клиентской части
Эту систему сложно создавать, но очень просто использовать. Она действительно эффективная.

Как и любая крупная информационная система, архитектурно Internal Cloud состоит из множества связанных между собой модулей, разработанных с использованием различных технологий. Одним из важнейших компонентов несомненно является web-интерфейс, так как именно через него осуществляется управление всей остальной системой, и именно от его качества зависит “look-and-feel” всего продукта. Наша команда разработчиков целиком взяла на себя задачу по разработке frontend-части этого компонента и приложила максимум усилий, чтобы конечные пользователи получали исключительно положительные эмоции от взаимодействия с приложением.

С технической стороны клиентская часть проекта представляет собой RIA, которое построено как SPA на основе frontend-фреймворка Backbone. В проекте широко используется кастомизированная версия компонента Backgrid в связке с “Axeta Table Extension” для рендеринга интерактивных таблиц, а также библиотека D3 для построения графовых структур.

Уникальные технологии

1. Удобные таблицы с сортировкой и фильтрацией данных

Не секрет, что таблицы являются одним из наиболее простых и удобных средств для представления информации. Internal Cloud оперирует большими объемами данных, в связи с чем таблицы являются неотъемлемым инструментом в системе. Но наша команда разработчиков пошла дальше и создала компонент “Axeta Table Extension”, который полностью изменяет представление о таблицах. Таблицы, созданные с использованием этого компонента, не только структурируют и представляют информацию, но и позволяют динамически управлять большими объемами данных прямо внутри таблицы.

2. Управление с клавиатуры

Абсолютное большинство технических специалистов настолько привыкли к работе в консоли, что систематически предпочитают использовать исключительно возможности клавиатуры при взаимодействии с рабочими инструментами. И это неудивительно, ведь такой способ ввода информации позволяет выполнять необходимые задачи значительно быстрее, нежели оперируя мышью. Наши разработчики учли данную специфику и интегрировали в Internal Cloud собственный модуль “Axeta HotKey”, который позволил покрыть весь основной функционал клавиатурными клавишами и их сочетаниями.

Давыдов Алексей Викторович Компания "Российское программное обеспечение"
По удобству работы получается практически desktop application.

3. Безлимитные модальные окна

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

4. Наслоение графовых представлений иерархических структур объектов системы на D3 Engine

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

Архитектура

Backend: Java / Spring / Hibernate

Frontend: Backbone / Underscore / Require / jQuery / D3 / SASS / Grunt

Архитектура: REST API / Autotests