Почему команды Azure наконец отказываются от шаблонов ARM
By Mirko Peters ·
Годами инженеры и разработчики, работающие с Microsoft Azure, сталкивались с неоднозначной реальностью при внедрении Infrastructure as Code (IaC). С одной стороны, шаблоны Azure Resource Manager (ARM) давали собственный и мощный способ надёжно развёртывать и управлять облачной инфраструктурой. С другой стороны, писать и поддерживать эти шаблоны означало бороться с громоздкими JSON-файлами, глубоко
Automatically translated with AI from the original post. Read the English original

Годами инженеры и разработчики, работающие с Microsoft Azure, сталкивались с неоднозначной реальностью при внедрении Infrastructure as Code (IaC). С одной стороны, шаблоны Azure Resource Manager (ARM) давали собственный и мощный способ надёжно развёртывать и управлять облачной инфраструктурой. С другой стороны, писать и поддерживать эти шаблоны означало бороться с громоздкими JSON-файлами, глубокой вложенностью, раздутой структурой кода и болезненными конфликтами слияния каждый раз, когда кто-то из команды менял репозиторий. Если вы хотя бы раз тратили часы на поиск неверно расставленной скобки или невидимой запятой в тысячестрочном JSON-документе, вы хорошо знаете, что такое раздражение при традиционных развёртываниях в Azure.
К счастью, ландшафт облачных технологий развивается. Команды Azure постепенно отказываются от «сырых» шаблонов ARM в пользу Bicep — более чистого и удобного для человека языка, специально предназначенного для описания инфраструктуры. Он скрывает неудобства JSON, не жертвуя при этом надёжностью Azure Resource Manager. В этом подробном руководстве мы разберём, почему происходит этот переход, как Bicep устроен внутри и почему переход может сократить объём кода инфраструктуры до 60%.
Введение в усталость от шаблонов ARM
Чтобы понять, почему Bicep так быстро завоевал сообщество Azure, сначала нужно разобраться в первопричине усталости от шаблонов ARM. Когда Azure впервые популяризировала развёртывание на основе шаблонов, JSON был универсальным стандартом обмена данными. Однако JSON никогда не задумывался как язык программирования или инструмент описания инфраструктуры. По мере того как облачные среды росли и усложнялись, ограничения JSON стали очевидны.
Сложность при традиционных шаблонах ARM растёт экспоненциально. Типичное корпоративное развёртывание с виртуальными сетями, подсетями, Key Vault и управляемыми удостоверениями быстро превращается в раздутые файлы на тысячи строк. Поскольку JSON изначально не содержит конструкций циклов или продвинутых средств модульности, инженеры часто прибегают к сложным функциям copy и запутанной вложенности. Когда несколько участников команды пытаются работать над одним монолитным файлом шаблона, частые конфликты слияния становятся закономерностью, а не исключением. Отладка таких файлов нередко напоминает поиск иголки в стоге сена, и многие команды в итоге отказываются от автоматизации IaC в пользу подверженных ошибкам ручных действий в портале, что полностью обесценивает смысл автоматизации DevOps.
Обзор Bicep
Учитывая эти широко распространённые проблемы разработчиков, Microsoft представила Bicep как прозрачный слой абстракции над шаблонами ARM. Bicep не заменяет Azure Resource Manager; скорее, это более умный и лаконичный способ взаимодействия с ним. Всё, что можно сделать в шаблоне ARM, можно сделать и в Bicep, но с несопоставимо меньшей когнитивной нагрузкой.
В основе Bicep лежит упрощённый синтаксис, который читается почти как обычный английский текст. Он убирает синтаксический шум JSON — забудьте о бесконечных кавычках, скобках и запятых — и заменяет его понятными декларативными объявлениями. Поскольку Bicep является компилируемым языком, ваш код выступает источником истины, который на этапе развёртывания транспилируется в стандартный JSON ARM. Такая архитектура обеспечивает 100% совместимость с базовым механизмом развёртывания Azure и существенно улучшает повседневный опыт разработчика.
Как работает Bicep
Понимание устройства Bicep помогает понять, как он соединяет удобочитаемость для человека с исполнением машиной. Когда вы пишете инфраструктурный код на Bicep, вы создаёте файлы с расширением .bicep. Эти файлы используют предметно-ориентированный язык, оптимизированный именно для развёртывания ресурсов Azure.
Процесс устроен на удивление просто:
- Создание: Вы создаёте и редактируете файлы
.bicepлокально в современных интегрированных средах разработки, например Visual Studio Code, которая предлагает IntelliSense, проверку синтаксиса и линтинг в реальном времени. - Компиляция: С помощью команды Bicep CLI
bicep build main.bicepваш код компилируется в стандартный шаблон ARM в формате JSON. - Развёртывание: Полученный шаблон вы развёртываете непосредственно в Azure с помощью Azure CLI или Azure PowerShell, как и раньше.
Этап компиляции гарантирует, что базовый механизм развёртывания Azure остаётся без изменений, а значит, корпоративные политики, элементы управления доступом на основе ролей и проверки безопасности развёртывания продолжают работать без сбоев.
Преимущества Bicep
Переход от шаблонов ARM на основе JSON к Bicep даёт инженерным командам немедленную и измеримую отдачу. Прежде всего это заметное сокращение объёма кода. Команды регулярно сообщают о сокращении кода на 50–60 %, а значит, строк нужно меньше писать, проверять и поддерживать.
Кроме того, Bicep существенно упрощает совместную работу команд. Благодаря возможности разбивать описания инфраструктуры на небольшие повторно используемые модули разные участники могут параллельно работать над отдельными компонентами архитектуры и не мешать друг другу. Управление версиями становится заметно чище, код-ревью занимает минуты вместо часов, а подключение новых инженеров к облачным проектам превращается в простой процесс, а не в суровое испытание.
Начало работы с Bicep
Начать работу с Bicep очень просто, ведь Bicep CLI компактен и напрямую интегрирован с Azure CLI. Развернуть среду на Windows, macOS или Linux можно буквально за несколько минут.
Для начала убедитесь, что у вас установлены Azure CLI и Visual Studio Code. Установите официальное расширение Bicep для VS Code, чтобы получить такие возможности, как автодополнение кода, проверка параметров и автоматическое определение типов ресурсов. После настройки первый ресурс, например учётную запись хранения Azure или виртуальную сеть, описывается всего несколькими аккуратными строками кода вместо десятков строк громоздкого шаблонного JSON.
Сценарии использования Bicep
Bicep особенно эффективен в двух крупных корпоративных сценариях: при построении базовой инфраструктуры как кода и при развёртываниях в нескольких средах.
В стандартных конвейерах IaC Bicep легко интегрируется с платформами CI/CD, такими как GitHub Actions и Azure DevOps, обеспечивая полностью автоматизированные, воспроизводимые развёртывания, которые исключают расхождение конфигураций. Для архитектур с несколькими средами, например разработки, тестирования, предпродуктовой и производственной, поддержка параметров и модульных шаблонов в Bicep позволяет вести единую стандартизированную кодовую базу и на лету подставлять специфичные для среды переменные и настройки.
Часто задаваемые вопросы
Что такое Bicep?
Bicep — это прозрачный проблемно-ориентированный язык с открытым исходным кодом, созданный Microsoft для декларативного развёртывания ресурсов Azure с более чистым синтаксисом, чем у традиционных шаблонов ARM.
Чем Bicep отличается от шаблонов ARM?
Шаблоны ARM используют многословный синтаксис JSON, который трудно читать и поддерживать, тогда как Bicep предлагает лаконичный и понятный синтаксис с развитыми средствами поддержки. Файлы Bicep компилируются в шаблоны ARM перед развёртыванием.
Можно ли преобразовать существующие шаблоны ARM в Bicep?
Да! Существующие шаблоны ARM в формате JSON можно легко декомпилировать в файлы Bicep с помощью Bicep CLI, чтобы сразу воспользоваться упрощённым синтаксисом.
Bicep можно использовать бесплатно?
Да, Bicep полностью бесплатен и имеет открытый исходный код, а Microsoft поддерживает его как приоритетный инструмент для управления инфраструктурой Azure.
Поддерживает ли Bicep модульность?
Безусловно. Bicep изначально создавался с поддержкой модульного построения кода, что позволяет разбивать крупные развёртывания инфраструктуры на повторно используемые и управляемые компоненты.
Отказ от устаревших шаблонов ARM уже перестал быть экспериментом для прогрессивных команд — это становится базовым стандартом эффективной и масштабируемой работы с Azure. Снижая сложность кода, улучшая совместную работу и упрощая развёртывания в нескольких средах, Bicep позволяет облачным специалистам сосредоточиться на создании качественного ПО, а не на борьбе с конфигурационными файлами.
Чтобы глубже разобраться в теме и узнать практические выводы о том, как современные команды модернизируют свои облачные стратегии, обязательно послушайте наш связанный выпуск подкаста: Bicep - Simply Explained.