Azure Functions 배포 슬롯
Azure Functions 배포 슬롯을 사용하면 함수 앱이 슬롯이라고 부르는 여러 인스턴스를 실행할 수 있습니다. 슬롯은 공개적으로 사용 가능한 엔드포인트를 통해 노출되는 서로 다른 환경입니다. 하나의 앱 인스턴스가 항상 프로덕션 슬롯에 매핑되고, 주문형 슬롯에 할당된 인스턴스를 교환할 수 있습니다.
사용 가능한 슬롯 수는 특정 호스팅 옵션에 따라 달라집니다.
호스팅 옵션 | 슬롯(프로덕션 포함) |
---|---|
사용 계획 | 2 |
Flex 사용량 계획 | 현재 지원되지 않음 |
프리미엄 계획 | 3 |
전용(App Service) 플랜 | 1-20 |
Container Apps | 수정 버전 사용 |
다음은 슬롯 교환이 함수에 미치는 영향을 보여줍니다.
- 트래픽 리디렉션이 원활하게 수행되고, 교환으로 인해 삭제되는 요청이 없습니다. 이러한 원활한 동작은 다음 함수 트리거가 교환된 슬롯으로 라우팅되기 때문에 발생합니다.
- 현재 실행 중인 함수는 교환 중에 종료됩니다. 상태 비정상 및 방어 함수를 작성하는 방법을 알아보려면 Azure Functions의 성능 및 안정성 개선을 참조하세요.
슬롯을 사용하는 이윤
배포 슬롯을 사용하면 다음과 같은 여러 가지 이점이 있습니다.
- 여러 목적에 맞는 서로 다른 환경: 여러 슬롯을 사용함으로써 프로덕션 또는 준비 슬롯으로 교환하기 전 앱 인스턴스를 차별화할 수 있습니다.
- 사전 준비: 프로덕션에 직접 배포하는 대신 슬롯에 배포함으로써 라이브 전환 전에 앱을 준비할 수 있습니다. 또한 슬롯을 사용하면 HTTP로 트리거되는 워크로드의 지연 시간이 줄어듭니다. 배포 전 인스턴스가 준비되어, 새로 배포되는 함수의 콜드 시작을 줄여줍니다.
- 쉬운 폴백: 프로덕션으로 교환한 후에는 이전에 준비된 앱을 포함하는 슬롯에 이제 이전 프로덕션 앱이 포함됩니다. 프로덕션 슬롯에 교환된 변경 사항이 예상한 것과 다르면 즉시 교환을 되돌려서 “마지막으로 알려진 정상 인스턴스”를 다시 가져올 수 있습니다.
- 다시 시작 최소화: 프로덕션 슬롯에서 앱 설정을 변경하려면 실행 중인 앱을 다시 시작해야 합니다. 대신 스테이징 슬롯에서 설정을 변경하고 설정 변경 사항을 미리 표시된 인스턴스를 사용하여 프로덕션으로 바꿀 수 있습니다. 슬롯은 최고의 가용성을 유지하면서 Functions 런타임 버전 간에 마이그레이션하는 데 권장됩니다. 자세한 내용은 최소 가동 중지 시간 업데이트를 참조하세요.
교환 작업
교환 중 한 슬롯은 원본으로, 다른 슬롯은 대상으로 간주됩니다. 원본 슬롯에는 대상 슬롯에 적용된 애플리케이션의 인스턴스가 포함됩니다. 다음 단계에서는 교환 중 대상 슬롯에 가동 중지 시간이 발생하지 않도록 보장합니다.
설정 적용: 대상 슬롯의 설정은 원본 슬롯의 모든 인스턴스에 적용됩니다. 예를 들어 프로덕션 설정이 준비 인스턴스에 적용됩니다. 적용된 설정에는 다음 범주가 포함됩니다.
- 슬롯 특정 앱 설정 및 연결 문자열(해당하는 경우)
- 지속적인 배포 설정(설정된 경우)
- App Service 인증 설정(설정된 경우)
다시 시작 및 가용성 대기: 교환할 때 원본 슬롯의 모든 인스턴스의 다시 시작이 완료되고 요청에 사용할 수 있을 때까지 기다립니다. 인스턴스를 다시 시작하지 못하는 경우 교환 작업은 모든 변경 내용을 원본 슬롯으로 되돌리고 작업을 중지합니다.
라우팅 업데이트: 원본 슬롯의 모든 인스턴스가 성공적으로 사전 준비되었으면 두 슬롯이 라우팅 규칙을 전환하여 교환을 완료합니다. 이 단계를 수행한 후 대상 슬롯(예: 프로덕션 슬롯)에는 이전에 원본 슬롯에서 준비된 앱이 있습니다.
작업 반복: 원본 슬롯에 이전에 대상 슬롯에 있던 사전 교환된 앱이 포함되므로, 모든 설정을 적용하고 원본 슬롯에 대해 인스턴스를 다시 시작하여 동일한 작업을 완료합니다.
다음 사항을 주의하세요.
교환 작업의 모든 지점에서 교환된 앱의 초기화가 원본 슬롯에서 발생합니다. 교환이 성공하거나 실패하는지에 관계없이 원본 슬롯이 준비되는 동안 대상 슬롯이 온라인 상태로 유지됩니다.
준비 슬롯을 프로덕션 슬롯과 교환하려면 프로덕션 슬롯이 항상 대상 슬롯인지 확인합니다. 이러한 방식으로 교환 작업은 프로덕션 앱에 영향을 주지 않습니다.
교환을 시작하기 전 이벤트 원본 및 바인딩과 관련된 설정을 배포 슬롯 설정으로 구성해야 합니다. 미리 “고정”으로 표시하면 이벤트 및 출력이 적절한 인스턴스로 전달됩니다.
새로운 스테이징 슬롯을 만들면 설정의 고정성에 관계없이 프로덕션 슬롯의 모든 기존 설정이 새 슬롯에 만들어집니다.
설정 관리
일부 구성 설정은 슬롯에 따라 달라집니다. 다음 목록은 슬롯을 교환할 때 어떤 설정이 변경되고, 어떤 설정이 동일하게 유지되는지 자세히 보여줍니다.
슬롯별 설정:
- 게시 엔드포인트
- 사용자 지정 도메인 이름
- 공용이 아닌 인증서 및 TLS/SSL 설정
- 크기 조정 설정
- IP 제한
- Always On
- 진단 설정
- CORS(원본 간 리소스 공유)
- 프라이빗 엔드포인트
슬롯에 영향을 받지 않는 설정:
- 프레임워크 버전, 32/64비트, 웹 소켓과 같은 일반 설정
- 앱 설정(슬롯에 맞도록 구성할 수 있음)
- 연결 설정(슬롯에 맞도록 구성할 수 있음)
- 처리기 매핑
- 공용 인증서
- 하이브리드 연결 *
- 가상 네트워크 통합 *
- 서비스 엔드포인트 *
- Azure Content Delivery Network *
별표(*)로 표시된 기능은 의도적으로 교환되지 않습니다.
참고 항목
교환되지 않는 설정에 적용되는 특정 앱 설정 역시 교환되지 않습니다. 예를 들어 진단 설정은 교환되지 않으므로 WEBSITE_HTTPLOGGING_RETENTION_DAYS
및 DIAGNOSTICS_AZUREBLOBRETENTIONDAYS
와 같은 관련 앱 설정 역시 슬롯 설정에 표시되지 않더라도 교환되지 않습니다.
배포 설정 만들기
설정을 배포 설정으로 표시하여, 고정으로 만들 수 있습니다. 고정 설정은 앱 인스턴스와 교환되지 않습니다.
한 슬롯에서 배포 설정을 만드는 경우 교환에 포함된 다른 슬롯에서 고유 값을 사용하여 동일한 설정을 만들어야 합니다. 이렇게 하면 설정 값이 변경되지 않고, 설정 이름이 슬롯 간에 일관되게 유지됩니다. 이러한 이름 일관성에 따라 코드가 한 슬롯에 정의되어 있지만 다른 슬롯에 정의되지 않은 설정에 액세스하도록 시도하지 않습니다.
다음 단계에 따라 배포 설정을 만듭니다.
함수 앱에서 배포 슬롯으로 이동한 후 슬롯 이름을 선택합니다.
구성을 선택한 후 현재 슬롯에 고정시키려는 설정 이름을 선택합니다.
배포 슬롯 설정을 선택한 후 확인을 선택합니다.
설정 섹션이 사라지면 저장을 선택하여 변경 내용을 유지합니다.
배포
슬롯을 만들 때 슬롯은 비어 있습니다. 지원되는 배포 기술을 사용하여 슬롯에 애플리케이션을 배포할 수 있습니다.
확장
모든 슬롯은 프로덕션 슬롯과 동일한 작업자 수로 크기가 조정됩니다.
- 사용 요금제의 경우 슬롯은 함수 앱에 따라 크기가 조정됩니다.
- App Service 요금제의 경우에는 앱이 고정된 수의 작업자로 크기가 조정됩니다. 슬롯이 앱 요금제와 동일한 작업자 수로 실행됩니다.
슬롯 보기
Azure CLI를 사용하거나 Azure Portal을 통해 기존 슬롯에 대한 정보를 볼 수 있습니다.
다음 단계를 사용하여 포털에서 새 슬롯을 만듭니다.
함수 앱으로 이동합니다.
배포 슬롯을 선택하면 기존 슬롯이 표시됩니다.
슬롯 추가
Azure CLI를 사용하거나 Azure Portal을 통해 슬롯을 추가할 수 있습니다.
다음 단계를 사용하여 포털에서 슬롯을 만듭니다.
함수 앱으로 이동합니다.
배포 슬롯을 선택한 후 + 슬롯 추가를 선택합니다.
슬롯의 이름을 입력하고 추가를 선택합니다.
슬롯 리소스에 액세스
프로덕션 슬롯과 동일한 방식으로 스테이징 슬롯에서 리소스(HTTP 트리거 및 관리자 엔드포인트)에 액세스합니다. 그러나 함수 앱 호스트 이름 대신 슬롯별 키와 함께 요청 URL에서 슬롯별 호스트 이름을 사용합니다. 스테이징 슬롯은 라이브 앱이므로 프로덕션 슬롯에서와 마찬가지로 스테이징 슬롯에서도 함수를 보호해야 합니다.
슬롯 교환
Azure CLI를 사용하거나 Azure Portal을 통해 프로덕션 이외의 슬롯을 교환할 수 있습니다.
다음 단계를 사용하여 스테이징 슬롯을 프로덕션으로 교환합니다.
함수 앱으로 이동합니다.
배포 슬롯을 선택한 후 교환을 선택합니다.
교환에 대한 구성 설정을 확인하고 교환을 선택합니다.
교환 작업은 몇 초 정도 걸릴 수 있습니다.
교환 롤백
교환으로 인해 오류가 발생하거나 단순히 교환을 “실행 취소”하려는 경우 초기 상태로 롤백할 수 있습니다. 교환되기 전 상태로 돌아가려면 교환을 다시 수행하여 교환을 반대로 합니다.
슬롯 제거
Azure CLI를 사용하거나 Azure Portal을 통해 슬롯을 제거할 수 있습니다.
다음 단계를 사용하여 포털의 앱에서 슬롯을 제거합니다.
함수 앱에서 배포 슬롯으로 이동한 후 슬롯 이름을 선택합니다.
삭제를 선택합니다.
삭제하려는 배포 슬롯의 이름을 입력한 후 삭제를 선택합니다.
확인 창을 닫습니다.
App Service 요금제 변경
특정 App Service 요금제에 따라 실행되는 함수 앱의 경우, 슬롯의 기본 App Service 요금제를 변경할 수 있습니다.
참고 항목
사용 요금제에서는 슬롯의 App Service 요금제를 변경할 수 없습니다.
다음 단계에 따라 슬롯의 App Service 요금제를 변경합니다.
함수 앱에서 배포 슬롯으로 이동한 후 슬롯 이름을 선택합니다.
App Service 요금제에서 App Service 요금제 변경을 선택합니다.
업그레이드하려는 요금제를 선택하거나 새 요금제를 만듭니다.
확인을 선택합니다.
고려 사항
Azure Functions 배포 슬롯에는 다음 고려 사항이 있습니다.
- 앱에 사용 가능한 슬롯 수가 요금제에 따라 달라집니다. 사용 요금제는 하나의 배포 슬롯만 허용됩니다. 다른 플랜에 따라 실행되는 앱에 더 많은 슬롯을 사용할 수 있습니다. 자세한 내용은 서비스 제한을 참조하세요.
- 슬롯을 교환하면
AzureWebJobsSecretStorageType
앱이files
와 동일하게 설정된 앱의 키가 초기화됩니다. - 슬롯이 사용되는 경우 함수 앱은 포털에서 읽기 전용 모드로 설정됩니다.
- 함수 앱이 기본 스토리지 계정(
AzureWebJobsStorage
에 설정됨)으로 보안 스토리지 계정을 사용하는 경우 슬롯 교환이 실패할 수 있습니다. 자세한 내용은WEBSITE_OVERRIDE_STICKY_DIAGNOSTICS_SETTINGS
참조를 참조하세요. - 32자보다 짧은 함수 앱 이름을 사용합니다. 32자보다 긴 이름은 호스트 ID 충돌을 일으킬 위험이 있습니다.