Рубрики
Без рубрики

Разработка в 10 раз быстрее с помощью Surface Go, благодаря VS Code и Azure

Исследование по Surface Go, удаленной разработке VS Code и Azure, чтобы ускорить разработку при меньших затратах. Помеченный spring, azure, java, vscode.

Как разработчики, мы всегда стремимся создать максимально эффективную среду, а это часто означает покупку высококлассного ноутбука. В этом посте мы увидим, что использование удаленной разработки VS Code в Azure может обеспечить гораздо лучшую среду при меньших затратах.

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

Но давайте начнем с истории!

Surface Go, потрясающая машина для разработчиков?

В настоящее время я купил себе Surface Go для моего личного использования. Это было до того, как я работал в Microsoft, и на самом деле совершенно не связано с моей рабочей деятельностью. Мои причины заключались в том, что:

  • Он очень легкий и маленький
  • Это очень дешево, на Amazon всегда есть скидки, и вы можете получить их менее чем за 500 долларов
  • У него есть Windows 10 с магазином приложений, включая Netflix (обязательно для всех, у кого есть дети, так как мы все знаем, как эти автономные эпизоды “Патруля лап” полезны во время путешествий)
  • У него есть порт UBS-C, так что я могу просто подключить его к своему монитору, который у меня есть для работы (Dell UltraSharp 27 – U2719DC), и все работает “из коробки”

Очень важное примечание: существует 2 версии Surface Go, используйте высококачественную версию. У вас не только вдвое больше оперативной памяти и диска, но и настоящий SSD-диск, который работает намного быстрее.

Конечно, как разработчик, я также использую его для написания кода, поэтому возникает вопрос: насколько это хорошо для кодирования?

Моя настройка разработки

Я настроил все с помощью awesome Шоколадный менеджер пакетов, включая:

  • Примите дистрибутив OpenJDK JDK.
  • NodeJS .
  • Cmder эмулятор терминала.
  • Visual Studio Code Insiders , который предоставляет ежедневные сборки кода VS Studio и является способом получения доступа к удаленным расширениям Visual Studio Code на момент написания этой статьи.

Начальные показатели производительности

Как руководитель проекта JHipster , я, конечно, провожу эти тесты производительности с приложением JHipster, но здесь нет ничего особенного для JHipster, поэтому они должны быть одинаковыми практически для любого процесса Java или даже любого процесса, который использует довольно много процессора, оперативной памяти и диска.

Я создал простой проект по адресу https://github.com/jdubois/simple-jhipster-app , который вы можете легко протестировать на своей собственной машине:

  • Клонировать проект: git clone git@github.com:jdubois/simple-jhipster-app.git
  • Запустите оболочку Maven: ./mv nw

С точки зрения производительности это выглядит не очень хорошо:

  • Запуск Maven занимает много времени
  • Загрузка пружины начинается через 13,5 секунды

Давайте посмотрим, как мы можем это улучшить!

Поверхность Идет против Поверхностная книга

К счастью, для работы у меня есть Surface Book среднего класса (core i5), так что с этим оборудованием должно быть лучше, не так ли?

Я установил ту же настройку на этом компьютере: запуск приложения Spring Boot теперь занимает 12 секунд вместо 13,5 секунд! То, что мы делаем, немного зависит от процессора, но большинство наших проблем, вероятно, связаны с вводом-выводом, и оба оборудования имеют одинаковую память и, вероятно, аналогичный SSD.

Итак, первый интересный урок с точки зрения затрат: покупка Surface Go за 500 долларов – это очень выгодная сделка, так как она стоит четверть цены Surface Book, а также составляет четверть веса вашего рюкзака!

Использование VS Code и удаление Maven

Давайте откроем приложение с помощью Visual Studio Code Insiders и, конечно же, установим “Пакет расширений Java” от Microsoft .

Поскольку приложения Spring Boot также являются обычными “Основными” классами Java, можно просто запустить приложение, запустив его метод main в классе SimpleApp . Это намного проще, чем запускать Maven, но и намного быстрее. И вы также можете отладить приложение одним щелчком мыши!

Сейчас мы набираем время запуска Maven, но приложение по-прежнему запускается через 13,5 секунды.

Использование удаленной разработки VS Studio Code

Снова откройте Visual Studio Code Insiders и установите расширение “Удаленная разработка” от Microsoft .

Это позволит нам работать на SSH-компьютере, который будет предоставлен Лазурный .

Давайте создадим виртуальную машину в Azure:

  • Перейдите к Портал Azure .
  • Создайте новую виртуальную машину.
  • Выберите тип машины по умолчанию, D2S v3 на момент написания этой статьи. Это стоит 0,1120 доллара в час.
  • Добавьте свой открытый ключ на первом экране, а на сетевом экране не забудьте открыть SSH-порт в раскрывающемся списке Выберите входящие порты .
  • Оставьте все остальные параметры по умолчанию и создайте машину.

Как только машина будет создана, давайте настроим ее в нашей обычной рабочей среде. Лично у меня есть свой собственный сценарий настройки, который вы, конечно, можете использовать повторно:

  • Скрипт доступен по адресу https://github.com/jdubois/jdubois-configuration/blob/master/install.sh
  • Войдите в свою новую виртуальную машину Azure с помощью SSH: имя пользователя ssh@machine-ip (пожалуйста, обратите внимание, что вы можете найти IP-адрес своего компьютера на странице “обзор” на портале Azure) и стать root: sudo su
  • Как только вы войдете в систему, запустите мой установочный скрипт от имени root: sh -c "$(curl -fsSL https://raw.githubusercontent.com/jdubois/jdubois-configuration/master/install.sh )"

Поздравляем, ваша машина Azure готова!

Давайте вернемся к VS Code и подключимся к нему. Поскольку мы будем использовать это SSH-соединение довольно часто, я рекомендую вам создать файл .ssh/config в вашей домашней папке с настройками, аналогичными этой:

Host jdubois-azure
    HostName 52.232.60.209
    User julien

Как только вы подключитесь к виртуальной машине Azure:

  • Используйте вкладку управление расширениями, чтобы снова установить “Пакет расширений Java” от Microsoft , но на этот раз на удаленном SSH-узле.
  • Используйте палитру команд, чтобы создать Git-клон нашего примера приложения https://github.com/jdubois/simple-jhipster-app.git .
  • Запустите класс SimpleApp , как мы делали раньше.

В результате наше приложение теперь запускается за 10,3 секунды! Это немного лучше, чем на нашем Surface Go, но очевидно, что виртуальная машина по умолчанию – не лучший вариант для нас.

Пожалуйста, обратите внимание что если вы хотите получить доступ к своему приложению локально на http://localhost:8080 , вкладка “Удаленная разработка” предоставляет вам графическую утилиту для создания SSH-туннеля.

Тестирование на более совершенных машинах и оптимизация цены

Поскольку мы используем виртуальные машины, есть несколько очень интересных вещей, которые мы можем сделать, чтобы оптимизировать как наши затраты, так и производительность:

  • Эти машины должны запускаться только тогда, когда вы ими пользуетесь, поэтому вы должны включать и выключать их во время работы, как обычный компьютер на самом деле! Пожалуйста, обратите внимание, что на портале Azure есть меню “Автоматическое завершение работы”, и, вероятно, было бы неплохо автоматически отключать компьютеры на ночь или на выходные, на случай, если вы забудете это сделать.
  • Существует меню “Размер”, которое позволяет вам изменить тип используемой вами машины, чтобы настроить ее в зависимости от желаемой стоимости и производительности. К сожалению, это работает не для всех машин: они должны находиться в одном регионе и в одном семействе.

Давайте еще раз проведем наш тест и посмотрим, какую максимальную производительность мы можем получить для нашего приложения, и рассчитаем связанные с этим ежедневные затраты (здесь мы учитываем, что вы работаете 10 часов в день, 240 дней в году). Вот результаты с соответствующими затратами (для региона “Западная Европа”), с машинами, которые выглядели наиболее многообещающими:

D2S v3 (по умолчанию) 1.20 288 10,3 секунды
F2s v2 0.97 233 5,8 секунды
F4s v2 1.94 466 4,0 секунды
F8s v2 3.88 931 3,4 секунды
H8 10.32 2467 2,9 секунды
Промо-акция H8 6.20 1488 2,9 секунды

Давайте изучим эти цифры:

  • Машина по умолчанию (D2S v2) не очень интересна: она на 30% быстрее, чем Surface Go, так что на самом деле она не стоит такой цены и проблем.
  • Машины “F”, которые являются “оптимизированными для вычислений” машинами в Azure. Начиная с “F4s”, у них также есть доступ к SSD премиум-класса и ускоренной сети, так что при обновлении вы получаете больше, чем просто мощность процессора.
  • Машины “H” предназначены для “высокопроизводительных вычислений”, поэтому в основном у них лучшие процессоры, чем у машин “F”. Однако они намного дороже, и, как мы видели ранее, мы не так сильно зависим от процессора. В настоящее время на некоторых из них действует “Промо”, что делает их цену более привлекательной, и в этом случае они могут стать интересной альтернативой машинам “F”.

В результате действительно кажется, что машины “F” – лучшее предложение. Я бы лично использовал либо F4s v2, либо F8s v2 и использовал функцию “изменить размер” для переключения в зависимости от моих потребностей. Поскольку у меня есть подписка на MSDN, я получаю кредиты Azure на 130 долларов каждый месяц, так что даже промо-акция H8 может сработать!

Заключение и мысли

Очевидно, что запуск нашего приложения на машинах типа “F” намного быстрее, чем на Surface Go, по разумной цене. Кроме того, мы можем “изменять размер” и отключать эти машины, чтобы адаптироваться к требуемым нам затратам и производительности.

Для консалтинговых компаний и фрилансеров, я полагаю, здесь есть очень привлекательная альтернатива обычному Macbook Pro за 2500 долларов, который в настоящее время покупают все:

  • Первоначальная стоимость очень дешевая (около 500 долларов), поэтому покупка одного из них – не такое сложное решение, как в случае с MacBook Pro.
  • Это обычный расчет капитальных затрат и операционных затрат, который мы проводим с помощью облака: как консультант, я бы предпочел не тратить эти 2500 долларов, когда начинаю свой бизнес, а тратить несколько долларов каждый день, в зависимости от моей оплачиваемой работы.
  • Я полагаю, что эти несколько долларов в день можно было бы выставлять клиентам: это стоит недорого (по сравнению с тем, сколько консультанты тратят на свое время!), экономит время на посадке людей и обеспечивает лучшую безопасность (код не копируется на ноутбуке каждого).).

Оригинал: “https://dev.to/azure/developing-10x-faster-with-a-surface-go-thanks-to-vs-code-and-azure-mho”