Совместная работа в режиме реального времени: алгоритмы, редакторы, облако Алгоритмы параллельного редактирования Для эффективной совместной работы важно решить один вопрос: каким образом можно избежать конфликтов, если осуществляется одновременное редактирование? Для этого была разработана технология ОТ (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) способна обеспечить сбор и тестирование проекта, исключая нагрузку на рабочий компьютер. Такое облако дает возможность беспрепятственно переходить на любое неподготовленное устройство для дальнейшего проведения работ с того самого момента, на котором они были приостановлены.