Bicep이란?

Bicep은 선언적 구문을 사용하여 Azure 리소스를 배포하는 DSL(도메인 특정 언어)입니다. Bicep 파일에서 Azure에 배포할 인프라를 정의한 다음, 개발 수명 주기 전반에 걸쳐 해당 파일을 사용하여 인프라를 반복적으로 배포합니다. 리소스는 일관된 방식으로 배포됩니다.

Bicep는 간결한 구문, 신뢰할 수 있는 형식 안전성 및 코드 다시 사용에 대한 지원을 제공합니다. Bicep은 Azure에서 코드형 인프라 솔루션에 대한 최고의 제작 환경을 제공합니다.

Bicep의 이점

Bicep에서 제공하는 이점은 다음과 같습니다.

  • 모든 리소스 종류 및 API 버전 지원: Bicep은 Azure 서비스에 대한 모든 미리 보기 및 GA 버전을 즉각적으로 지원합니다. 리소스 공급자가 새 리소스 종류 및 API 버전을 도입하는 즉시 Bicep 파일에서 사용할 수 있습니다. 새 서비스를 사용하기 전에 도구가 업데이트될 때까지 기다릴 필요가 없습니다.

  • 단순 구문: 동등한 JSON 템플릿과 비교할 때 Bicep 파일은 더 간결하고 읽기 쉽습니다. Bicep에는 프로그래밍 언어에 대한 이전 지식이 필요하지 않습니다. Bicep 구문은 선언적이며 배포하려는 리소스 및 리소스 속성을 지정합니다.

    다음 예제에서는 Bicep 파일과 동등한 JSON 템플릿의 차이점을 보여줍니다. 두 예제 모두 스토리지 계정을 배포합니다.

    param location string = resourceGroup().location
    param storageAccountName string = 'toylaunch${uniqueString(resourceGroup().id)}'
    
    resource storageAccount 'Microsoft.Storage/storageAccounts@2021-06-01' = {
      name: storageAccountName
      location: location
      sku: {
        name: 'Standard_LRS'
      }
      kind: 'StorageV2'
      properties: {
        accessTier: 'Hot'
      }
    }
    

  • 제작 환경: VS Code에 대한 Bicep 확장을 사용하여 Bicep 파일을 만드는 경우 최고 수준의 제작 환경이 제공됩니다. 편집기는 풍부한 형식 안전성, Intellisense 및 구문 유효성 검사를 제공합니다.

    Bicep file authoring example

  • 반복 가능한 결과: 개발 수명 주기 내내 인프라를 반복적으로 배포하며, 안정적이고 일관된 리소스 배포를 보장할 수 있습니다. Bicep 파일은 idempotent이며, 이는 동일한 파일을 여러 번 배포하고 동일한 상태에 있는 동일한 유형의 리소스를 가져올 수 있음을 의미합니다. 업데이트를 나타내는 여러 개의 개별 파일을 개발하는 대신 원하는 상태를 나타내는 하나의 파일을 개발할 수 있습니다.

  • 오케스트레이션: 복잡한 작업 순서 지정 작업에 대해 우려할 필요가 없습니다. Resource Manager는 리소스가 올바른 순서로 생성되도록 상호 의존적인 리소스의 배포를 오케스트레이션합니다. 가능한 경우 Resource Manager는 리소스를 병렬로 배포하여, 직렬로 배포될 때보다 배포가 빠르게 완료되도록 합니다. 다수의 명령어가 아닌 하나의 명령으로 파일을 배포합니다.

    Bicep deployment comparison

  • 모듈성: 모듈을 사용하여 Bicep 코드를 관리 가능한 부분으로 나눌 수 있습니다. 모듈은 관련 리소스 집합을 배포합니다. 모듈을 사용하면 코드를 재사용하고 개발을 간소화할 수 있습니다. 해당 리소스를 배포해야 할 때마다 모듈을 Bicep 파일에 추가합니다.

  • Azure 서비스와 통합: Bicep은 Azure Policy, 템플릿 사양 및 청사진과 같은 Azure 서비스와 통합됩니다.

  • 변경 내용 미리 보기: 가상 작업을 사용하여 파일을 배포하기 전에 변경 내용 미리 보기를 가져올 수 있습니다. 가상 작업으로 어떤 리소스가 생성되고, 업데이트되고, 삭제될 것인지 확인하고, 변경될 모든 리소스 속성을 볼 수 있습니다. 가상 작업은 사용자 환경의 현재 상태를 확인하고 상태를 관리할 필요가 없도록 해 줍니다.

  • 관리할 상태 또는 상태 파일 없음: 모든 상태가 Azure에 저장됩니다. 사용자는 공동 작업을 수행할 수 있으며 업데이트가 예상대로 처리된다는 확신을 가질 수 있습니다.

  • 무료 및 오픈 소스: Bicep은 완전히 무료입니다. 프리미엄 기능에 대한 비용을 지불할 필요가 없습니다. Microsoft 지원에서도 지원합니다.

시작

Bicep으로 시작하려면:

  1. 도구를 설치합니다. Bicep 개발 및 배포 환경 설정을 참조하세요. 또는 VS Code Devcontainer/Codespaces 리포지토리를 사용하여 사전 구성된 작성 환경을 얻을 수 있습니다.
  2. 빠른 시작Microsoft Learn Bicep 모듈 을 완료합니다.

기존 ARM 템플릿을 Bicep으로 디컴파일하려면 ARM 템플릿 JSON을 Bicep으로 디컴파일을 참조하세요. Bicep 플레이그라운드를 사용하여 Bicep과 이에 상응하는 JSON을 나란히 볼 수 있습니다.

Bicep 파일에서 사용할 수 있는 리소스에 대해 알아보려면 Bicep 리소스 참조를 참조하세요.

Bicep 예는 Bicep GitHub 리포지토리에서 찾을 수 있습니다.

언어에 대한 정보

Bicep은 애플리케이션을 작성하기 위한 일반적인 프로그래밍 언어가 아닙니다. Bicep 파일은 리소스를 만드는 일련의 프로그래밍 명령을 작성하지 않고 Azure 리소스 및 리소스 속성을 선언합니다.

Bicep 작업 상태를 추적하려면 Bicep 프로젝트 리포지토리를 참조하세요.

Bicep에 대한 자세한 내용은 다음 비디오를 참조하세요.

ARM 템플릿(Azure Resource Manager 템플릿)을 개발하는 데 JSON 대신 Bicep을 사용할 수 있습니다. ARM 템플릿을 만드는 JSON 구문은 자세한 정보를 사용할 수 있으며 복잡한 식이 필요할 수 있습니다. Bicep 구문은 이러한 복잡성을 줄이고 개발 환경을 향상시킵니다. Bicep은 ARM 템플릿 JSON에 대한 투명한 추상화이며 JSON 템플릿 기능이 손실되지 않습니다. 배포 중에 Bicep CLI는 Bicep 파일을 ARM 템플릿 JSON으로 변환합니다.

ARM 템플릿에서 유효한 리소스 종류, API 버전, 속성은 Bicep 파일에서 유효합니다.

Bicep은 동등한 JSON에 비해 더 쉽고 간결한 구문을 제공합니다. 대괄호로 묶인 식 [...]을 사용하지 않습니다. 대신 함수를 직접 호출하고 매개 변수 및 변수에서 값을 가져옵니다. 배포된 각 리소스에 심볼 이름을 지정하여 템플릿에서 해당 리소스를 쉽게 참조할 수 있게 됩니다.

구문 전체 비교는 템플릿에 대한 JSON 및 Bicep 비교를 참조하세요.

Bicep은 리소스 간의 종속성을 자동으로 관리합니다. 리소스의 심볼 이름이 다른 리소스 선언에서 사용되는 경우 dependsOn을 설정하지 않아도 됩니다.

Bicep 파일의 구조는 JSON 템플릿보다 더 유연합니다. 파일의 어디에서나 매개 변수, 변수, 출력을 선언할 수 있습니다. JSON에서는 템플릿의 해당 섹션 내에서 모든 매개 변수, 변수, 출력을 선언해야 합니다.

다음 단계

빠른 시작으로 시작

일반적인 질문에 대한 답변은 Bicep에 대해 자주 묻는 질문을 참조하세요.