코드 제공 인프라(Infrastructure as code)

완료됨

IaC(Infrastructure as Code)는 원본 제어에 저장된 컴퓨터에서 읽을 수 있는 코드를 통해 클라우드 인프라 리소스를 관리하고 프로비전하는 프로세스입니다. 다른 원본 코드와 마찬가지로 인프라를 처리하는 기능이기 때문에 이 방법을 IaC(Infrastructure as Code)라고 부릅니다.

IaC는 인프라 구성 및 배포를 자동화할 수 있으므로 DevOps의 핵심 구성 요소입니다. 이 자동화는 인프라를 관리하고 프로비전하는 데 필요한 시간과 활동을 줄이는 동시에 인프라가 일관되고 안정적으로 구성되도록 보장합니다. 또한 IaC는 인프라가 안전하고 조직 정책을 준수하는지 확인하는 데 도움이 됩니다.

Azure 네이티브 대 클라우드 중립적 도구

IaC 도구를 선택하는 데 가장 중요한 요소 중 하나는 클라우드 환경입니다.

  • Azure 네이티브 도구: Azure CLI, Azure PowerShell 및 Bicep과 같은 IaC 도구는 Azure에서만 사용할 수 있습니다. 동일한 회사에서 클라우드 인프라와 IaC 도구를 모두 제공하므로 클라우드 기능 릴리스와 도구의 지원 간에 시간이 단축되는 이점이 있습니다.

  • 클라우드 중립적 도구: Terraform과 같은 IaC 도구를 사용하면 혼합 클라우드 환경에서 IaC(Infrastructure as Code)를 관리할 수 있습니다. IaC 도구에 따라 새로 릴리스된 Azure 기능은 즉시 지원되지 않을 수 있습니다.

명령적 대 선언적 IaC 도구

IaC 구성 도구 유형에는 두 가지가 있습니다.

  • 명령적 IaC 도구: 명령적 도구 또는 언어에서는 코드가 수행할 작업과 방법을 명시적으로 지정합니다. 작성하는 코드는 인프라를 구성하기 위해 한 번에 한 단계씩 특정 순서로 작업을 수행합니다. 구성이 단계별로 수행되므로 대부분의 명령적 IaC 도구는 멱등원이 아닙니다.

    Azure에서 리소스를 관리하고 프로비저닝하는 명령적 IaC 도구는 다음과 같습니다.

    • Azure CLI
    • Azure PowerShell
  • 선언적 IaC 도구: 선언적 도구 또는 언어를 사용하면 각 단계를 수행하기 원하는 방법보다는 원하는 결과를 지정할 수 있습니다. 대부분의 선언적 IaC 도구는 일반적인 패턴을 준수합니다. 인프라의 정의를 만든 후 명령을 실행하여 정의한 내용을 프로비전합니다. 선언적 IaC 도구는 인프라 구성의 상태에 관계없이 구성을 여러 번 적용할 수 있으므로 idempotent입니다. 이 기능을 통해 비준수 인프라를 다시 규정 준수로 되돌려 구성 드리프트를 방지할 수 있습니다.

    Azure에서 리소스를 관리하고 프로비저닝하는 선언적 IaC 도구는 다음과 같습니다.

    • Bicep
    • Terraform

권장 사항

  • Azure 배포를 배포, 관리, 거버넌스 및 지원하는 IaC 접근 방식을 채택합니다.
  • 다음 시나리오에서는 Azure 네이티브 도구를 IaC에 사용합니다.
    • Azure 네이티브 도구만 사용하려고 합니다. 조직에 ARM 템플릿(Azure Resource Manager 템플릿)을 배포한 이전 환경이 있습니다.
    • 조직에서는 모든 미리 보기 및 GA(일반 공급) 버전의 Azure 서비스를 즉시 지원하려고 합니다.
  • 다음 시나리오에서는 네이티브가 아닌 도구를 IaC에 사용합니다.
    • 조직은 혼합 클라우드 환경에서 인프라를 관리합니다.
    • 조직에서는 모든 미리 보기 및 GA 버전의 Azure 서비스를 즉시 지원할 필요가 없습니다.