Совместная работа в режиме реального времени: алгоритмы, редакторы, облако
Алгоритмы параллельного редактирования
Для эффективной совместной работы важно решить один вопрос: каким образом можно избежать конфликтов, если осуществляется одновременное редактирование? Для этого была разработана технология ОТ (Operational Transformations). Ей вменялось правильное применение и синхронизация всех правок, для чего используются специальные алгоритмы.
Смоделируем ситуацию, при которой вы с коллегой работаете над одним текстом. Вы добавляете предложение в начало текста, а ваш коллега добавляет предложение в конце текста. По большому счету первая правка, которая попала на сервер, записывается, как обычно, тогда как вторая правка проходит через ряд задач, сравнивается с логом событий, с целями пользователя и записывается таким образом, чтобы не нарушать общей целостности и согласованности документа.
Особенность ОТ – необходимо наличие активного соединения с сервером.
По другому пути пошли разработчики CRDT (Conflict-Free Replicated data types). При данной технологии исключается конфликт параллельных правок даже с нестабильной интернет-связью и большими задержками передачи данных. Технология позволяет всем вносить правки, не боясь возможных конфликтов.
Совместное редактирование кода в реальном времени
Параллельное редактирование стало более доступным после появления библиотек с открытым кодом: TogetherJS и Collaboration Engine. Также не стоит забывать Convergence.io – которая позволяет добавить функции одновременной работы в приложении.
Особый импульс в плане разработок подобных технологий данный процесс получил в разгар пандемии.
Некоторые инструменты также допускают режим совместной работы в отладчике или на терминале. Они есть у Code with me (для IDE Jetbrains) и Visual Studio Live Share (VSLS).
Говоря о бесплатных программах, позволяющих совместную работу, можно упомянуть:
Git.Live – при выявлении конфликтов, отправляет пользователям уведомление. Помимо этого, связаться можно посредством звонка прямо из программы. Git.Live поддерживает режим параллельной работы над кодом.
CodeStream – по сути, это расширение для JetBrains и VS Code с открытым исходником, которое способно сохранять взаимодействия между участниками.
CodeInterview.io и EXLskills – данные сервисы позволяют проводить собеседования по программированию.
Следует понимать, что вышеперечисленный список далеко не исчерпывающий. Существуют и другие инструменты.
Совместная работа в облаке
Как дополнительный метод обеспечить совместную работу – использовать облако.
Многие организации тратят ощутимые средства для приобретения аппаратного обеспечения под MVP. Однако виртуальные машины позволяют сэкономить на виртуальных затратах, а также увеличить скорость тестирования приложений.
Вместо того, чтобы тратиться на приобретение физических серверов, обслуживание команды и лицензий, можно использовать облачные сервисы, при которых оплата будет осуществляться только за используемые ресурсы (принцип работы по модели Pay-As-You-Go).
Помимо всего прочего, в облаке может быть развернуто соответствующее программное обеспечение для проектного управления. Облачная IDE (к примеру, code-server) способна обеспечить сбор и тестирование проекта, исключая нагрузку на рабочий компьютер.
Такое облако дает возможность беспрепятственно переходить на любое неподготовленное устройство для дальнейшего проведения работ с того самого момента, на котором они были приостановлены.



