Обзор Remote Development от JetBrains

С очередным обновлением я заметил интересную бета-фичу от JetBrains для разработке на удалённой машине. В своей работе я обычно запускаю vim или emacs чтобы покодить на продакшене. Но очень интересно как это — уронить продуктивный сервер с комфортом и привычными хоткеями )

Настройка удалённой разработки

В начале нам предлагается подключиться по SSH

Начало создания нового подключения

Моно настроить соединение не только с логином и паролем, но и указать приватный ключ для подключения. В том числе поддерживается приватный ключ с passphrase. Пароль для контейнера приватного ключа можно или вводить каждый раз при подключении или же сохранить.

Настройка соединения с сервером

После добавления соединения можно выбрать версию IDE для использования на удалённой машине. При подготовке статьи уже устанавливался PhpStorm на хост, так что он помечен как installed

Выбор среды разработки для запуске на сервере

И выбираем папку проекта для работы на удалённом сервере

NB! Далее занимательный баг!! После нажатия на кнопку соединиться, окно запроса ключа для сертификата появляется за окном настроек подключения и его просто не видно! Это мне стоил минут 10 отладки, пока я просто не отодвинул окно в сторону и не увидел запрос пароля! Это поведение как минимум на Mac OS.

После первого подключения нам предлагается скачать JetBrains Client и мы подключаемся к IDE на сервере!

Под капотом Remote Development

Что мы в итоге получаем: мы занимаемся парным программированием с сервером с помощью сервиса https://www.jetbrains.com/ru-ru/code-with-me/ от JetBrains.

Я пробовал запускать под не привилегированным пользователем на LinuxBox и под root в обоих случая запуск одинаков через ld-linux-x86-64.so.2 и установки Java не потребовалось на сервер.

В целом запуск происходит не заметно и со стороны разработчика никаких особенных усилий не требуется.

Производительность решения от JetBrains

Ну хоть Java устанавливать не приходится, но от  Java машины никуда не денешься, так что к ресурсам Remote Development требовательно. Пробовал запускать:

  • на машине 2 Gb RAM без swap, CentOS 7 — сожрала всю память, на 5 минут повесила в 80% wait процессор и не запустилась. 
  •  2 Gb RAM, + SWAP поработала 5 минут и упала 
  • C 4Gb (как и написано в мин требованиях) работает норм.

С недостаточным количеством памяти система уходит в swap и какой-то адекватной работы ждать не приходится. Так что нужно выделять адекватное количество оперативы.

По отношению CPU на всех тестовых стендах было по 2 CPU ~1Ghz, какой-то супер нагрузки я не заметил.

Комфорт работы с Remote Development

Комфорт работы определяется производительностью сети. Если связь с сервером стабильная, то особых лагов не замечено при открытии/сохранении файлов.

Замечательная фича — это при открытии терминала открывается терминал удалённой машины.

Весёлый баг — клиент удалённой работы не смогла определить операционную систему которую я использую для подсветки сочетаний быстрых кнопок. Это как были показаны быстрые кнопки в клиенте

Это как выглядит на обычной среде разработки под Mac OS:

Из странного бага — система не смогла определить что у меня проект в .git репозитории и подсвечивать изменённый файлы.

Моё личное мнение

В общем и целом, фича Remote Development от JetBrains очень интересная с точки зрения комфортно покодить на продакшене или же организовывать унифицированные среды разработки для команды программистов. Но, на данный момент ( январь 2022), довольно сырая.