Pull to refresh

Начните с Google Go в Azure

Reading time 5 min
Views 3.8K
Привет, Хабр! Представляю вам перевод статьи «Get started with Google Go in Azure».

Microsoft предоставляет разработчикам Go набор Azure SDK для Visual Studio, Azure Stack и непосредственно Azure.

Для языка, предназначенного для программирования на системном уровне, язык Google Go (Golang) на удивление популярен. В его разработке принимали участие многие разработчики С, возможно поэтому он завоевал репутацию инструмента для разработки низкоуровневых систем, в том числе многих, используемых на Azure. Если вы запустили контейнер Docker, активировали любую услугу Azure Kubernetes или использовали Open Service Broker, вы используете код, написанный на Go.

Хотя разработка Go началась в Google, теперь это проект с открытым исходным кодом с широко распространенной командой разработчиков. Недавние сотрудники отдела защиты интересов облачных разработчиков Azure привлекли в Microsoft несколько ключевых игроков, где они продолжают работать над Go и связанными с ними проектами. Microsoft также работает с другими компаниями, которые используют Go, например Hashicorp, чей инструмент Terraform для многоуровневой инфраструктуры, помогает управлять развертываниями контейнеров Azure.

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

Поскольку Go позволяет каналам использоваться более чем двумя процессами, вы можете быстро построить сложные параллельные архитектуры, которые позволяют приложениям Go поддерживать многие знакомые шаблоны микросервисов. Процессы реализуются как goroutines, которые легко запускаются. Большое Go приложение может содержать сотни или даже тысячи goroutines в любое время.

С этой комбинацией функций неудивительно, что Microsoft недавно выпустила Go SDK для Azure с инструментами для связывания кода Go с базовыми Azure-сервисами, а также для управления ресурсами Azure. Доступный из репозитория Github, его легко добавить в среду разработки, особенно если вы используете популярное расширение Go для Visual Studio. Все, что вам нужно, это компилятор Go и командная строка.

Начало работы с Go в Azure


Одним из превосходных вариантов для начала — является свободно распространяемое расширение Go для Visual Studio от Microsoft. Благодаря поддержке встроенного терминала, который дает доступ как к командной строке Windows, так и к Windows Subsystem для Linux (WSL), вы можете работать с кодом Go в редакторе, используя терминал для проверки кода. Загрузка и установка занимает несколько минут.После запуска установщика, все, что нужно сделать, это создать каталог исходного кода Go. Затем быстрый «Hello World», и можно приступать к разработке.

Установка Azure SDK для Go достаточно проста с при помощи собственных go get инструментов Go. Все, что нужно, это URL-адрес репозитория SDK на Github; Следующим этапом нужно установить любые зависимости, которые могут вам понадобиться. Для работы с хранилищем Azure существует отдельный SDK, поэтому, если вы планируете использовать Go с Azure Blobs, вам также необходимо установить его. После того, как все будет установлено, вам нужно будет добавить модули, необходимые для работы со службами Azure, включая инструменты для управления аутентификацией. Корпорация Майкрософт рекомендует также установить интерфейс Azure CLI, который может выполняться локально как образ Docker или через оболочку Azure Cloud. Если вы используете Visual Studio, вы получите доступ к интерфейсу Azure CLI через расширение Azure Tools.

Использование Azure SDK для Go


После того, как вы установили и настроили все, вы можете начать писать код Go для управления сервисами Azure. Важное предупреждение: первая часть образца кода в документации Microsoft требует, чтобы вы добавляли данные аутентификации в структуру в исходном коде и затем компилировали. Это плохая идея — если вы создаете новые службы, вероятно, разумно хранить эту информацию вне исходного кода, особенно если вы используете GitHub или аналогичный инструмент для управления версиями.

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

Microsoft Azure SDK является всеобъемлющим, имея в своем арсенале инструменты для работы со службой управления ресурсами ARM, интеграции Go с сервисами машинного обучения Azure, мониторинга потребления услуг, управления хранилищами и аналитики. И если служба, которую вы хотите использовать с Go, еще не существует, скорее всего, она будет добавлена в ближайшее время.

На практике большая часть вашего кода Go будет обрабатывать задачи управления системами, возможно, в нескольких учетных записях Azure и регионах, все из которых контролируются скриптами. Вы будете писать код, который берет входные данные из внешних источников, таких как командная строка или из среды управления, особенно если вы вызываете приложения Go изнутри Kubelet или из Azure CLI. ВЫ можете использовать его в качестве основы для собственных автоматических инструментов облачного управления.

Протоколирование и отладка


Когда ваш код работает под управлением скриптов или как часть структуры управления службами, переключается автоматически — вам необходимо включить протоколирование. Go включает в себя собственный пакет протоколирования. В него включено протоколирование общих действий, включая неустранимые ошибки. Неустранимая ошибка приведет к записи сообщения об ошибке и последующему автоматическому завершению работы программы. Записи журнала автоматически помечаются меткой времени, и вы можете применить выборку вплоть до микросекунды. Несколько goroutines могут совместно использовать один файл журнала, поэтому вы можете отследить весь процесс.

Microsoft также предоставляет инструменты для интеграции кода Go с Application Insights. Используя Application Insights, вы можете объединить информацию мониторинга из всего вашего кода в одно место, что может помочь отлаживать взаимодействия между вашими управляемыми приложениями, вашим кодом и ресурсами Azure.

Навыки программирования в Go переносимы между Windows и Unix, что делает их идеальными для все более гибридного Azure от Microsoft. Поддерживая язык, используемый для создания многих своих новых инструментов с открытым исходным кодом, есть также возможность улучшить инструменты управления, используя Go связать Azure Portal с Kubernetes или Docker на гораздо более глубоком уровне.

Поддержка Azure для Go также доступна для Azure Stack. Код, написанный для управления публичными облачными службами, будет выполняться локально, поддерживая автоматизацию гибридных облачных инфраструктур. Код, запускающий локальные контейнеры или экземпляры виртуальных машин, может затем перемещать рабочие нагрузки в общедоступное облако, когда требуются дополнительные ресурсы, расширяя внутренние операции, сохраняя при этом затраты минимальными.
Tags:
Hubs:
+8
Comments 3
Comments Comments 3

Articles