M365Con 2027 – бесплатная онлайн-конференция · 11–22 Jan 2027 · 120 sessions→ m365con.net

Блог · Mirko Peters

Почему команды Azure наконец отказываются от шаблонов ARM в пользу Bicep

By ·

Добро пожаловать обратно, архитекторы облачных решений и разработчики! Если вы достаточно долго управляете инфраструктурой в Microsoft Azure, то, скорее всего, вам приходилось бессмысленно смотреть на огромную стену JSON и гадать, где пропущена кавычка или лишняя фигурная скобка…

Automatically translated with AI from the original post. Read the English original

Добро пожаловать обратно, архитекторы облачных решений и разработчики! Если вы достаточно долго управляете инфраструктурой в Microsoft Azure, то, скорее всего, вам приходилось бессмысленно смотреть на огромную стену JSON и гадать, где пропущена кавычка или лишняя фигурная скобка. Многие годы шаблоны Azure Resource Manager (ARM) были безоговорочным стандартом инфраструктуры как кода (IaC) в Azure. Но по мере роста облачных сред и повышения важности совместной работы команд неудобства написания JSON вышли на первый план. Сегодня в отрасли происходит значительный сдвиг: команды Azure повсеместно отказываются от ARM-шаблонов в пользу Bicep. В этом подробном разборе мы рассмотрим основные трудности, с которыми сталкиваются разработчики при работе со сложными ARM-шаблонами на основе JSON, покажем, как Bicep предлагает более удобную и простую альтернативу, и обсудим практические стратегии, которые помогут вашей команде без проблем перейти на новый подход.

Если вам понравился этот разбор и вы хотите послушать аудиообсуждения, экспертные мнения и реальные истории внедрения, обязательно послушайте наш специальный выпуск подкаста ARM Templates vs Bicep: Why Azure Teams Are Switching. А теперь разберём всё, что нужно знать об этом революционном сдвиге в управлении облачной инфраструктурой.

Главное

  • Шаблоны ARM могут быть сложными и трудными в управлении, что вызывает раздражение у разработчиков.
  • Bicep предлагает упрощённый синтаксис, который снижает количество ошибок и повышает производительность.
  • Модульность в Bicep позволяет создавать повторно используемые компоненты, что делает управление инфраструктурой проще.
  • Улучшенная поддержка инструментов в Bicep, например проверка ошибок в реальном времени, ускоряет процесс разработки.
  • Переход на Bicep может существенно сократить затраты инженерных часов и улучшить совместную работу команды.
  • Оцените текущее использование шаблонов ARM, чтобы спланировать эффективную миграцию на Bicep.
  • Следуйте лучшим практикам, таким как понятные соглашения об именовании и безопасные значения по умолчанию, чтобы улучшить работу с Bicep.
  • Переход на Bicep может привести к более эффективному управлению облачной инфраструктурой и меньшему количеству ошибок при развёртывании.

Ограничения шаблонов ARM

ARM Template Limitations

Сложность и крутая кривая обучения

Шаблоны ARM часто имеют крутую кривую обучения для разработчиков. Использование синтаксиса JSON затрудняет чтение и управление. Многие пользователи чувствуют себя перегруженными тонкостями языка. Для сравнения, такие инструменты, как Terraform, используют HCL, который более удобен для пользователя. Эта разница в синтаксисе может существенно влиять на вашу способность эффективно управлять изменениями инфраструктуры.

  • Шаблоны ARM могут приводить к дрейфу конфигурации, что усложняет устранение неполадок.
  • Сложность нарастает по мере масштабирования развёртываний, что затрудняет поддержание согласованности.

Также вы можете заметить, что шаблоны ARM ограничены Azure, тогда как Terraform поддерживает несколько облачных платформ. Эта гибкость позволяет разработчикам легче переходить между провайдерами, что улучшает их общий опыт.

Сложности сопровождения

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

  • Выбор инструментов по популярности, а не по операционной пригодности, может привести к осложнениям.
  • Игнорирование требований соответствия до внедрения усложняет управление.
  • Скрытая сложность, например управление состоянием, может затруднять сопровождение.
  • Разрастание шаблонов часто возникает из-за попыток использовать один инструмент для множества задач, что создаёт хрупкие рабочие процессы.

Эти проблемы могут привести к росту долгосрочных затрат и раздражению. При работе с шаблонами ARM отсутствие чёткой структуры может затруднять внесение изменений без появления ошибок.

Отсутствие модульности

Одно существенное ограничение ARM-шаблонов — отсутствие настоящей модульности. Из-за этого сложнее создавать повторно используемые компоненты. Вы можете оказаться в ситуации, когда код копируется из проекта в проект, что со временем приводит к избыточности и росту затрат.

  • Управление зависимостями между шаблонами может усложнить развёртывание и повысить риск ошибок.
  • Совместная работа над большими JSON-шаблонами часто приводит к конфликтам, и поддерживать такой код становится трудно.

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

Подверженность ошибкам из-за синтаксиса

ARM-шаблоны часто становятся источником неприятностей из-за подверженного ошибкам синтаксиса. Вы можете столкнуться с различными синтаксическими ошибками, которые способны сорвать развёртывание. Такие ошибки часто возникают из-за сложности выражений в шаблонах, где есть тонкие элементы вроде кавычек, фигурных скобок и функций. Распространённое сообщение об ошибке, с которым вы можете столкнуться, — «Deployment template validation failed», что указывает на синтаксическую проблему, требующую вашего внимания.

Вот некоторые из наиболее частых синтаксических ошибок, с которыми вы можете столкнуться при работе с ARM-шаблонами:

  • Ошибки валидации: возникают, когда шаблон не соответствует требуемой схеме.
  • Недопустимые значения параметров: вы можете передать значения, которые не соответствуют ожидаемым типам или форматам.
  • Циклические зависимости: возникают, когда ресурсы зависят друг от друга так, что образуется цикл.

Сложность ARM-шаблонов может приводить к ошибкам, которые трудно обнаружить. Например, вы можете запутаться во вложенных функциях или в неправильно оформленном JSON. Такие проблемы приводят к ошибкам недопустимого шаблона, отлаживать которые бывает непросто. Конкретные сообщения об ошибках, например «InvalidTemplate», помогут найти причину, но для их интерпретации часто требуется глубокое понимание структуры шаблона.

В отличие от этого, Bicep упрощает процесс написания кода. Его синтаксис более понятен и снижает вероятность ошибок. Более строгая схемная валидация Bicep помогает выявлять проблемы на раннем этапе, что приводит к меньшему количеству ошибок при развёртывании. При переходе с ARM-шаблонов на Bicep вы можете обнаружить существующие проблемы в ARM-шаблонах, которые Bicep поможет прояснить. Этот переход не только улучшает процесс написания кода, но и повышает общую точность развёртываний.

Переходя на Bicep, вы снижаете риски, связанные с подверженным ошибкам синтаксисом ARM-шаблонов. Такой переход позволяет сосредоточиться на построении надёжной инфраструктуры, не тратя время на сложный синтаксис.

Преимущества Azure Bicep

Advantages of Azure Bicep

Упрощённый синтаксис

Bicep предлагает упрощённый синтаксис, который заметно улучшает процесс написания кода. Вы заметите, что вложенного JSON становится меньше, а строк кода — меньше. Благодаря этому вы можете сосредоточиться на проектировании инфраструктуры, а не на разборе запутанного синтаксиса. Вот некоторые конкретные преимущества синтаксиса Bicep:

  • Он предоставляет встроенную поддержку VS Code от Microsoft с проверкой ошибок в реальном времени, что улучшает процесс написания кода.
  • Вы можете реализовывать условия и циклы без повторяющегося кода, что делает шаблоны чище.
  • Bicep поддерживает композицию модулей с типизированными параметрами, что позволяет повторно использовать код.
  • Вы можете выполнять развёртывания «what-if», чтобы просмотреть изменения до их применения.
  • Bicep позволяет ссылаться на существующие ресурсы за пределами текущего развёртывания, что упрощает рабочий процесс.

Все эти возможности в совокупности повышают вашу продуктивность при развёртывании ресурсов Azure.

Улучшенная читаемость

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

  • Bicep абстрагируется от сложных деталей развёртывания и позволяет задавать параметры, которые повышают возможность повторного использования кода участниками команды.
  • Использование параметров включает декораторы, которые описывают параметр и задают ограничения на допустимые значения.
  • В отличие от этого, шаблоны ARM часто описывают как громоздкие и сложные, что затрудняет их сопровождение.

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

Улучшенная модульность

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

  • Bicep поддерживает модульный дизайн, позволяя создавать повторно используемые компоненты, которые можно применять в разных проектах.
  • Такой подход способствует единообразию и сокращает дублирование, упрощая управление сложной инфраструктурой.
  • Вы можете легко управлять зависимостями между модулями, что помогает поддерживать чистую и упорядоченную кодовую базу.
ПреимуществоОписание
Повторное использование кодаBicep поддерживает модульный дизайн, позволяя разработчикам создавать повторно используемые компоненты.
ЕдинообразиеМодули можно применять в разных проектах, что способствует единообразию и сокращает дублирование.
Упрощённое управлениеТакой модульный подход упрощает управление сложной инфраструктурой.

Используя модульность Bicep, вы можете улучшить процесс развёртывания и обеспечить сопровождаемость и масштабируемость вашей инфраструктуры как кода.

Лучшая поддержка инструментов

Bicep предлагает лучшую поддержку инструментов, чем шаблоны ARM, что улучшает общий опыт разработки. Интеграция Bicep с популярными инструментами, такими как Azure DevOps и Visual Studio Code, даёт существенные преимущества. Вот некоторые ключевые преимущества:

  • Лаконичный синтаксис: синтаксис Bicep проще и более модульный. Это делает написание и управление кодом инфраструктуры понятнее по сравнению со сложностью шаблонов ARM.
  • Богатые возможности в Visual Studio Code: при использовании Bicep с Visual Studio Code вам доступны такие функции, как IntelliSense, которая предлагает подсказки кода по мере ввода. Это помогает избегать ошибок и ускоряет процесс разработки.
  • Проверка типов и синтаксиса: Bicep гарантирует, что код соответствует правильным типам и форматам. Такая проверка снижает вероятность сбоев развёртывания из-за синтаксических ошибок, которые характерны для шаблонов ARM.

В следующей таблице приведены улучшения поддержки инструментов, которые Bicep предлагает по сравнению с шаблонами ARM:

АспектОписание
НазначениеБыстро показать сложность развёртывания для лучшего понимания и сопровождения.
ПреимуществаПомогает выявлять сильные стороны и пробелы в знаниях внутри команд, что потенциально повышает успешность развёртываний.
Факторы сложностиУчитывает различный уровень знаний отдельных специалистов в разных командах и проектах.

Кроме того, Bicep позволяет задавать больше параметров конфигурации в одном развёртывании. Вы можете легко добавлять блокировки и назначения ролей, что упрощает процесс по сравнению с шаблонами ARM. Такая гибкость помогает эффективнее управлять ресурсами Azure.

Bicep против шаблонов ARM: реальные проблемы

Примеры сбоев

Многие организации сталкивались с серьёзными трудностями при использовании шаблонов ARM. Например, крупное финансовое учреждение пережило критический простой из-за неверно настроенного шаблона ARM. Инцидент привёл к простою более 12 часов и существенным финансовым потерям. Организация оценила последствия следующим образом:

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

Эти сбои наглядно показывают риски, связанные с шаблонами ARM, и необходимость в более надёжном решении, например Azure Bicep.

Отзывы команд

Команды разработки делятся положительным опытом перехода с шаблонов ARM на Bicep. Многие отмечают значительное улучшение рабочих процессов. Вот несколько ключевых моментов из их опыта:

  • Переход на Bicep позволил сократить на 50% время инженеров, затрачиваемое на разработку шаблонов.
  • Время, которое клиенты тратили на устранение сбоев в работе средств контроля безопасности, сократилось до нуля.
  • Более 1100 пользователей получили удобный доступ к последним версиям шаблонов, что улучшило совместную работу.
  • Шаблоны с безопасностью по умолчанию значительно снизили опасения клиентов по поводу настроек безопасности.

Этот опыт подчёркивает преимущества Bicep по сравнению с традиционными шаблонами ARM.

Распространённые ошибки

Миграция на Bicep может улучшить управление инфраструктурой, но при этом вы можете столкнуться с несколькими распространёнными ошибками. Вот список проблем, на которые стоит обратить внимание во время перехода:

  1. Проверьте версии API ресурсов, чтобы убедиться, что используется самая актуальная версия API.
  2. Просмотрите рекомендации линтера в новом файле Bicep и внесите улучшения.
  3. Пересмотрите параметры, переменные и символические имена, чтобы они соответствовали принятым соглашениям об именовании.
  4. Упростите выражения, которые не используют возможности Bicep в полной мере.
  5. Проверьте объявление дочерних и расширяющих ресурсов на правильность способов объявления.
  6. Разбейте сложные шаблоны на модули Bicep для лучшей организации.
  7. Добавляйте комментарии и описания, чтобы улучшить документирование кода.
  8. Следуйте рекомендациям по работе с Bicep, чтобы обеспечить качество и удобство поддержки кода.

Зная об этих ошибках, вы сможете лучше подготовиться к плавному переходу с шаблонов ARM на Bicep.

Стратегии миграции на Bicep

Оценка текущего использования

Прежде чем мигрировать с шаблонов ARM на Azure Bicep, необходимо оценить текущее использование. Эта оценка поможет понять, что у вас есть и что нужно изменить. Вот несколько шагов, которые помогут в этом:

  • Проверьте код инфраструктуры, чтобы выявить зависимости от шаблонов ARM.
  • Подсчитайте количество поддерживаемых вами шаблонов ARM и оцените их сложность.
  • Ищите повторяющиеся шаблоны или пользовательские скрипты, которые взаимодействуют со службами Azure.
  • Оцените опыт вашей команды работы с ARM и другими инструментами Infrastructure as Code (IaC).

Эта оценка даст чёткое представление о текущей конфигурации и поможет эффективно спланировать миграцию.

Пошаговая миграция

Миграция на Bicep предполагает структурированный подход. Следуйте этим шагам, чтобы обеспечить плавный переход:

  1. Используйте команду bicep decompile 'path to json file', чтобы преобразовать шаблон ARM в файл Bicep.
  2. Если декомпиляция не работает для сложных шаблонов, воспользуйтесь веб-приложением Bicep Playground: загрузите JSON-файлы и просмотрите соответствующий файл Bicep.
  3. При ручном преобразовании убедитесь, что понимаете, как построить файл Bicep с использованием параметров, переменных, ресурсов и выходных данных.

Следуя этим шагам, вы сможете systematically мигрировать шаблоны ARM на Bicep и снизить риск ошибок в процессе.

Инструменты и ресурсы

Несколько инструментов помогут вам в процессе миграции. Вот некоторые рекомендуемые инструменты миграции:

  • ARM test toolkit: этот инструмент проверяет, соответствуют ли ваши шаблоны ARM рекомендуемым практикам, и выдаёт предупреждения о возможных улучшениях.
  • Операция what-if: эта операция позволяет предварительно оценить влияние шаблона перед развёртыванием, что помогает подготовиться к миграции.

Использование этих инструментов миграции поможет упростить переход на Azure Bicep и сохранить рекомендуемые практики на всех этапах процесса.

Оценив текущее использование, следуя пошаговому плану миграции и используя подходящие инструменты, вы сможете успешно перейти на Azure Bicep. Эта миграция не только упрощает управление инфраструктурой, но и повышает продуктивность вашей команды.

Лучшие практики внедрения

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

  • Используйте понятные соглашения об именовании: выбирайте описательные имена для объявлений параметров. Такой подход повышает читаемость кода и помогает членам команды быстро понять назначение каждого параметра.

  • Разумно используйте параметры и переменные: применяйте параметры для настроек, которые могут меняться от развертывания к развертыванию. Переменные оставляйте для статичных значений, которые не меняются. Такое разделение упрощает код и облегчает его сопровождение.

  • Задавайте безопасные значения по умолчанию: убедитесь, что значения по умолчанию безопасны и экономически эффективны. Это снижает риск непредвиденных расходов при развертываниях.

  • Добавляйте описания для параметров: включайте понятные описания для каждого параметра. Четкие пояснения раскрывают их назначение и помогают пользователям делать правильный выбор.

  • Избегайте избыточной вложенности: сводите вложенность ресурсов к минимуму. Избыточная вложенность запутывает и затрудняет чтение кода. По возможности стремитесь к плоской структуре.

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

Переходя на Bicep, помните: главная цель — упростить работу с инфраструктурой как кодом. Используйте модульность и читаемость, которые предлагает Bicep. Такой переход поможет вам эффективнее создавать надежные облачные среды.


Итак, переход от шаблонов ARM к Azure Bicep даёт множество преимуществ. Вы можете упростить управление инфраструктурой благодаря понятному синтаксису Bicep и улучшенной модульности. Этот переход устраняет сложности, которые для многих разработчиков были главным недостатком шаблонов ARM. Внедряя Azure Bicep, вы повышаете эффективность и результативность своей команды. Примите эти изменения, чтобы упростить развертывания и сократить количество ошибок. Будущее управления облачной инфраструктурой уже наступило, и пора им воспользоваться.

Часто задаваемые вопросы

Что такое Azure Bicep?

Azure Bicep — это предметно-ориентированный язык, который упрощает создание шаблонов Azure Resource Manager (ARM). Он предлагает более понятный синтаксис и лучшую читаемость, что упрощает управление инфраструктурой как кодом.

Как Bicep повышает точность развертываний?

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

Можно ли использовать Bicep вместе с существующими шаблонами ARM?

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

Какие преимущества дает модульность в Bicep?

Модульность в Bicep позволяет создавать повторно используемые компоненты. Это обеспечивает согласованность, сокращает дублирование кода и упрощает совместную работу в команде, улучшая общую организацию проекта.

Как начать миграцию на Bicep?

Начните с оценки текущих шаблонов ARM. Определите зависимости и уровень сложности, а затем следуйте структурированному плану миграции. Для декомпиляции шаблонов ARM в файлы Bicep используйте такие инструменты, как Bicep Playground.

Подходит ли Bicep для крупных проектов?

Безусловно! Модульная архитектура Bicep и улучшенная читаемость делают его идеальным выбором для крупных проектов. Вы сможете эффективнее управлять сложными инфраструктурами, обеспечивая масштабируемость и удобство сопровождения.

Где найти материалы для изучения Bicep?

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

Какие инструменты поддерживают разработку на Bicep?

Bicep хорошо интегрируется с Visual Studio Code и предлагает такие возможности, как IntelliSense и проверка ошибок в реальном времени. Эти инструменты повышают удобство разработки и упрощают рабочий процесс.


🎧 Послушайте этот выпуск

Хотите практическое объяснение различий между ARM Templates и Bicep? В этом выпуске тема разобрана простым языком и показано, почему она важна для Microsoft 365, Azure, Power Platform, безопасности, ИИ и современной работы.

Послушайте этот выпуск, если хотите:

  • Разобраться в ключевых концепциях, стоящих за ARM Templates и Bicep
  • Понять, как это вписывается в более широкую экосистему технологий Microsoft
  • Узнать, где это может принести практую пользу вашей организации

Вам также могут понравиться связанные выпуски M365 FM:

Откройте для себя больше практичных разговоров о технологиях Microsoft на M365 FM.

Последнее обновление: июль 2026.

Кому стоит послушать

Этот выпуск предназначен для практиков Microsoft, архитекторов, разработчиков, специалистов по безопасности и ИТ-руководителей, которые оценивают эту тему в реальных условиях.

🎧 Также рекомендуем послушать

  • Bicep — Логичный следующий шаг, который добавляет практический контекст к этой теме.
  • Infrastructure as Code — Логичный следующий шаг, который добавляет практический контекст к этой теме.
  • Azure Resource Manager — Логичный следующий шаг, который добавляет практический контекст к этой теме.

Entities in this article

Bicep JSON ARM template Infrastructure as code Microsoft Azure Azure Resource Manager Terraform Visual Studio Code Azure Functions Configuration drift

Related articles

RSS