Azure 개발자 CLI(azd)를 사용하면 프로젝트에 대한 여러 배포 환경을 관리하여 개발, 테스트 및 프로덕션에 대한 구성을 별도로 유지할 수 있습니다. 이 문서에서는 환경을 사용하여 개발 및 배포 프로세스를 관리하는 방법에 대한 필수 개념을 설명합니다.
환경이란?
Azure 개발자 CLI(azd)의 환경은 개발, 테스트 또는 prod와 같은 앱 배포를 위한 명명된 구성 집합입니다. 서로 다른 값을 사용하여 다양한 환경을 구성할 수 있습니다. 환경은 다음과 같은 몇 가지 중요한 용도로 사용됩니다.
- 격리: 개발, 테스트 및 프로덕션 배포를 별도로 유지합니다.
- 구성 관리: 각 환경에 대해 서로 다른 설정을 유지 관리합니다.
- 공동 작업: 팀 구성원이 자신의 환경으로 작업할 수 있도록 합니다.
- 리소스 조직: 환경별로 Azure 리소스를 그룹화하고 프로비전합니다.
- 재현성: 여러 단계에서 일관된 배포를 보장합니다.
각 환경에는 자체 Azure 리소스 그룹 및 구성 설정이 있습니다. 이러한 환경 격리는 한 환경의 변경 내용이 다른 환경에 영향을 주지 않도록 방지하는 데 도움이 됩니다.
환경 구조 및 구성
Azure 개발자 CLI(azd) 환경은 프로젝트 내의 디렉터리 구조에 있습니다.
├── .azure [Created when you run azd init or azd up]
│ ├── <environment-name-1> [Directory for environment-specific configurations]
│ │ ├── .env [Environment variables for this environment]
│ │ └── config.json [Additional configuration parameters for this environment]
│ ├── <environment-name-2> [Another environment]
│ │ ├── .env
│ │ └── config.json
│ └── config.json [Global azd configuration]
이 구조의 주요 구성 요소는 다음과 같습니다.
-
.azure디렉터리: 모든 환경 구성에 대한 루트 디렉터리입니다. 기본적으로 파일에 의해.gitignore소스 제어에서 제외됩니다. -
환경별 디렉터리: 환경의 이름을 따서 명명된 디렉터리(예:
dev, .prodtest -
.env파일: 애플리케이션 및 배포 중에 사용되는 환경별 변수를 포함합니다. -
config.json: 명령 동작 및 기능에 영향을azd주는 설정을 구동하는 데 사용됩니다. 이 파일은 최종 사용자가 직접 사용할 수 없습니다.
환경 이름
환경 명명은 일반적으로 다음 패턴을 따릅니다.
- 팀 프로젝트:
<project-name-[dev/int/prod]> - 개인 프로젝트:
<personal-unique-alias-[dev/int/prod]>
이러한 명명 규칙은 사용자가 적용 azd 하지 않으며 사용자가 구성할 수 있습니다.
환경 변수
Azure 개발자 CLI 환경 변수는 환경에 영향을 주며 환경마다 다를 수 있는 구성 설정을 저장하는 방법을 제공합니다. Azure Developer CLI 명령을 실행할 때 다음 변수를 사용하여 다음을 수행합니다.
- Azure 서비스에 대한 엔드포인트와 같은 애플리케이션 설정을 구성합니다.
- 프로비저닝 프로세스에 영향을 주는 인프라 매개 변수를 정의합니다.
파일에는 .env 다음 변수가 표준 형식으로 포함되어 있습니다.
AZURE_ENV_NAME=dev
AZURE_LOCATION=eastus
AZURE_SUBSCRIPTION_ID=00000000-0000-0000-0000-000000000000
AZURE_RESOURCE_GROUP=rg-dev-12345
SERVICE_WEB_HOSTNAME=web-dev-12345.azurewebsites.net
SERVICE_API_HOSTNAME=api-dev-12345.azurewebsites.net
일반적인 환경 변수는 다음과 같습니다.
| 변수 | 설명 |
|---|---|
AZURE_ENV_NAME |
현재 환경의 이름 |
AZURE_LOCATION |
리소스가 배포되는 Azure 지역 |
AZURE_SUBSCRIPTION_ID |
이 환경에 사용되는 Azure 구독의 ID |
AZURE_RESOURCE_GROUP |
이 환경의 리소스 그룹 이름 |
팁 (조언)
다른 일반적인 환경 변수 및 서비스별 예제는 환경 변수 설명서를 참조하세요.
환경 변수를 사용하는 경우:
- 소스 제어에 파일을 커밋하지
.env마세요. 환경 구성을 유지하거나 공유해야 하는 경우 사용자는 원격 환경을 사용해야 합니다. - 환경 간에 일관된 명명을 사용합니다.
- 명령을
azd env set사용하여 변수를 안전하게 업데이트합니다.
경고
Azure 개발자 CLI .env 파일에 비밀을 저장하지 않습니다. 이러한 파일을 쉽게 공유하거나 무단 위치로 복사하거나 소스 제어에 체크 인할 수 있습니다. 보호되거나 비밀 없는 솔루션에는 Azure Key Vault 또는 AZURE RBAC(역할 기반 액세스 제어)와 같은 서비스를 사용합니다.
다른 프레임워크 환경 비교
Node.js, Django 또는 React와 같은 많은 프로그래밍 프레임워크 및 도구는 구성에 파일을 사용합니다 .env . Azure 개발자 CLI(azd)도 파일을 사용 .env 하지만 다음과 같은 중요한 차이점이 있습니다.
| 개념 | Azure 개발자 CLI .env |
프레임워크 .env 파일 |
|---|---|---|
| 위치 | 에 저장됨 .azure/<environment-name>/.env |
일반적으로 프로젝트 루트 디렉터리에 저장됩니다. |
| 환경 지원 | 여러 사용자 정의 환경(개발, 테스트, prod) 지원 | 수동 파일 전환 또는 명명 규칙(.env.development, .env.production)이 필요한 경우가 많습니다. |
| 로딩 메커니즘 | 명령에 의해 azd 자동으로 로드됨 |
일반적으로 애플리케이션 코드 또는 빌드 스크립트에서 명시적 로드 필요 |
| 통합 | Azure 서비스 및 리소스 프로비저닝과 긴밀하게 통합 | Azure 관련 구성이 아닌 범용 구성 |
| 변수 관리 | 명령을 통해 azd env 관리 |
일반적으로 수동으로 또는 사용자 지정 스크립트를 통해 편집 |
둘 다 비슷한 용도로 사용되지만 Azure 개발자 CLI의 .env 접근 방식은 여러 배포 환경 및 Azure 리소스를 관리하기 위해 설계된 구조와 도구를 추가합니다.
비고
프로젝트에서 프레임워크 관련 .env 파일을 이미 사용하는 경우 충돌 없이 두 구성 시스템을 모두 유지할 수 있습니다.
azd 환경 변수는 일부 작업에 대해 동일한 이름의 시스템 환경 변수를 재정의합니다.