Введение
Для того чтобы лучше понимать продукт, нужно его использовать. Звучит вполне логично. Но бывают ситуации, когда продукт, который вы разрабатываете, определяет ваше взаимодействие с инструментами для разработки. То есть он буквально доставляет ваше рабочее место с удаленной машины на локальный компьютер.
Может ли формат доставки рабочих мест в виде Termidesk VDI быть рабочим решением для разработки? В статье будем разбираться, утопия это или вполне себе приятная реальность.
Кстати, данная статья продолжает начатую здесь тему.
В этой части я расскажу о технологиях, которые мы используем в процессе создания Termidesk, а также поделюсь опытом выхода из курьезных рабочих ситуаций на примере трех кейсов. Например, что мы делаем, если во время работы через ВРМ (виртуальное рабочее место) пропал интернет. Или как обстоят дела с задержками при наборе с клавиатуры.
Но самое главное — я наглядно покажу, как выглядит реальное взаимодействие с виртуальным рабочим местом при использовании отечественного VDI-решения Termidesk.
Технологии, которые мы используем
Как в самом продукте, так и в процессе разработки, мы имеем дело с самыми разными технологиями и инструментами. Среди них Python, GitLab, Ansible, Docker, Terraform, D-Bus и WMI, PostgreSQL, PyCharm, а также разнообразный софт для локальной виртуализации.
В работе мы регулярно сталкиваемся с вызовами, решение которых не получится просто нагуглить. Порой мы и становимся теми, кто в комментариях на StackOverflow оставляет единственный ответ на, казалось бы, давно забытый и безнадежный вопрос о проблеме многомониторного режима для протокола RDP (вы тоже раньше об этом не слышали?). Заглядывая немного вперед, именно этот протокол я буду использовать в качестве транспорта во всех демонстрациях.
Не обходится и без классических подходов к отладке в процессе разработки. Для нас в порядке вещей использовать по максимуму доступные возможности IDE: линтеры, тонкую конфигурацию под наш проект с разметкой каталогов Sources Root и Resource Root, синхронизацию проекта и отладку с использованием RemoteSSH.
Причем некоторых возможностей бывает попросту недостаточно. Например, как RemoteSSH в PyCharm, который все еще не поддерживает работу с Windows, а у нас есть мультиплатформенные компоненты. Тот же сессионный агент, который работает не только на Astra Linux, но и на ОС Windows.
Как использование Termidesk в работе помогает нам делать его лучше
Первый кейс: Удаленный стенд для разработки
Мы используем тот способ, когда в роли администратора системы осуществляем полный цикл разработки и настройки Termidesk. Чаще всего мы используем инфраструктуру Termidesk для разработки и проведения разных экспериментов.
Стенд выглядит как связка из нескольких удаленных машин, к каждой из которых мы подключаемся:
Диспетчер Termidesk на машине с Astra Linux;
Astra Linux или Windows Server в качестве целевой ОС, на которую мы подключаемся через клиент Termidesk;
Клиент Termidesk на машине с Astra Linux.
Наряду с ПК СВ «Брест» и VMmanager мы используем oVirt для развертывания такой конфигурации.
В процессе разработки этот подход дает нам ряд удобств:
Любой коллега будет иметь доступ ко всем машинам и легко сможет присоединиться к исследованию по задаче, для которой был развернут стенд.
Мощности стенда достаточно, чтобы непрерывно поддерживать, выделять ресурсы, клонировать и делать снимки состояний виртуальных машин. Такое не всегда может обеспечить даже очень мощный рабочий компьютер.
Легко оставлять после работы полезные артефакты в виде золотых образов ОС или заранее подготовленных конфигураций, которые могут быть полезны не только мне, но и ребятам, с которыми я работаю.
Конечно, у такого подхода есть и свои минусы:
Регулярные простые задачи. Если нужно работать только с одной виртуальной машиной, на постоянной основе ее пересоздавать и выполнять с ней много административных действий, то это, как правило, медленнее, чем то же самое на ресурсах рабочего компьютера. Так происходит из-за особенностей платформы виртуализации, которая обрабатывает запросы в порядке очереди и не всегда мгновенно.
Зависимость от сети. По понятным причинам работать с виртуальными машинами на облачной платформе затруднительно, если интернет медленный или сеть нестабильна.
Подобный подход оправдывает себя, когда мы заканчиваем работу над очередным улучшением и в целях тестирования проходим весь процесс установки и настройки Termidesk так же, как это делает в итоге администратор. Так нам проще определять точки роста продукта. И даже если они выходят за рамки ответственности нашего отдела, мы все равно можем передать информацию ключевым коллегам, что позволяет нам развивать Termidesk с разных сторон.
Например, так было с логированием. Когда однажды мы столкнулись с высоким потребления памяти и дубликатами записей в журнал, то обратили на это внимание. Проблема была исправлена и вошла в релиз 5.0.
Второй кейс: Доставка основной среды разработки - VS Code
Следующий кейс — доставка приложений. Обычно для меня это VS Code, через который в том числе и ведется разработка. Хотя на самом деле это не так важно, доставлять можно любое установленное приложение.
Какую пользу дает такой сценарий для разработки?
Очень часто нам требуется проверить некоторую гипотезу. Удобно иметь возможность быстро оперировать несколькими вариантами изменений исходного кода проекта. Еще лучше, когда можно запустить несколько экземпляров проекта одновременно. Так, чтобы на лету работать с исходным кодом каждого.
А уже сравнивать поведение можно либо через браузер хоста, либо точно так же получать нужное количество клиентских приложений Termidesk — зависит от задачи.
На практике подобные сценарии удобнее всего воспроизводить путем доставки только приложения IDE. Запрашивать для этого полноценный рабочий стол было бы избыточно и не так удобно.
Третий кейс: Полностью виртуальное рабочее место
А теперь самый интересный кейс, к которому у вас может возникнуть больше всего вопросов.
Что если перенести всю разработку на удаленную машину и работать полностью через Termidesk VDI?
Рабочие процессы — это довольно чувствительная область для разработчика. Здесь недопустимы спонтанные обрывы сессий или существенные задержки отклика во время работы с кодом.
Разделим этот кейс на два типичных процесса разработки: набор в IDE и переключение между несколькими приложениями в режиме реального времени.
Ввод текста в IDE
Итак, насколько ощущается задержка во время работы в таком формате? Она, конечно же, есть по сравнению с печатью в локальном варианте VS Code. Но если говорить о субъективном ощущении во время работы, задержка между нажатием клавиши и ее отображением на удаленной машине настолько минимальна, что совсем не приносит ощущения какого-то дискомфорта. Спустя примерно 10-15 минут уже совсем не замечаешь, что для работы используется VDI.
Стоит отметить, что в демонстрации для честности и чистоты эксперимента я использовал публичный Wi-Fi, который не отличается показателями скорости и пинга.
Многозадачность
А вот по части многозадачности эффекты отрисовки окон в разрешении 1920 x 1200 порой были довольно заметными. С учетом качества интернет-соединения, на котором проводился эксперимент, работа в режиме многозадачности ощущается вполне нормально, хотя и не так идеально, как хотелось бы после перехода с локального рабочего места. Коллеги из смежного отдела уже работают над подобной задачей — нормализацией полосы пропускания при использовании протокола TERA, подробнее см. в нашем справочном центре.
Бонус-трек: разрыв с интернет-соединением
Работа над Termidesk тесно связана с виртуализацией и сетью. Но что происходит, когда по каким-либо причинам случается разрыв соединения и удаленная сессия неожиданно прерывается?
Хотя лично для меня такие сценарии практически исключены: если что-то случается с моим Wi-Fi, я практически сразу могу переключиться на мобильную точку доступа — скорость сети не уступает домашнему роутеру:
В свою очередь клиент Termidesk автоматически восстановит подключение после обрыва.
Но даже при этом я конфигурирую Termidesk так, чтобы мое рабочее место не удалялось при отключении сеанса:
Даже в ситуации полной потери доступа к сети работа может быть продолжена, но над другим задачами, которые могут выполняться офлайн. Синхронизация результатов работы после восстановления доступа к сети происходит классическим способом — через git.
Заключение
Итак, есть ли место VDI в работе разработчика? Однозначно да.
Конечно, такой формат работы не лишен недостатков, но те примеры, которые мы рассмотрели, показывают зачастую оправданность выбора. Особенно когда речь заходит о такой работе, где задействована виртуализация и несколько экземпляров операционной системы.
Работа в формате VDI чувствительна и к качеству соединения и, очевидно, к протоколу доставки, который при этом используется.
Такой формат использования продукта, который я только что описал, определенно дает результаты. В том числе и для корпоративных клиентов, которым необходимо максимально защищенное решение. Нам просто важно смотреть в будущее, чтобы реализовывать новейшие решения уже сегодня. От транспортных протоколов до завершенной экосистемы продуктов.
В следующей статье я проведу более подробное сравнение основных протоколов доставки. Один из ключевых вопросов, на который я буду искать ответ, — как выжать максимум из сетевого подключения и обеспечить более качественный опыт работы на удаленной машине?
Комментарии (11)
eri
24.07.2024 17:32+4И как обычно без цен, без файлов для скачивания. Это хотяб дешевле ms ts? Или как обычно сто тыщ за одно ядро?)
r2d
24.07.2024 17:32Конечно как крыло от боинга, вы видели цены на астра линукс? А их политика, я купил за 100500 тыщ их недолинукс и пользоваться им не могу потому, что эти "черти" перепилили весь стандартный функционал линукса на свои fly-банутые и мне теперь надо это говно изучать, я cron на астре запускал минут 20 пока в справке их не вычитал, что оказывается его надо через пень колоду включать. А справка у них по подписке за бабки, то-есть мы тут наделаем все как не у всех и справку сделаем платной
AstraLinux_Group Автор
24.07.2024 17:32Здравствуйте! Цены на нашу ОС формируются нашими сертифицированными партнерами с учетом разных факторов, но в любом случае остаются гибкими. Отметим, что если у вас уже есть лицензия любого вида, то база знаний для вас также доступна - нужно просто авторизоваться в личном кабинете. Большая часть данных из базы есть и в бесплатной АстраВики: https://wiki.astralinux.ru/. В случае возникновения трудностей, вы всегда можете написать нам в техподдержку, которая также активна при покупке любой лицензии. Вы также можете задать вопросы в нашем чате, возможно кто-то из комьюнити уже сталкивался с этим и может дать совет: https://t.me/astralinux_chat
r2d
24.07.2024 17:32+2Вы сами то пробовали себе в поддержку писать из личного кабинета? Квест еще тот, что бы подать запрос нужно указать Продукт, Версия, Сертификат и Сертификат на услуги эти поля обязательные для заполнения но поля Сертификат и Сертификат на услуги не активны и выбрать ничего нельзя, запрос не отправляется говорит заполни обязательные поля. И вот сижу я в организации которая закупила туеву кучу этого недолинукса, мне выдали доступ в Ваш ЛК и написать в поддержку я не могу. Запустил apt update потом apt upgrade на свеже установленном чистом Astra Linux и отгдайте что произошло? Она обновившись из официальных репозиториев померла)))) с 2008 года сижу на Linux ни разу такого не замечал ни за Debia/Arch/Manjaro/Ubuntu. Сижу вот плююсь на этот недолинукс выкинул бы его к чертям давно, но нельзя этож импортозамещение только Астра Альт и ред. Нормальный дист взять нельзя
Romasantas
24.07.2024 17:32Даже нубасы с трехдневных курсов знают, что апт апгрейд юзать на астре нельзя. Он вообще вырезан в последних версиях... Обновы только через astra-update или dist-upgrade
Но вместо того, чтобы почитать и сделать как надо, мы лучше сделаем "как привыкли", "че мы линукс никогда не видели". А потом идем изливать свое нутро по форумам, тьфу, позорище
eri
24.07.2024 17:32fly десктоп это первое что остановило меня при внедрении. Выглядит и чувствуется как 2004ый год. Не знаю зачем копировать дизайн виндовс хп в 2014 году.
Dc-adc
24.07.2024 17:32Это выглядит как ознакомительная статья с продуктом. А цены - https://googlegiksearch.github.io/?q=Termidesk+terminal+%D0%BA%D1%83%D0%BF%D0%B8%D1%82%D1%8C+
YaroKam
24.07.2024 17:32Я надеюсь на статью сравнения ПК СВ «Брест» и VMmanager от Группа Астра.
Как понимаю оба продукта работают с виртуализацией и возникают вопрос с выбором. На странице ПК СВ "Брест" заявлено, что он интегрирован с Termidesk, то есть выходит, что у них совместно больше возможностей?
ISPsystem_software
24.07.2024 17:32Добрый день! VMmanager может использоваться в качестве поставщика ресурсов Termidesk. О возможности интеграции упоминается и в самой статье. Ознакомиться подробнее с информацией вы можете по ссылке: https://www.ispsystem.ru/docs/vmmanager-admin/integratsiya/integratsiya-s-termidesk.
Al_Tar
24.07.2024 17:32Сильно сомневаюсь, что в vdi, особенно работающий по freerdp-xfreerdp , freerdp-(даже)remotefx или spice можно получить нужный пользовательский опыт ,соответствующий привычкам(UX требованиям) разработчиков. Ну, если только не рассматривать ide, как ноутпад с "синтаксисом" и запуском отладчика
1) с какой кадровой частотой работает ide на ПК? Как быстро проматываются окна прилад, нужные деву?
2) а теперь какой fps даёт freerdp? В ,например, pcoip возможны и 60 fps. Где управление длинной очереди мышиных событий, прямо влияющая на realtime соответствие мувов-кликов и вызываемой этим отрисовки?
3) билд приличного проекта - хорошо грузящая cpu операция, которая прямо жрет cpu. Реальный cpu, а не vCPU. Vdi - shared среда. Как с масштабированием ( кол-во юзеров на хост) в этом случае? Как себя почувствуют юзеры, вбивающие код и чувствующие тормоза, когда их vCPU "курит"?
4) те же, что в 3) вопросы относительно масштабирования схд, ведь билд большого проекта это и приличный I/O
5) представим, вы делаете сайт с анимациями/webrtc/... в vdi. Сделали...И что увидите? Камера в rdp пробрасывается так, что сделать можно, а юзать нельзя. Как дев , который не в курсе этого, поймет, что у него лаги не из-за его кривых( на самом деле - нормальных) рук, а из-за протокола? Та же история с видеотрансляциями: хрипы, пропуски кадров... Browser content redirection - это не о спайс/rdp. Мультимедиа редирекшн - это не о Линукс ВМ.
6) приложения ,работающие с периферией, имхо тоже делать не фонтан в vdi. Очень сильно зависишь от того,как хорошо протокол удаленного доступа пробрасывает их в ВМ(Мантры про usb redirection можно не произносить - у меня иммунитет :-) )
PS. Не с того конца заходите имхо ,продвигая свое vdi решение
dom1n1k
КДПВ в фирменным паратайповским вайбом.
Астра выглядит как дальний родственник Сбера, уж не знаю плюс это или минус.