РаÑÑмотренные ранее проекты имеют одну важную общую черту: они ÑоздаютÑÑ Ð² оÑновном длÑ
Ñ€ÐµÑˆÐµÐ½Ð¸Ñ Ð½Ð°ÑƒÑ‡Ð½Ñ‹Ñ… и
иÑÑледовательÑких задач. С Ñтой точки Ð·Ñ€ÐµÐ½Ð¸Ñ Ð¼Ð¾Ð¶Ð½Ð¾ Ñказать, что проект InsightProject
предÑтавлÑет из ÑебÑ
решение Ñ Ð½Ð°Ð¼Ð½Ð¾Ð³Ð¾ более выраженным прикладным назначением. Его оÑÐ½Ð¾Ð²Ð½Ð°Ñ Ð¸Ð´ÐµÑ ÑоÑтоит в
обобщении идей и
опыта членов нашей лаборатории, ÑвÑзанных Ñ Ñ€Ð°Ð±Ð¾Ñ‚Ð¾Ð¹ в различных IT-компаниÑÑ… на
протÑжении длительного времени.
Итак, что же такое InsightProject?
Как и большинÑтво наших проектов — Ñто облачный ÑервиÑ, который мы развернули и
поддерживаем в нашей
лаборатории на нашем ÑобÑтвенном оборудовании. ОÑÐ½Ð¾Ð²Ð½Ð°Ñ Ð·Ð°Ð´Ð°Ñ‡Ð° Ñтого ÑервиÑа - дать
людÑм, работающим
в облаÑти разработки программного обеÑпечениÑ, возможноÑть провеÑти глубокий анализ
того, как же работают
их проекты, и какие взаимоÑвÑзи еÑть как между их техничеÑкими, так и организационными
ÑоÑтавлÑющими.
Как же Ñто работает?
Ð’ оÑнову ÑиÑтемы положен реальный инженерный и управленчеÑкий опыт, накопленный за времÑ
работы над
различными проектами в разных предметных облаÑÑ‚ÑÑ…, разрабатывавшимиÑÑ Ð² ÑоответÑтвии Ñ
разными моделÑми
процеÑÑов и Ñ Ð¸Ñпользованием широкого Ñпектра технологий. Ðтот опыт прошёл процедуру
глубокого анализа
и обобщениÑ, что позволило Ð´Ð»Ñ Ð¼Ð½Ð¾Ð³Ð¸Ñ… Ñлементов и артефактов процеÑÑов разработки ПО
выделить общие и
наиболее важные и полезные ÑоÑтавлÑющие.
Сбор и обобщение данных
Ð’ÑÑ‘ началоÑÑŒ Ñ Ñ€Ð°Ð·Ñ€Ð°Ð±Ð¾Ñ‚ÐºÐ¸ универÑального механизма, который позволил бы получать данные
из широкого
Ñпектра ÑиÑтем, применÑемых при разработке ПО — например, таких как ÑиÑтемы
управлениÑ
задачами
(Jira, Mantis, …), репозитории Ñ Ð¸Ñходным кодом (Git, Mercurial, Subversion), ÑиÑтемы
непрерывной
интеграции (Jenkins, GitLab, Travis CI), инÑтрументы Ð´Ð»Ñ ÑтатичеÑкого анализа кода
(SonarQube).
Приведённый ÑпиÑок далеко не полный и поÑтоÑнно раÑширÑетÑÑ, когда к нам обращаютÑÑ
предÑтавители проектов,
которые иÑпользуют Ð´Ð»Ñ Ñвоей работы другие инÑтрументы, и хотÑÑ‚ провеÑти анализ Ñвоей
работы, иÑпользуÑ
платформу InsightProject.
Ðа Ñтом Ñтапе главной ÑложноÑтью Ð´Ð»Ñ Ð½Ð°ÑˆÐµÐ¹ команды Ñтало то, что вÑе ÑиÑтемы —
даже
отноÑÑщиеÑÑ
к одному клаÑÑу — имеют различные наборы полей и ÑвойÑтв у объектов (например, у
задач
или Ñборок),
которые они предоÑтавлÑÑŽÑ‚. Ð’ ÑвÑзи Ñ Ñтим нам пришлоÑÑŒ провеÑти ÑиÑтематизацию и
обобщение
доÑтупных данных: Ñто делалоÑÑŒ, чтобы оÑтавить значительную чаÑть Ñтого Ñ€Ð°Ð·Ð½Ð¾Ð¾Ð±Ñ€Ð°Ð·Ð¸Ñ Ð·Ð°
пределами
нашей ÑиÑтемы, Ñ Ð¾Ð´Ð½Ð¾Ð¹ Ñтороны, а Ñ Ð´Ñ€ÑƒÐ³Ð¾Ð¹ — разработать такую Ñтруктуру
внутренних
данных,
ÐºÐ¾Ñ‚Ð¾Ñ€Ð°Ñ Ð¿Ð¾Ð·Ð²Ð¾Ð»Ð¸Ð»Ð° бы Ñохранить в нашей базе макÑимум полезной информации, которую мы
можем
получить извне Ð´Ð»Ñ Ð¿Ð¾Ñледующего анализа. Как результат, мы можем получать данные из
широкого Ñпектра
иÑточников и применÑть к ним одни и те же аналитичеÑкие методы и ÑредÑтва. Ð’ общем
Ñлучае можно говорить
о том, что на Ñтом уровне была реализована ÑÑ‚Ñ€Ð°Ñ‚ÐµÐ³Ð¸Ñ ETL Ð´Ð»Ñ Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¸Ñ Ð´Ð°Ð½Ð½Ñ‹Ñ….
ДоÑтоинÑтвом такого
подхода ÑвлÑетÑÑ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾Ñть переноÑа различных аналитичеÑких конфигураций между
проектами вне завиÑимоÑти
от того, какие инÑтрументы они иÑпользуют Ð´Ð»Ñ Ñвоей работы.
Хранение данных
ПоÑле того, как была решена задача Ñ Ñ‚ÐµÐ¼, как и что можно Ñобирать и обрабатывать,
важным вопроÑом
Ñтал выбор хранилища Ð´Ð»Ñ Ð¿Ð¾Ð»ÑƒÑ‡Ð°ÐµÐ¼Ñ‹Ñ… данных. Ð’ наÑтоÑщее Ð²Ñ€ÐµÐ¼Ñ ÑущеÑтвует широкий выбор
хранилищ
данных, и — Ð¿Ñ€Ð¾Ð²ÐµÐ´Ñ ÑоответÑтвующее иÑÑледование — в качеÑтве Ñдра ÑиÑтемы
хранениÑ
информации
в ÑиÑтеме InsightProject нами было выбрано отечеÑтвенное решение
Tarantool.
Такой выбор был Ñделан по Ñ€Ñду причин, Ð²ÐºÐ»ÑŽÑ‡Ð°Ñ Ð±Ð¾Ð³Ð°Ñ‚Ñ‹Ðµ возможноÑти по размещению
аналитичеÑких методов Ñ€Ñдом Ñ Ð´Ð°Ð½Ð½Ñ‹Ð¼Ð¸,
гибкоÑть NoSQL-хранилища и выÑÐ¾ÐºÐ°Ñ Ð¿Ñ€Ð¾Ð¸Ð·Ð²Ð¾Ð´Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð¾Ñть Ñтого Ñ€ÐµÑˆÐµÐ½Ð¸Ñ Ð½Ð° при работе Ñ
большими объёмами данных.
Пользователи и пользовательÑкий интерфейÑ
Следующим уровнем в логичеÑкой иерархии нашего Ñ€ÐµÑˆÐµÐ½Ð¸Ñ Ñтала разрабатываемаÑ
аналитичеÑÐºÐ°Ñ Ð¿Ð»Ð°Ñ‚Ñ„Ð¾Ñ€Ð¼Ð°.
Когда вÑе данные Ñобраны вмеÑте, нормализованы и упакованы в выÑокоÑффективное
хранилище, необходимо
заÑтавить их приноÑить пользу реальным конечным пользователÑм — а пользователÑми в
контекÑте нашего
проекта ÑвлÑÑŽÑ‚ÑÑ Ð²Ñе учаÑтники процеÑÑа разработки ПО.
- Инженеры — те, кто непоÑредÑтвенно занимаетÑÑ Ñ€Ð°Ð·Ñ€Ð°Ð±Ð¾Ñ‚ÐºÐ¾Ð¹. Ðаша
платформа
может
Ñледить за обновлением иÑходного кода и вики-Ñтраниц, чтобы напоминать
поддерживать
их в актуальном ÑоÑтоÑнии. Также она может предупреждать, что кто-то на другой
ветке
вноÑит Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð² тот же код и что Ñто может привеÑти к конфликтам, или что при
внеÑении
изменений в какой-то учаÑток кода в Ñлучае других задач были ещё Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð²
других
облаÑÑ‚ÑÑ…, и Ñтоит на Ñто обратить внимание.
- Менеджеры — получают широкий Ñпектр возможноÑтей, чтобы видеть,
где и
как проходÑÑ‚
те или иные изменениÑ, какие задачи привели к каким маÑштабам изменений в
проекте.
- СпециалиÑты по качеÑтву могут отÑлеживать, как ÑвÑзаны те или иные ошибки
в работе
продуктов Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñми в различных учаÑтках кода, чтобы заранее знать, на
теÑтирование
какой функциональноÑти Ñтоит обратить оÑобое внимание при проверке новых
изменений.
Ð”Ð»Ñ Ñ‚Ð¾Ð³Ð¾, чтобы Ñкрыть вÑÑŽ ÑложноÑть внутренней организации нашего Ñ€ÐµÑˆÐµÐ½Ð¸Ñ Ð¸
предоÑтавить
пользователÑм возможноÑть лёгкой и комфортной работы Ñ ÑиÑтемой, вершиной архитектурного
айÑберга,
видимой конечным пользователÑм, ÑвлÑетÑÑ
Web-приложение, которое позволÑет как
оÑущеÑтвить наÑтройку
ÑиÑтемы Ð´Ð»Ñ ÐºÐ¾Ð½ÐºÑ€ÐµÑ‚Ð½Ð¾Ð³Ð¾ окружениÑ, так и получить доÑтуп ко вÑем Ñобранным данным и
аналитичеÑким инÑтрументам,
ÑпрÑтанным глубоко внутри.
Работа продолжаетÑÑ
ÐеÑÐ¼Ð¾Ñ‚Ñ€Ñ Ð½Ð° то, что проект разрабатываетÑÑ Ð½Ð° протÑжении неÑкольких лет, в нём еÑть ещё
очень большое
количеÑтво нерешённых задач, которые ждут тех, кто захочет приÑоединитьÑÑ Ðº разработке.
Ðти задачи лежат
как в плоÑкоÑти Ñбора и обработки данных из различных иÑточников, так и в облаÑти
оптимизации и улучшениÑ
нашего оÑновного хранилища. Много задач еÑть в облаÑти разработки и адаптации
аналитичеÑких инÑтрументов.
Ð”Ð»Ñ Ñ‚ÐµÑ…, кто хочет делать Ñложное и маÑштабное понÑтным, краÑивым и функциональным
—
еÑть обширное поле
деÑтельноÑти в домене web-разработки.
Ð’ проекте InsightProject, как и в других проектах лаборатории, вÑегда еÑть интереÑные
задачи, так что
еÑли кому-то тематика Ñтого и/или других проектов будет близкой и интереÑной —
наша
Ð»Ð°Ð±Ð¾Ñ€Ð°Ñ‚Ð¾Ñ€Ð¸Ñ Ð²Ñегда
будет рада пообщатьÑÑ Ð¸ приглаÑить в нашу команду.
Официальный
Ñайт
проекта