Рассмотренные ранее проекты имеют одну важную общую черту: они создаются в основном для
решения научных и
исследовательских задач. С этой точки зрения можно сказать, что проект InsightProject
представляет из себя
решение с намного более выраженным прикладным назначением. Его основная идея состоит в
обобщении идей и
опыта членов нашей лаборатории, связанных с работой в различных IT-компаниях на
протяжении длительного времени.
Итак, что же такое InsightProject?
Как и большинство наших проектов — это облачный сервис, который мы развернули и
поддерживаем в нашей
лаборатории на нашем собственном оборудовании. Основная задача этого сервиса - дать
людям, работающим
в области разработки программного обеспечения, возможность провести глубокий анализ
того, как же работают
их проекты, и какие взаимосвязи есть как между их техническими, так и организационными
составляющими.
Как же это работает?
В основу системы положен реальный инженерный и управленческий опыт, накопленный за время
работы над
различными проектами в разных предметных областях, разрабатывавшимися в соответствии с
разными моделями
процессов и с использованием широкого спектра технологий. Этот опыт прошёл процедуру
глубокого анализа
и обобщения, что позволило для многих элементов и артефактов процессов разработки ПО
выделить общие и
наиболее важные и полезные составляющие.
Сбор и обобщение данных
Всё началось с разработки универсального механизма, который позволил бы получать данные
из широкого
спектра систем, применяемых при разработке ПО — например, таких как системы
управления
задачами
(Jira, Mantis, …), репозитории с исходным кодом (Git, Mercurial, Subversion), системы
непрерывной
интеграции (Jenkins, GitLab, Travis CI), инструменты для статического анализа кода
(SonarQube).
Приведённый список далеко не полный и постоянно расширяется, когда к нам обращаются
представители проектов,
которые используют для своей работы другие инструменты, и хотят провести анализ своей
работы, используя
платформу InsightProject.
На этом этапе главной сложностью для нашей команды стало то, что все системы —
даже
относящиеся
к одному классу — имеют различные наборы полей и свойств у объектов (например, у
задач
или сборок),
которые они предоставляют. В связи с этим нам пришлось провести систематизацию и
обобщение
доступных данных: это делалось, чтобы оставить значительную часть этого разнообразия за
пределами
нашей системы, с одной стороны, а с другой — разработать такую структуру
внутренних
данных,
которая позволила бы сохранить в нашей базе максимум полезной информации, которую мы
можем
получить извне для последующего анализа. Как результат, мы можем получать данные из
широкого спектра
источников и применять к ним одни и те же аналитические методы и средства. В общем
случае можно говорить
о том, что на этом уровне была реализована стратегия ETL для получения данных.
Достоинством такого
подхода является возможность переноса различных аналитических конфигураций между
проектами вне зависимости
от того, какие инструменты они используют для своей работы.
Хранение данных
После того, как была решена задача с тем, как и что можно собирать и обрабатывать,
важным вопросом
стал выбор хранилища для получаемых данных. В настоящее время существует широкий выбор
хранилищ
данных, и — проведя соответствующее исследование — в качестве ядра системы
хранения
информации
в системе InsightProject нами было выбрано отечественное решение
Tarantool.
Такой выбор был сделан по ряду причин, включая богатые возможности по размещению
аналитических методов рядом с данными,
гибкость NoSQL-хранилища и высокая производительность этого решения на при работе с
большими объёмами данных.
Пользователи и пользовательский интерфейс
Следующим уровнем в логической иерархии нашего решения стала разрабатываемая
аналитическая платформа.
Когда все данные собраны вместе, нормализованы и упакованы в высокоэффективное
хранилище, необходимо
заставить их приносить пользу реальным конечным пользователям — а пользователями в
контексте нашего
проекта являются все участники процесса разработки ПО.
- Инженеры — те, кто непосредственно занимается разработкой. Наша
платформа
может
следить за обновлением исходного кода и вики-страниц, чтобы напоминать
поддерживать
их в актуальном состоянии. Также она может предупреждать, что кто-то на другой
ветке
вносит изменения в тот же код и что это может привести к конфликтам, или что при
внесении
изменений в какой-то участок кода в случае других задач были ещё изменения в
других
областях, и стоит на это обратить внимание.
- Менеджеры — получают широкий спектр возможностей, чтобы видеть,
где и
как проходят
те или иные изменения, какие задачи привели к каким масштабам изменений в
проекте.
- Специалисты по качеству могут отслеживать, как связаны те или иные ошибки
в работе
продуктов с изменениями в различных участках кода, чтобы заранее знать, на
тестирование
какой функциональности стоит обратить особое внимание при проверке новых
изменений.
Для того, чтобы скрыть всю сложность внутренней организации нашего решения и
предоставить
пользователям возможность лёгкой и комфортной работы с системой, вершиной архитектурного
айсберга,
видимой конечным пользователям, является
Web-приложение, которое позволяет как
осуществить настройку
системы для конкретного окружения, так и получить доступ ко всем собранным данным и
аналитическим инструментам,
спрятанным глубоко внутри.
Работа продолжается
Несмотря на то, что проект разрабатывается на протяжении нескольких лет, в нём есть ещё
очень большое
количество нерешённых задач, которые ждут тех, кто захочет присоединиться к разработке.
Эти задачи лежат
как в плоскости сбора и обработки данных из различных источников, так и в области
оптимизации и улучшения
нашего основного хранилища. Много задач есть в области разработки и адаптации
аналитических инструментов.
Для тех, кто хочет делать сложное и масштабное понятным, красивым и функциональным
—
есть обширное поле
деятельности в домене web-разработки.
В проекте InsightProject, как и в других проектах лаборатории, всегда есть интересные
задачи, так что
если кому-то тематика этого и/или других проектов будет близкой и интересной —
наша
лаборатория всегда
будет рада пообщаться и пригласить в нашу команду.
Официальный
сайт
проекта