Azure Functions 배포 슬롯

Azure Functions 배포 슬롯을 사용하면 함수 앱이 슬롯이라는 다른 인스턴스를 실행할 수 있습니다. 슬롯은 공개적으로 사용 가능한 엔드포인트를 통해 노출되는 서로 다른 환경입니다. 하나의 앱 인스턴스는 항상 프로덕션 슬롯에 매핑되며 요청 시 슬롯에 할당된 인스턴스를 교환할 수 있습니다. 소비 계획에서 실행되는 함수 앱에는 스테이징을 위한 단일 추가 슬롯이 있습니다. 프리미엄 플랜 또는 전용(App Service) 계획에서 앱을 실행하여 더 많은 스테이징 슬롯을 얻을 수 있습니다. 자세한 내용은 서비스 제한을 참조하세요.

다음은 슬롯 교환에 의해 함수의 영향을 받는 방식을 반영합니다.

  • 트래픽 리디렉션은 원활합니다. 교환으로 인해 요청이 삭제되지 않습니다. 이 원활한 동작은 다음 함수 트리거가 교환된 슬롯으로 라우팅되기 때문에 발생합니다.
  • 현재 실행 중인 함수는 교환 중에 종료됩니다. 상태 비스테이션 및 방어 함수를 작성하는 방법을 알아보려면 Azure Functions의 성능 및 안정성 향상을 참조 하세요.

슬롯을 사용하는 이윤

배포 슬롯을 사용하는 경우 다음과 같은 여러 가지 이점이 있습니다.

  • 다양한 용도의 환경: 다른 슬롯을 사용하면 프로덕션 또는 스테이징 슬롯으로 교환하기 전에 앱 인스턴스를 구분할 수 있습니다.
  • 사전 준비: 프로덕션에 직접 배포하는 대신 슬롯에 배포함으로써 라이브 전환 전에 앱을 준비할 수 있습니다. 또한 슬롯을 사용하면 HTTP 트리거 워크로드의 대기 시간이 줄어듭니다. 인스턴스는 배포 전에 준비되어 새로 배포된 함수의 콜드 스타트를 줄입니다.
  • 간편한 대체: 프로덕션으로 교환한 후 이전에 스테이징된 앱이 있는 슬롯에 이전 프로덕션 앱이 있습니다. 프로덕션 슬롯에 교환된 변경 사항이 예상한 것과 다르면 즉시 교환을 되돌려서 “마지막으로 알려진 정상 인스턴스”를 다시 가져올 수 있습니다.
  • 다시 시작 최소화: 프로덕션 슬롯에서 앱 설정을 변경하려면 실행 중인 앱을 다시 시작해야 합니다. 대신 스테이징 슬롯에서 설정을 변경하고 설정 변경 사항을 미리 표시된 인스턴스를 사용하여 프로덕션으로 바꿀 수 있습니다. 슬롯은 가장 높은 가용성을 기본 동안 Functions 런타임 버전 간에 마이그레이션하는 권장 방법입니다. 자세한 내용은 최소 가동 중지 시간 업데이트를 참조하세요.

교환 작업

교환하는 동안 한 슬롯은 원본으로 간주되고 다른 슬롯은 대상입니다. 원본 슬롯에는 대상 슬롯에 적용되는 애플리케이션의 인스턴스가 있습니다. 다음 단계에서는 교환 중 대상 슬롯에 가동 중지 시간이 발생하지 않도록 보장합니다.

  1. 설정 적용: 대상 슬롯의 설정은 원본 슬롯의 모든 인스턴스에 적용됩니다. 예를 들어 프로덕션 설정은 스테이징 인스턴스 적용됩니다. 적용된 설정에는 다음 범주가 포함됩니다.

  2. 다시 시작 및 가용성 대기: 교환은 원본 슬롯의 모든 인스턴스가 다시 시작을 완료하고 요청에 사용할 수 있을 때까지 기다립니다. 인스턴스를 다시 시작하지 못하는 경우 교환 작업은 모든 변경 내용을 원본 슬롯으로 되돌리고 작업을 중지합니다.

  3. 라우팅 업데이트: 원본 슬롯의 모든 인스턴스가 성공적으로 준비되면 두 슬롯은 라우팅 규칙을 전환하여 교환을 완료합니다. 이 단계가 끝나면 대상 슬롯(예: 프로덕션 슬롯)에 이전에 원본 슬롯에서 준비한 앱이 있습니다.

  4. 반복 작업: 원본 슬롯에 이전에 대상 슬롯에 preswap 앱이 있으므로 모든 설정을 적용하고 원본 슬롯에 대한 인스턴스를 다시 시작하여 동일한 작업을 완료합니다.

다음 사항을 주의하세요.

  • 교환 작업의 어느 시점에서든 교환된 앱의 초기화는 원본 슬롯에서 발생합니다. 교환이 성공하거나 실패하는지에 관계없이 원본 슬롯이 준비되는 동안 대상 슬롯이 온라인 상태로 유지됩니다.

  • 준비 슬롯을 프로덕션 슬롯과 교환하려면 프로덕션 슬롯이 항상 대상 슬롯인지 확인합니다. 이러한 방식으로 교환 작업은 프로덕션 앱에 영향을 주지 않습니다.

  • 이벤트 원본 및 바인딩과 관련된 설정 교환을 시작하기 전에 배포 슬롯 설정으로 구성해야 합니다. 미리 "고정"으로 표시하면 이벤트 및 출력이 적절한 인스턴스로 전달됩니다.

설정 관리

일부 구성 설정은 슬롯별 설정입니다. 다음 목록은 슬롯을 교환할 때 어떤 설정이 변경되고, 어떤 설정이 동일하게 유지되는지 자세히 보여줍니다.

슬롯별 설정:

  • 게시 엔드포인트
  • 사용자 지정 도메인 이름
  • 비공유 인증서 및 TLS/SSL 설정
  • 크기 조정 설정
  • IP 제한
  • Always On
  • 진단 설정
  • CORS(원본 간 리소스 공유)
  • 프라이빗 엔드포인트

슬롯별 설정이 아닌 설정:

  • 프레임워크 버전, 32/64비트, 웹 소켓과 같은 일반 설정
  • 앱 설정(슬롯에 맞도록 구성할 수 있음)
  • 연결 설정(슬롯에 맞도록 구성할 수 있음)
  • 처리기 매핑
  • 공용 인증서
  • 하이브리드 연결 *
  • 가상 네트워크 통합 *
  • 서비스 엔드포인트 *
  • Azure Content Delivery Network *

별표(*)로 표시된 기능은 의도적으로 교환되지 않습니다.

참고 항목

해제된 설정에 적용되는 특정 앱 설정도 교환되지 않습니다. 예를 들어 진단 설정이 교환되지 않으므로 관련 앱 설정은 슬롯 설정으로 표시되지 않더라도 교환 WEBSITE_HTTPLOGGING_RETENTION_DAYSDIAGNOSTICS_AZUREBLOBRETENTIONDAYS 되지 않습니다.

배포 설정 만들기

설정을 배포 설정 으로 표시하여 고정할 수 있습니다. 고정 설정은 앱 인스턴스와 교환되지 않습니다.

한 슬롯에 배포 설정을 만드는 경우 교환에 관련된 다른 슬롯에 고유한 값을 사용하여 동일한 설정을 만들어야 합니다. 이러한 방식으로 설정의 값은 변경되지 않지만 설정 이름은 슬롯 간에 일관성이 기본. 이 이름 일관성은 코드가 한 슬롯에 정의되어 있지만 다른 슬롯에는 정의되지 않은 설정에 액세스하지 않도록 합니다.

다음 단계를 사용하여 배포 설정을 만듭니다.

  1. 함수 앱에서 배포 슬롯으로 이동한 다음 슬롯 이름을 선택합니다.

    Find slots in the Azure portal.

  2. 구성을 선택한 다음 현재 슬롯에 고정할 설정 이름을 선택합니다.

    Configure the application setting for a slot in the Azure portal.

  3. 배포 슬롯 설정을 선택한 다음 확인을 선택합니다.

    Configure the deployment slot setting.

  4. 설정 섹션이 사라지면 저장을 선택하여 변경 내용을 유지합니다.

    Save the deployment slot setting.

배포

슬롯을 만들 때 슬롯은 비어 있습니다. 지원되는 배포 기술을 사용하여 슬롯에 애플리케이션을 배포할 수 있습니다.

확장

모든 슬롯은 프로덕션 슬롯과 동일한 수의 작업자로 확장됩니다.

  • 소비 계획의 경우 함수 앱의 크기가 조정됨에 따라 슬롯 크기가 조정됩니다.
  • App Service 계획의 경우 앱은 고정된 수의 작업자로 확장됩니다. 슬롯은 앱 계획과 동일한 수의 작업자에서 실행됩니다.

슬롯 보기

Azure CLI 또는 Azure Portal을 통해 기존 슬롯에 대한 정보를 볼 수 있습니다.

포털에서 새 슬롯을 만들려면 다음 단계를 사용합니다.

  1. 함수 앱으로 이동합니다.

  2. 배포 슬롯을 선택하면 기존 슬롯이 표시됩니다.

슬롯 추가

Azure CLI 또는 Azure Portal을 통해 슬롯을 추가할 수 있습니다.

포털에서 슬롯을 만들려면 다음 단계를 사용합니다.

  1. 함수 앱으로 이동합니다.

  2. 배포 슬롯을 선택한 다음 + 슬롯 추가를 선택합니다.

    Add Azure Functions deployment slot.

  3. 슬롯의 이름을 입력하고 추가를 선택합니다.

    Name the Azure Functions deployment slot.

슬롯 리소스 액세스

프로덕션 슬롯과 동일한 방식으로 스테이징 슬롯에서 리소스(HTTP 트리거 및 관리자 엔드포인트)에 액세스합니다. 그러나 함수 앱 호스트 이름 대신 슬롯별 키와 함께 요청 URL에서 슬롯별 호스트 이름을 사용합니다. 스테이징 슬롯은 라이브 앱이므로 프로덕션 슬롯에서와 마찬가지로 스테이징 슬롯에서 함수를 보호해야 합니다.

슬롯 교환

Azure CLI를 사용하거나 Azure Portal을 통해 프로덕션 외의 슬롯을 교환할 수 있습니다.

다음 단계를 사용하여 스테이징 슬롯을 프로덕션으로 교환합니다.

  1. 함수 앱으로 이동합니다.

  2. 배포 슬롯을 선택한 다음, 교환 선택합니다.

    Screenshot that shows the 'Deployment slot' page with the 'Add Slot' action selected.

  3. 교환에 대한 구성 설정을 확인하고 교환을 선택합니다 .

    Swap the deployment slot.

교환 작업은 몇 초 정도 걸릴 수 있습니다.

교환 롤백

교환으로 인해 오류가 발생하거나 단순히 스왑을 "실행 취소"하려는 경우 초기 상태로 롤백할 수 있습니다. 미리 연결된 상태로 돌아가려면 다른 교환을 수행하여 교환을 취소합니다.

슬롯 제거

Azure CLI 또는 Azure Portal을 통해 슬롯을 제거할 수 있습니다.

다음 단계를 사용하여 포털의 앱에서 슬롯을 제거합니다.

  1. 함수 앱에서 배포 슬롯으로 이동한 다음 슬롯 이름을 선택합니다.

    Find slots in the Azure portal.

  2. 삭제를 선택합니다.

    Screenshot that shows the 'Overview' page with the 'Delete' action selected.

  3. 삭제할 배포 슬롯의 이름을 입력한 다음 삭제를 선택합니다.

    Delete the deployment slot in the Azure portal.

  4. 확인 창을 닫습니다.

    Deployment slot delete confirmation.

App Service 요금제 변경

특정 App Service 요금제에 따라 실행되는 함수 앱의 경우, 슬롯의 기본 App Service 요금제를 변경할 수 있습니다.

참고 항목

사용 계획에 따라 슬롯의 App Service 계획을 변경할 수 없습니다.

다음 단계를 사용하여 슬롯의 App Service 계획을 변경합니다.

  1. 함수 앱에서 배포 슬롯으로 이동한 다음 슬롯 이름을 선택합니다.

    Find slots in the Azure portal.

  2. App Service 계획에서 App Service 계획 변경을 선택합니다.

  3. 업그레이드할 계획을 선택하거나 새 계획을 만듭니다.

    Change the App Service plan in the Azure portal.

  4. 확인을 선택합니다.

고려 사항

Azure Functions 배포 슬롯에는 다음 고려 사항이 있습니다.

  • 앱에 사용 가능한 슬롯 수가 요금제에 따라 달라집니다. 소비 계획은 하나의 배포 슬롯만 허용됩니다. 다른 계획에서 실행되는 앱에 더 많은 슬롯을 사용할 수 있습니다. 자세한 내용은 서비스 제한을 참조하세요.
  • 슬롯을 교환하면 앱 설정이 AzureWebJobsSecretStorageType 같은 앱의 키가 다시 설정됩니다 files.
  • 슬롯이 사용되는 경우 함수 앱은 포털에서 읽기 전용 모드로 설정됩니다.
  • 함수 앱이 보안 스토리지 계정을 기본 스토리지 계정(설정)으로 사용하는 경우 슬롯 교환이 AzureWebJobsStorage실패할 수 있습니다. 자세한 내용은 WEBSITE_OVERRIDE_STICKY_DIAGNOSTICS_SETTINGS 참조를 참조하세요.
  • 32자보다 짧은 함수 앱 이름을 사용합니다. 32자보다 긴 이름은 호스트 ID 충돌을 일으킬 위험이 있습니다.

다음 단계