Не все сталкиваются с этой проблемой, но вы поймете суть статьи, если хотя бы раз были свидетелем следующего диалога:
— Почему у нас всё упало?
— Ничего не знаю, на моей машине работает — вот.
В компаниях, где сотни разработчиков разбросаны по стране, нередко можно встретить десятки разных конфигураций. Разработчики используют региональные зоопарки. Чтобы код одинаково работал на всех машинах, разработку можно перенести в облако. А еще инструменты из этой статьи помогут гибко управлять ресурсами и сократить Time To Market. И, конечно, иногда просто хочется покодить с планшета в отпуске.
Проблемы, которые решает удаленная разработка
- Исправление старого кода отнимает много времени, если вам приходится настраивать локальную среду для работы. Выбрав облачную среду разработки, вы сможете значительно ускорить работу. Кроме того, есть инструменты, которые поддерживают создание нескольких сред для каждого разработчика.
- Время сборки, доставки или тестирования обычно ограничено некоторой комбинацией вычислительных ресурсов, которые легче настроить (и получить) на удаленной виртуальной машине.
- Сложно тестировать ПО, если у вас под рукой нет нужной операционной системы или подходящего браузера. Виртуальные машины решают эту проблему.
Дальше — обзор инструментов и ресурсов для дистанционного программирования.
OpenVSCode-Server
Редактор VSCode появился и стабильно развивался как локальное решение. В 2019 году команда сделала рефакторинг архитектуры, чтобы дать возможность программистам работать дистанционно через браузер. Сейчас вы можете использовать Visual Studio Code для удаленной разработки с помощью плагинов. При этом клиентская часть приложения запускается на локальном компьютере, а сервер VSCode практически где угодно.
OpenVSCode-Server не просто расширение. Это проект с открытым исходным кодом, который поддерживает альтернативу Visual Studio Marketplace — Open VSX.
Gitpod
Gitpod — опенсорсная система для быстрого развертывания в облаке IDE. Вы можете запускать виртуальные машины с VSCode сервером для git репозитория, пользоваться маркетплейсом расширений, загружать свои дот-файлы. Gitpod предоставляет возможность создать YAML-файл, в котором хранятся все настройки рабочей области.
Система интегрирована с Github, Gitlab и Bitbucket. Есть поддержка популярной IDE от JetBrains. Кроме того, Gitpod не ограничивает выбор IDE или редактора.
Это платное решение, как и некоторые другие аналоги (например, Github Codespaces), но каждый месяц доступно 50 бесплатных часов для публичных репозиториев.
Coder
Платформа для удаленной разработки с открытым исходным кодом, которую выбирают организации уровня «Enterprise». Coder интегрируется с инструментами контейнеризации Docker и Kubernetes, и позволяет разработчикам с легкостью создавать, тестировать и развертывать приложения в контейнерной среде.
С помощью платформы можно запустить VSCode на любой машине с доступом по SSH. Coder — мощный инструмент для команд, которые хотят создавать удаленные среды разработки. Если вам нужно просто запустить VSCode в браузере, можете воспользоваться другим решением команды Coder — code-server.
Cloudify и Ansible
Cloudify — система оркестрации и автоматизации сервисов DevOps с открытым исходным кодом для всех типов облаков. Система позволяет создать всю необходимую для приложения инфраструктуру. Вы управляете и масштабируете приложения внутри Cloudify, независимо от топологии и платформы. Инструмент поддерживает стандарт взаимодействия облачных платформ OASIS TOSCA и многочисленные плагины.
Ansible — решение для управления конфигурациями серверов, сохранения их состояний, доставки и развертывания на них ПО. Этот легкий в установке и использовании инструмент. С помощью ansible можно по заранее подготовленным сценариям устанавливать и изменять на облачных серверах ПО, управлять сетями и сетевыми настройками. Отметим, что ansible (как и Terraform) умеет подключаться к удаленным серверам по SSH.
Системные администраторы, а также инженеры, отвечающие за надежность инфраструктуры, с помощью ansible могут эффективно управлять базами данных — об этом рассказывали в блоге #CloudMTS.
Che и Theia
Eclipse Che — open source мультиплатформенный проект, для использования которого нужен только браузер. Che включает IDE-инструменты, работающие в виде контейнеризованных микросервисов. Да, собственно это IDE, разработанная для Kubernetes (и работающая на Kubernetes или OpenShift). Разработчики могут использовать Che для создания практически любого клиентского приложения.
Однако среди специалистов есть мнение, что Che с трудом обеспечивает поддержку различных языков программирования и сред. Чтобы преодолеть эту проблему, команда Eclipse Foundation выпустила Theia.
Eclipse Theia — бесплатная платформа для разработки многоязычных облачных и десктопных IDE. Платформа поддерживает более 60 языков программирования и множество расширений VSCode.
CodeReady Workspaces
Что может быть лучше идеи запускать IDE на Kubernetes? Запускать нескольких IDE на Kubernetes. CodeReady Workspaces — это облачная контейнеризированная IDE с веб-интерфейсом, которая входит в состав Red Hat OpenShift и реализует подход «IDE как сервис». Ее можно использовать с различными облачными провайдерами, а также с собственным частным облаком OpenStack. Поддерживает VSCode, JetBrains, Che, Theia и многие другие инструменты. К слову, система Eclipse Che 7 будет интегрирована в CodeReady Workspaces 2.0.
Облачные ресурсы
Это уже платные инструменты, но их можно бесплатно протестировать или выгодно использовать за счет грантов:
- Virtual Infrastructure — готовые мощности в публичном облаке. Виртуальная инфраструктура может автоматизировать масштабирование сервисов по API с помощью Terraform;
- Compute Cloud — виртуальные машины, которыми удобно управлять и легко масштабировать. Можно выбрать подходящую ОС или готовый шаблон приложения, чтобы сэкономить время на установку и конфигурацию;
- Containerum Kubernetes Service — готовый кластер Kubernetes, в котором можно выбрать параметры кластера и количество виртуальных машин;
- Managed Service for Apache Kafka — управление брокером сообщений Apache Kafka в облаке;
- PostgreSQL-as-a-Service — СУБД для гибкого доступа к базам данных, их организации и хранения;
- DBaaS for Redis — СУБД с высокой скоростью доступа к данным;
- Объектное хранилище — хранение данных любого объема и формата;
- CDN и Медиаплатформа — быстрая доставка статического контента по всему миру;
- GSLB — сервис сетевой балансировки на основе DNS протокола. Обеспечение высокой доступности и мониторинга работоспособности узлов.
Вывод
Переместив рабочую нагрузку на удаленную машину, вы сможете быстро масштабировать и оптимизировать ресурсы в зависимости от задач, повысить скорость сборки и тестирования, запускать несколько сред. Это удобнее, чем менять ноутбуки или держать под рукой парк серверов. Есть и очевидный недостаток — проблема с интернетом остановит любую работу.
Удаленная разработка имеет смысл, если вы не хотите, чтобы новые разработчики в компании ждали оборудование или вручную настраивали среды. Другое преимущество для сотрудников корпораций — разработчикам не понадобится админский доступ к их машинам.