КОДЕКС

Облачные среды разработки

Прекратите устанавливать что-то на свой ноутбук!

Я работаю с множеством языков, облаков и инструментов. С этой целью я часто настраиваю среды разработки. В этой статье я поделюсь с вами шаблонами для повышения эффективности этого процесса.

1. Облачные ноутбуки

Давно перестал ставить на свой ноутбук случайные вещи. Скорее, я уже довольно давно использую одну или несколько облачных служб в качестве среды разработки. В связи с этим казалось странным, когда недавний клиент действительно прислал мне физический ноутбук, вместо того, чтобы использовать облачную среду, чтобы я мог выполнять свою работу за них.

Изначально (как и в 10 лет назад) я использовал один или несколько экземпляров AWS EC2 в качестве рабочего ноутбука. Возможность делать снимки сложных сред и перемещать их в экземпляры с большим количеством ЦП, ОЗУ и т. Д. Позволяет значительно сэкономить время. Кроме того, практически невозможно исчерпать дисковое пространство в облаке, поскольку добавить один или несколько томов EBS в экземпляр очень просто. Конечно, использование AWS S3 также работает для хранения. Остановка и запуск экземпляра виртуальной машины, когда она не используется, сокращает расходы на облако - это простая задача.

Несмотря на удобство облачных виртуальных машин, мне все равно приходилось ждать запуска этих виртуальных машин каждый раз, когда я их использовал, а также для установки и настройки различных инструментов, библиотек и языков, которые я хотел использовать в экземплярах. И мне пришлось локально установить, настроить и использовать правильную версию облачного клиентского инструмента (в данном случае aws cli) для доступа к моей облачной виртуальной машине.

2. Лучшие облачные ноутбуки

Войдите в GCP - их виртуальные машины запускаются быстрее, чем AWS, и они дешевле в нужных мне размерах. Все это хорошо, но особенность убийцы заключалась в использовании встроенного клиента SSH (показан ниже) или облачной оболочки для доступа к виртуальной машине. Вуаля - устанавливать нечего! Впоследствии AWS добавила свой собственный SSH-клиент (подключение к экземпляру EC2), а также облачную оболочку, но GCP добился этого первым.

Несмотря на удобство взаимодействия с облачной виртуальной машиной с помощью облачной оболочки, я все равно обнаружил, что устанавливаю одни и те же вещи снова и снова (кто-нибудь JDK?), А модель разрешений для GCP остается своеобразной.

3. Войдите в Jupyter и SaaS.

Пару лет назад я открыл для себя Блокноты Jupyter. В моей работе эти интерактивные среды часто служат заменой terminal. Мне нравится способность записной книжки поддерживать Markdown, многоязычную среду выполнения И визуализацию. Что ж, все в порядке, но кто хочет установить еще?

Видимо, я не единственный, кого это интересовало. И снова Google приходит на помощь. Они создали конечную точку (или программное обеспечение как услугу) для ноутбуков Jupyter. Он называется Колаб, и это замечательно. Помимо предоставления Jupyter Notebooks в качестве услуги, Google включил возможность использования ресурсов GPU или TPU. Я уже упоминал, что эта услуга также БЕСПЛАТНА?

Теперь, как бы ни был хорош Colab, уровень бесплатного обслуживания (есть также уровень Colab Pro, который стоит 10 долларов в месяц) имеет довольно значительные ограничения по ресурсам и времени выполнения. Хорошо для демонстраций, не подходит для производственных сценариев, так что же делать…

4. Виртуальные машины для ноутбуков PaaS

И снова Google вводит новшества. Относительно недавно они вместе с другими поставщиками облачных услуг создали набор предложений, которые я бы назвал специализированными экземплярами виртуальных машин. Google был первым со своими экземплярами AI Platform Notebook (VM) (показаны ниже). По сути, это виртуальные машины GCE, на которых предустановлено большое количество инструментов, языков и библиотек. Вы выбираете image family при создании экземпляра. Эти семейства образов являются производными от образов контейнеров, которые вы можете выбирать и / или настраивать.

Ищете Python, Docker? пип? JDK? конда? → все уже есть!

ЛЮБОВЬ с первого взгляда. Виртуальная машина с Python, JDK, Docker, pip, conda, TensorFlow и другими? Да, я возьму это, пожалуйста. Да, и я уже упоминал, что набор этих экземпляров включает примеры записных книжек, которые демонстрируют, как взаимодействовать с ключевыми службами GCP, такими как BigQuery, GCS и другими. Конечно, здесь также важна схема экономии денег за счет остановки экземпляров (это виртуальные машины, хотя и специализированные виртуальные машины), когда они не используются.

AWS поддержала идею экземпляров SageMaker Notebook. Несмотря на то, что для запуска этих экземпляров AWS требуется больше времени, чем для их аналогов GCP, используя экземпляры ноутбуков AWS, вы получаете ОГРОМНОЕ количество примеров ноутбуков, а также знакомую модель разрешений AWS IAM.

5. А как насчет IDE?

Ладно, я много говорил о Jupyter. И да, записные книжки отлично подходят для короткого и простого выполнения кода или сценария. Однако иногда мне нужно иметь дело с грубым устаревшим кодом. Для этого мне нужен редактор кода или IDE. Итак, как я могу использовать IDE БЕЗ установки?

Концептуально аналогично Google Colab, появляются конечные точки IDE (или SaaS). Один пример - Codepen.io, другой - Repl.it. Как бы весело ни было опробовать примеры игрушек на любом из 50 языков, поддерживаемых Repl.it (показано ниже с использованием языка LOLCODE - да, это реально), я все же обнаружил, что хочу использовать более знакомую среду IDE для трудные проблемы. Для меня это VSCode.

6. Мой код в ваших облачных записных книжках

Помимо желания использовать облачную среду IDE, существует еще одна проблема, связанная с внедрением моего кода в среду облачной разработки поставщика. Нужно ли мне выгружать весь свой код на виртуальную машину? вытащить его из GitHub? Я не хочу делать ничего из этого. Я хочу запустить облачную среду разработки ОТ GitHub. Я также хотел бы, чтобы эта среда включала весь код в репо.

Команда Jupyter и их сотрудники соглашаются. В области «ноутбук как лучший терминал» они поддерживают интересный инструмент под названием Binder.

Инструмент связывания позволяет мне превратить репозиторий Git в коллекцию интерактивных записных книжек. Используя файлы конфигурации в моем репо, инструмент связывания связывает URL-адрес репо с действием (кнопкой), которое при нажатии создает и запускает образ Docker (на GCP GKE) с использованием языковых требований и включая языковую среду выполнения, Jupyter и записные книжки в мое репо.

7. Мой код в вашей облачной среде IDE

Итак, Binder - это здорово, но как мне получить мой код И полную IDE (например, VSCode) в облаке с минимальными усилиями? Войдите на GitHub Codespaces. В настоящее время находится в частной бета-версии, я получил доступ к этой бета-версии около 6 месяцев назад.

И снова я был очарован. Я был настолько очарован, что создал вариант использования - обучение нашей библиотеке TKPJava для восьмиклассников (на Chromebook, все еще в закрытом режиме COVID в Калифорнии) на пользовательском экземпляре VSCode IDE.

Несмотря на то, что он находится в бета-версии, процесс создания настраиваемого контейнера, который создает среду разработки с VSCode, моими файлами и любыми другими настройками, которые я указываю (например, расширения VSCode), который развертывается ИЗ репозитория GitHub, был в основном интуитивно понятный. Выше показана папка .devcontainer, в которой находятся файлы настроек.

Я написал серию советов по созданию / настройке GitHub Codespaces на Dev.to, когда мы создавали этот пример. Ниже показана быстрая демонстрация (начало в 11:10).

Итак, это мой путь создания / использования облачной среды разработки. А вы? Какая у вас среда разработки облачных вычислений в наши дни?