Одним из наших приоритетных направлений является работа с серьезными проектами, состоящими из потока крупных задач.
Чтобы совершенно не утонуть в скоплении работ разного приоритета в серьезных проектах всегда используют системы управления задачами. Это нужно как для самого процесса разработки, так и для дальнейшего анализа проблем.
Рынок инструментов управления проектами и задачами предлагает обширный функционал и поддержку популярных методологий разработки. У каждой компании свой способ считать время сотрудников.
Некоторым по душе Trello, а другие хотят «швейцарский нож» в управлении проектами по типу Jira. Последняя — самая популярная система управления проектами, которую используют более 65 тысяч компаний. Однако такое решение сильно «кусается» в цене - в среднем 25 тыс. рублей в месяц за 50 пользователей. Для сравнения облачная версия YouTrack для того же количества пользователей будет обходиться в 15 тыс. рублей в месяц, а Планфикс в 9 тыс. рублей. Вести учет времени и управлять проектами можно и бесплатно в Битрикс24 (до 12-ти пользователей), или в Google-таблицах.
Обычно у заказчика и подрядчика разные системы и разный способ считать время. Каждый из них желает видеть потраченное время на выполнение задач у себя.
Как правило, над проектом работают от одного до пяти исполнителей (аналитиков, дизайнеров, верстальщиков, разработчиков, тестировщиков) одновременно, выполняющих по несколько задач в день. Это сотни человеко-часов. Можно, связать системы управления задачами заказчика и подрядчика посредством ручного переноса данных из одной в другую, но это очень долго и больно.
А если над проектом работает не один подрядчик? И каждый из них пользуется разными инструментами учета времени?
![YouTrack и Jira YouTrack и Jira](https://habrastorage.org/getpro/habr/upload_files/924/7e6/cb6/9247e6cb66780895021b8baa877c574f.png)
Подобную проблему решает интеграция системы заказчика с системой подрядчика. Про такую интеграцию подробно расскажем в статье на конкретном примере взаимодействия.
Особенности используемых систем
Для одного из наших проектов стояла задача разработать сервис, синхронизирующий потраченное время по задачам между нами и заказчиком.
Для управления проектами и учета времени мы используем баг-трекер YouTrack компании JetBrains. Процесс учета времени у нас в компании подробно описан в статье «Интеграция Битрикс24 с системой учета времени в Google Spreadsheet» .
У каждой траты времени есть автор, дата, потраченное время и комментарий. Комментарий к каждой такой записи состоит из описания проделанной работы, XML_ID (уникальный номер записи о трате времени в нашей внутренней системе «Потрачено») и версия этой записи для последующей оптимизации изменений.
![Пример записей о трате времени в YouTrack Пример записей о трате времени в YouTrack](https://habrastorage.org/getpro/habr/upload_files/34b/a48/994/34ba48994907bcddf8f0715266a4f93f.png)
Со стороны заказчика используется система управления задачами и проектами Jira компании Atlassian. Аналогично с YouTrack создаются задачи, относящиеся к конкретному проекту, к которым относится потраченное время.
Вести учет времени в Jira можно с помощью стандартных средств, а также и с помощью приложений, расположенных в Atlassian Marketplace. Лидер среди приложений для учета времени — Tempo Timesheets. Умеет считать потраченное и оставшееся время с помощью внесения отдельных записей о трате времени к задаче.
![Пример записей о трате времени в Tempo Пример записей о трате времени в Tempo](https://habrastorage.org/getpro/habr/upload_files/dd2/1d4/356/dd21d435681d0479b2171b4d31da9b52.png)
При любой интеграции актуален вопрос наличия API. Желательно документированного. Хотя бы рабочего… У YouTrack и Tempo есть REST API для решения текущей задачи. API Jira не использовалось, т.к. учет и работа с потраченным временем организована с помощью Tempo.
Получить нужную нам информацию из двух систем мы можем. Но как теперь все это связать?
Возможные схемы реализации обмена данными о тратах времени
Для учета времени не нужно переносить данные из системы заказчика подрядчику. Записи о трате времени должны браться из YouTrack и передаваться в Jira через систему синхронизации.
Дальше стоит определиться с частотой актуализации данных. Если важен обмен в режиме реального времени, то сначала стоит проверить, поддерживает ли такую возможность сервис из которого эти данные берутся. Например, в Trello такое можно реализуется помощью вебхуков. Для текущей задачи моментальное обновление данных не сильно важно, поэтому время синхронизируется один раз в сутки ночью.
Связь между задачами в двух системах реализована на стороне YouTrack с помощью кастомного поля для проекта, где вручную проставлялся id задачи из Jira.
![Информация о задаче Информация о задаче](https://habrastorage.org/getpro/habr/upload_files/1b2/864/f45/1b2864f4555c23fd5a388a5d4761ee58.png)
Во время синхронизации сначала выбираются доступные к синхронизации задачи из Youtrack, а потом для каждой из них записи о тратах времени за последний месяц. Для полученных задач ищутся аналоги в Jira. Затем записи о трате времени для каждой из задач сопоставляются с теми, которые есть в Jira.
Данные поддерживаются в актуальном состоянии за счет использования версионирования записей с помощью Потрачено. Если данные расходятся, то сравниваются версии записей и добавляются новые, либо удаляются лишние из Jira.
![Диаграмма взаимодействия нашего сервера, YouTrack и Jira Диаграмма взаимодействия нашего сервера, YouTrack и Jira](https://habrastorage.org/getpro/habr/upload_files/85a/ae7/56a/85aae756a8655302e248adba9243ac45.jpeg)
Как это работает сейчас?
Обмен выполняется каждую ночь по расписанию. Также была разработана отдельная страница с ограниченным доступом, на которой можно запустить процесс обмена и посмотреть отчет о его результатах.
![Интерфейс страницы с результатами синхронизации Интерфейс страницы с результатами синхронизации](https://habrastorage.org/getpro/habr/upload_files/a6a/924/d20/a6a924d2073741d9d13dce8638627b39.png)
В процессе каждого обмена логируются все операции изменения данных в системе заказчика и возникающие ошибки. Логи хранятся структурировано с привязкой к дате и времени, что дает легко отследить историю изменений.
В отдельные настройки вынесены проекты и задачи, доступные для обмена и те, которые исключены из него.
В результате время синхронизируется для двух наших проектов, обрабатывая потраченное время для сотни задач каждый день. Заказчик получает информацию по потраченном времени в автоматическом режиме, а менеджер проекта избавлен от ручного переноса этой информации из одной системы в другую.
Подобная система поможет облегчить и работу с подрядчиками над крупными проектами и процесс анализа потраченного времени для заказчика.
Разработчики будут продолжать вести учет времени в своей системе, а заказчик видеть результаты в другой, что поможет сосредоточиться на проекте и эффективнее решать задачи.
Мы как опытный веб-интегратор поможет связать используемые вами инструменты управления проектами в единое целое. Если есть вопросы либо возникнут проблемы при настройке, то задавайте вопросы в комментариях.
У нас большой опыт работы с нагруженными, масштабными, проблемными и просто растянутыми по времени проектами, и мы готовы поделиться им с вами!
Соавтор статьи: Егор Борисовский.