IT Partner

Золотой партнер Microsoft с 2006 года

Инновационные инструменты для разработки приложений на Microsoft Azure

 , , ,

Владимир занимается разработкой программного обеспечения в американской компании One Identity. Антон в Awara IT занимается задачами, связанными с Microsot Azure. Вместе они рассказали о том, что такое Azure DevOps и как организовать полный цикл разработки с помощью удобной платформы, в том числе с использованием Azure Cybernetic Services.

Материал подготовлен по итогам встречи трех специалистов:

Крисюк Игорь, директор по акселерации IT кластера Фонда «Сколково»

Владимир Гусаров, One Identity, Microsoft Most Valuable Professional, Azure DevOps

Антон Масягин, ведущий архитектор компании Awara IT, Microsoft Most Valuable Professional

DevOps – сообщество людей, процессов, продуктов, инструментов, которые позволяют приносить пользу вашим конечным пользователям. Это набор конкретных практик, правильного менталитета «внутри» разработчиков и всех людей, которые принимают участие в процессе. Все это невозможно реализовать без правильного набора инструментария, который необходим для стандартного цикла разработки (планирование, разработка, сборка, тестирование, деплоинг, поддержка работы сервиса или коробочного продукта, мониторинг).

Компании по разработки ПО, которые не используют практики DevOps, по сути, обречены на смерть. Их вытесняют с рынка другие компании. DevOps способствует достижению бизнес-целей без потерь. Главные преимущества DevOps: деплоинг чаще в 46 раз, стоимость простоя дешевле в 7 раз.


Рис. 1

Чем полезен Azure DevOps?

Гибкая инфраструктура: можно пользоваться разными частями, всего предложено около 600 сервисов).

Широкие возможности: можно заниматься тестированием коробочного продукта в облаке или использовать масштабирование по требованию (не нужно круглый год оплачивать содержание дата-центра).
Открытость: очень много инструментария в Open Sourse (например, есть комунлайн интерфейс для автоматизации процессов).

Рис. 2

Что вам нужно для применения практик DevOps?

  1. Continuous Integration (CI): программист должен быстро собирать код и тут же выявлять любые проблемы.
  2. Continuous Deployment (CD): постоянные деплойменты и проверка того, что развертывается, перенастройка серверов, внесение изменений в инфраструктуре с обязательным сохранением версий.
  3. Continuous Learning & Monitoring: понимание, что происходит с продуктом, как пользуются вашим продуктом заказчики, потребители, насколько удобен ваш функционал.


Рис. 3

Основные компоненты Azure DevOps


Рис. 4

Azure Pipelines. Компонент позволяет собирать, компилировать, деплоить продукт. Разработкой можно заниматься на любой платформе (macOS, Linux, Windows), с любым языком программирования и клауд-системой. На маркетплэйсе есть дополнительные расширения функционала. Используется в том числе для сборки кода на GitHub. Одновременно можно собирать до 10 сервисов (jobs).

Рис. 5

Azure Boards. Используется для ведения проекта, организации планирования, треккинга, работы с досками Kanban. Здесь ведется backlog, происходит его имплементация, организовывается работа с командами. Azure Boards можно подстроить под любой процесс, отслеживать затраты времени на разработку с помощью автоматических систем.

Рис. 6

Azure Repost. Система контроля версий. Есть возможность программировать, настраивать автоматизацию, получать уведомления. Используется стандартный Git клиент. Работает семантический поиск по репозиторию.

Рис. 7

Azure Test Plans. Инструмент дает возможность проводить ручные тесты, распределять их по тестировщикам, контролировать, как они проходили, видеть историю запусков.

Рис. 8

Azure Artifacts. Хранилище пакетов. Удобно использовать для организации внутреннего хранилища в пределах компании.

Рис. 9

Помимо этих 5 компонентов в экосистеме Azure могут использоваться и другие компоненты, технологии, платформы сервисы: Applcations Inside, Puppet, TerraForm, Jenkins и прочие. Любые ресурсы контролируются службой безопасности Azure на предмет несоответствия политик и уязвимостей/

Azure DevOps в работе

Работа в Azure DevOps начинается с планирования. Слева находится панель компонентов, которые можно подключать и отключать для каждого проекта отдельно. Во вкладке Boards открываются доски для планирования. Рабочий процесс организован в виде зон на доске, где назначаются распределяются задачи (максимум до 10). Тут же есть функционал для назначения исполнителя, можно корректировать число визуальных элементов swimlane.

Рис. 10

Все компоненты на доске взаимосвязаны. К примеру, если зайти во вкладку Repos (репозиторий) и просмотреть компоненты, можно зайти в Branches и просмотреть все бранчи для устранения багов. Во вкладке Boards, прямо из меню задачи BUG, можно создавать новый бранч.

Рис. 11

Теперь при открытии на доске карточки задачи BUG будет видна ссылка на бранч. Можно просмотреть по ссылке информацию, сделать пул-реквест, а по завершении работы над кодом произойдет автоматическая линковка. После сборки прилинкуется билд, в котором был починен этот баг.

Планировать работу можно также через Boards / Backlogs, перетаскивая задачи. Есть привязка к фитчам. Через Boards / Sprints можно удобно планировать работу для команды по спринтам, выделяя время участникам команды для разных типов активности.

Рис. 12

Главная вкладка в боковом меню компонентов Azure DevOps – это Pipelines. Внутри каждого паплайна можно просматривать, как происходила сборка. На примере показано, как сначала собирается контейнер image в виде файла «.yml», затем он помещается в контейнер Registry, и после этого его уже деплоят.

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

Azure Kubernetes Services в работе

Azure Kubernetes Services (AKS) – один из самых перспективных компонентов для Azure DevOps. AKS следует рассматривать отдельно от Kubernetes.

Рис. 13

Microsoft берет на себя обслуживание Master node (установка патчей, управление, обновление) при использовании AKS. В таком случае разработчикам не приходится отдельно выкатывать код и особо вникать в то, как работает Kubernetes.

Рис. 14

За последний год на портале Azure появились версии обновления Kubernetes, логи мониторинга, node-пулы. У AKS есть плотная интеграция с Azure Active Directory для внедрения решений безопасности. Если нужно оградить доступ к Kubernetes, можно использовать такой алгоритм: с помощью сервиса Azure Container Instances пуллить докер-образ из Registry, и контейнер запускается. Часть нагрузки выносится за пределы Kubernetes кластера.

Рис. 15

Внутри Azure уже есть Azure DevOps, Container Registry, кластер AKS. Плюс в Azure работает свой сервис мониторинга.

Рис. 16

С недавних пор появился Windows Server Container, с помощью которого можно поднять приложения Windows для их работы в AKS.

Можно организовать 2 кластера в рамках одного дата-центра (одном регионе). Балансировщик Traffic Manager внутри Azure, который маршрутизирует сам ваш трафик. Благодаря этому приложение может быть доступным за миллисекунды из разных точек мира. Можно также использовать балансировку других служб. Azure Files предлагается использовать в качестве сетевого хранилища для Kubernetes.

Рис. 17

Ничего не мешает пользователю продолжать использовать привычные инструменты (Puppet, TerraForm, Jenkins и другие) вместо компонентов Azure. Даже консоль Azure работает на Powershell в Linux. В облаке SLA можно подымать от 99,95% до 99,99999%.

Пример сборки

Для создания рабочего сайта (приложения) нам нужны:
  1. Сборка JavaScript;
  2. Web-сервис, который будет отображать этот код JavaScript, HTML;
  3. Конечная точка, к которой пользователь сможет подключиться для просмотра сайта.
    AKS создается как одна строка в консоли. На портале Microsoft Azure Кубер выглядит как одна запись. В Kubernet Services представлены все его элементы и параметры:
    • версия, доступ к IP-адресу, внутренняя сеть подов;
    • просмотр наших нэймспейсов;
    • описание сервиса и входящего трафика;
    • хранилища;
    • нод пулы (nod pools);
    • конфигурации;
    • масштабирование;
    • Dev Spaces – для разработки и выкатки внутри вашего кластера без влияния на всю продакшн-систему.

Рис. 18

API Kubernetes напрямую связано с порталом Azure. На примере мы выполняем такие шаги:
  1. Поднимаем Kubernetes.
  2. Отправляем JS-код в репозитарий Azure DevOps.
  3. Создаем Dockerfile на основе базового образа нодовского контейнера и копируем все внутрь контейнера. Внутри этого же контейнера у нас находится ngnix (создаем endpoint внутри ngnix).
  4. Далее мы переходим к сборке контейнера – создаем паплайн.
  5. Отправляем контейнер в хранилище репозитария в Azure.
  6. Выкатываем на AKS. Мы берем код из репозитория (контейнер из Docker Registry) и создаем таск по развертыванию контейнера в Kubernetes.

Рис. 19

Особенности работы с Enviroment

В Azure DevOps есть вкладка Enviroment – виртуальная условность, в которую можно добавлять ресурсы, устанавливать апрувы. В Enviroment можно смотреть, кто деплоил приложение, какие сервисы работают в этом Enviroment, отлаживаться, не заходя в Kubernetes, посмотреть все логи. При создании таких Enviroment нет потребности создавать и хранить пароли.

Общие итоги

Azure DevOps использует в том числе и сама компания Microsoft для разработки и сборки операционной системы Windows. 5 сервисов Azure предлагается использовать как основные для Azure DevOps, особенно в сочетании с Kubernetes.