Azure Functions 배포 슬롯Azure Functions deployment slots

Azure Functions 배포 슬롯을 사용 하면 함수 앱에서 "슬롯" 이라는 다른 인스턴스를 실행할 수 있습니다.Azure Functions deployment slots allow your function app to run different instances called "slots". 슬롯은 공개적으로 사용할 수 있는 끝점을 통해 노출 되는 다양 한 환경입니다.Slots are different environments exposed via a publicly available endpoint. 앱 인스턴스 하나는 항상 프로덕션 슬롯에 매핑되고 요청 시 슬롯에 할당 된 인스턴스를 교환할 수 있습니다.One app instance is always mapped to the production slot, and you can swap instances assigned to a slot on demand. 앱 서비스 계획에서 실행 되는 함수 앱에는 여러 슬롯이 있을 수 있으며 소비 계획에는 하나의 슬롯만 허용 됩니다.Function apps running under the Apps Service plan may have multiple slots, while under the Consumption plan only one slot is allowed.

다음은 슬롯을 교환 하 여 함수에 영향을 주는 방법을 나타냅니다.The following reflect how functions are affected by swapping slots:

  • 트래픽 리디렉션이 원활 하 게 진행 됩니다. 교환 때문에 요청이 삭제 되지 않습니다.Traffic redirection is seamless; no requests are dropped because of a swap.
  • 교환 중에 함수를 실행 하는 경우 실행이 계속 되 고 후속 트리거가 스왑 된 앱 인스턴스로 라우팅됩니다.If a function is running during a swap, execution continues and subsequent triggers are routed to the swapped app instance.

참고

슬롯은 현재 Linux 소비 계획에 사용할 수 없습니다.Slots are currently not available for the Linux Consumption plan.

슬롯을 사용 하는 이유Why use slots?

배포 슬롯을 사용 하면 여러 가지 이점이 있습니다.There are a number of advantages to using deployment slots. 다음 시나리오에서는 슬롯의 일반적인 용도를 설명 합니다.The following scenarios describe common uses for slots:

  • 용도에따라 다른 환경: 다른 슬롯을 사용 하면 프로덕션 또는 스테이징 슬롯으로 교환 하기 전에 앱 인스턴스를 구분할 수 있습니다.Different environments for different purposes: Using different slots gives you the opportunity to differentiate app instances before swapping to production or a staging slot.
  • 사전 준비: 프로덕션에 직접 배포 하는 대신 슬롯에 배포 하면 앱이 라이브 전환 전에 준비 될 수 있습니다.Prewarming: Deploying to a slot instead of directly to production allows the app to warm up before going live. 또한 슬롯을 사용 하면 HTTP로 트리거되는 워크 로드에 대 한 대기 시간이 줄어듭니다.Additionally, using slots reduces latency for HTTP-triggered workloads. 인스턴스는 배포 전에 준비 새로 배포 된 함수에 대 한 콜드 시작을 줄입니다.Instances are warmed up before deployment which reduces the cold start for newly-deployed functions.
  • 간편한 대체: 프로덕션을 사용한 교환 후 이전에 준비 된 앱이 있는 슬롯에는 이제 이전 프로덕션 앱이 있습니다.Easy fallbacks: After a swap with production, the slot with a previously staged app now has the previous production app. 프로덕션 슬롯으로 교환 되는 변경 내용이 원하는 대로 변경 되지 않은 경우 교체를 즉시 취소 하 여 "마지막으로 성공한 인스턴스"를 다시 가져올 수 있습니다.If the changes swapped into the production slot aren't as you expect, you can immediately reverse the swap to get your "last known good instance" back.

교환 작업Swap operations

교환 하는 동안 한 슬롯은 원본 및 대상으로 간주 됩니다.During a swap, one slot is considered the source and the other the target. 소스 슬롯에는 대상 슬롯에 적용 되는 응용 프로그램의 인스턴스가 있습니다.The source slot has the instance of the application that is applied to the target slot. 다음 단계는 교환 하는 동안 대상 슬롯의 가동 중지 시간이 발생 하지 않도록 합니다.The following steps ensure the target slot doesn't experience downtime during a swap:

  1. 설정 적용: 대상 슬롯의 설정은 원본 슬롯의 모든 인스턴스에 적용 됩니다.Apply settings: Settings from the target slot are applied to all instances of the source slot. 예를 들어 프로덕션 설정은 준비 인스턴스에 적용 됩니다.For example, the production settings are applied to the staging instance. 적용 되는 설정에는 다음 범주가 포함 됩니다.The applied settings include the following categories:

  2. 다시 시작 및 가용성 대기: Swap은 원본 슬롯의 모든 인스턴스가 다시 시작을 완료 하 고 요청에 사용할 수 있도록 대기 합니다.Wait for restarts and availability: The swap waits for every instance in the source slot to complete its restart and to be available for requests. 인스턴스를 다시 시작 하지 못하는 경우 교환 작업은 원본 슬롯의 모든 변경 내용을 되돌리고 작업을 중지 합니다.If any instance fails to restart, the swap operation reverts all changes to the source slot and stops the operation.

  3. 업데이트 라우팅: 원본 슬롯의 모든 인스턴스가 성공적으로 준비 두 슬롯은 라우팅 규칙을 전환 하 여 교환을 완료 합니다.Update routing: If all instances on the source slot are warmed up successfully, the two slots complete the swap by switching routing rules. 이 단계를 수행한 후 대상 슬롯 (예: 프로덕션 슬롯)에는 이전에 원본 슬롯에서 준비 된 앱이 있습니다.After this step, the target slot (for example, the production slot) has the app that's previously warmed up in the source slot.

  4. 작업 반복: 이제 원본 슬롯의 이전에는 대상 슬롯에 사전 교환 앱이 있으므로 모든 설정을 적용 하 고 원본 슬롯에 대 한 인스턴스를 다시 시작 하 여 동일한 작업을 수행 합니다.Repeat operation: Now that the source slot has the pre-swap app previously in the target slot, perform the same operation by applying all settings and restarting the instances for the source slot.

다음 사항을 주의하세요.Keep in mind the following points:

  • 교환 작업의 어떤 지점에서 든 원본 슬롯에서 스왑 된 앱의 초기화가 수행 됩니다.At any point of the swap operation, initialization of the swapped apps happens on the source slot. 대상 슬롯은 원본 슬롯이 준비 되는 동안 온라인 상태를 유지 하 고 교환에 성공 또는 실패 하는지 여부를 지정 합니다.The target slot remains online while the source slot is being prepared, whether the swap succeeds or fails.

  • 스테이징 슬롯을 프로덕션 슬롯과 교환 하려면 프로덕션 슬롯이 항상 대상 슬롯 인지 확인 합니다.To swap a staging slot with the production slot, make sure that the production slot is always the target slot. 이러한 방식으로 교환 작업은 프로덕션 앱에 영향을 주지 않습니다.This way, the swap operation doesn't affect your production app.

  • 교환을 시작 하기 전에이벤트 원본 및 바인딩과 관련 된 설정을 배포 슬롯 설정 으로 구성 해야 합니다.Settings related to event sources and bindings need to be configured as deployment slot settings before you initiate a swap. 앞에 "고정"으로 표시 하면 이벤트와 출력이 적절 한 인스턴스로 전달 됩니다.Marking them as "sticky" ahead of time ensures events and outputs are directed to the proper instance.

설정 관리Manage settings

다른 배포 슬롯으로부터 구성을 복제할 때 복제된 구성을 편집할 수 있습니다.When you clone configuration from another deployment slot, the cloned configuration is editable. 일부 구성 요소는 교환 (슬롯 특정)에서 콘텐츠를 따르고, 다른 구성 요소는 교환 (슬롯 특정) 후에 동일한 슬롯에 유지 됩니다.Some configuration elements follow the content across a swap (not slot specific), whereas other configuration elements stay in the same slot after a swap (slot specific). 다음 목록은 슬롯을 교환할 때 변경되는 설정을 보여줍니다.The following lists show the settings that change when you swap slots.

교환된 설정:Settings that are swapped:

  • 프레임 워크 버전, 32/64 비트, 웹 소켓 등의 일반 설정General settings, such as framework version, 32/64-bit, web sockets
  • 앱 설정(슬롯에 맞도록 구성할 수 있음)App settings (can be configured to stick to a slot)
  • 연결 설정(슬롯에 맞도록 구성할 수 있음)Connection strings (can be configured to stick to a slot)
  • 처리기 매핑Handler mappings
  • 공용 인증서Public certificates
  • WebJob 콘텐츠WebJobs content
  • 하이브리드 연결 *Hybrid connections *
  • 가상 네트워크 통합 *Virtual network integration *
  • 서비스 끝점 *Service endpoints *
  • Azure Content Delivery Network *Azure Content Delivery Network *

별표 (*)로 표시 된 기능을 교환 하지 않도록 계획 합니다.Features marked with an asterisk (*) are planned to be unswapped.

교환되지 않은 설정:Settings that aren't swapped:

  • 게시 엔드포인트Publishing endpoints
  • 사용자 지정 도메인 이름Custom domain names
  • 공용이 아닌 인증서 및 TLS/SSL 설정Non-public certificates and TLS/SSL settings
  • 크기 조정 설정Scale settings
  • WebJob 스케줄러WebJobs schedulers
  • IP 제한IP restrictions
  • 무중단Always On
  • 진단 로그 설정Diagnostic log settings
  • CORS (원본 간 리소스 공유)Cross-origin resource sharing (CORS)

참고

또한 스왑 되지 않은 설정에 적용 되는 특정 앱 설정은 교환 되지 않습니다.Certain app settings that apply to unswapped settings are also not swapped. 예를 들어 진단 로그 설정이 교환 되지 않으므로 WEBSITE_HTTPLOGGING_RETENTION_DAYSDIAGNOSTICS_AZUREBLOBRETENTIONDAYS와 같은 관련 앱 설정은 슬롯 설정으로 표시 되지 않는 경우에도 교환 되지 않습니다.For example, since diagnostic log settings are not swapped, related app settings like WEBSITE_HTTPLOGGING_RETENTION_DAYS and DIAGNOSTICS_AZUREBLOBRETENTIONDAYS are also not swapped, even if they don't show up as slot settings.

배포 설정 만들기Create a deployment setting

설정을 배포 설정으로 표시 하 여 "고정" 할 수 있습니다.You can mark settings as a deployment setting which makes it "sticky". 고정 설정은 앱 인스턴스와 교환 하지 않습니다.A sticky setting does not swap with the app instance.

한 슬롯에서 배포 설정을 만드는 경우 교환에 포함 된 다른 슬롯에서 고유한 값을 사용 하 여 동일한 설정을 만들어야 합니다.If you create a deployment setting in one slot, make sure to create the same setting with a unique value in any other slot involved in a swap. 이러한 방식으로 설정의 값이 변경 되지 않는 반면, 설정 이름은 슬롯 간에 일관 되 게 유지 됩니다.This way, while a setting's value doesn't change, the setting names remain consistent among slots. 이 이름 일관성을 사용 하면 코드가 한 슬롯에 정의 된 설정에는 액세스를 시도 하지 않습니다.This name consistency ensures your code doesn't try to access a setting that is defined in one slot but not another.

배포 설정을 만들려면 다음 단계를 사용 합니다.Use the following steps to create a deployment setting:

  • 함수 앱의 슬롯 으로 이동 합니다.Navigate to Slots in the function app
  • 슬롯 이름을 클릭 합니다.Click on the slot name
  • 플랫폼 기능 > 일반 설정에서 구성 을 클릭 합니다.Under Platform Features > General Settings, click on Configuration
  • 현재 슬롯과 함께 사용할 설정 이름을 클릭 합니다.Click on the setting name you want to stick with the current slot
  • 배포 슬롯 설정 확인란을 클릭 합니다.Click the Deployment slot setting checkbox
  • 확인을 클릭합니다.Click OK
  • 설정 블레이드가 사라지면 저장 을 클릭 하 여 변경 내용을 유지 합니다.Once setting blade disappears, click Save to keep the changes

배포 슬롯 설정

배포Deployment

슬롯은 슬롯을 만들 때 비어 있습니다.Slots are empty when you create a slot. 지원 되는 배포 기술 중 하나를 사용 하 여 응용 프로그램을 슬롯에 배포할 수 있습니다.You can use any of the supported deployment technologies to deploy your application to a slot.

크기 조정Scaling

모든 슬롯은 프로덕션 슬롯과 동일한 수의 작업자로 확장 됩니다.All slots scale to the same number of workers as the production slot.

  • 소비 계획의 경우 함수 앱이 확장 될 때 슬롯의 크기가 조정 됩니다.For Consumption plans, the slot scales as the function app scales.
  • App Service 계획의 경우 앱은 고정 된 작업자 수로 확장 됩니다.For App Service plans, the app scales to a fixed number of workers. 슬롯은 앱 계획과 동일한 수의 작업자에서 실행 됩니다.Slots run on the same number of workers as the app plan.

슬롯 추가Add a slot

CLI 또는 포털을 통해 슬롯을 추가할 수 있습니다.You can add a slot via the CLI or through the portal. 다음 단계에서는 포털에서 새 슬롯을 만드는 방법을 보여 줍니다.The following steps demonstrate how to create a new slot in the portal:

  1. 함수 앱으로 이동 하 여 슬롯옆에 있는 더하기 기호 를 클릭 합니다.Navigate to your function app and click on the plus sign next to Slots.

    배포 슬롯 Azure Functions 추가

  2. 텍스트 상자에 이름을 입력 하 고 만들기 단추를 누릅니다.Enter a name in the textbox, and press the Create button.

    이름 Azure Functions 배포 슬롯

슬롯 교환Swap slots

CLI 또는 포털을 통해 슬롯을 교환할 수 있습니다.You can swap slots via the CLI or through the portal. 다음 단계에서는 포털에서 슬롯을 교환 하는 방법을 보여 줍니다.The following steps demonstrate how to swap slots in the portal:

  1. 함수 앱으로 이동 합니다.Navigate to the function app
  2. 교환 하려는 원본 슬롯 이름을 클릭 합니다.Click on the source slot name that you want to swap
  3. 개요 탭에서 교환 단추 클릭 하 Azure Functions 배포 슬롯을 교체From the Overview tab, click on the Swap button Swap Azure Functions deployment slot
  4. 교환에 대 한 구성 설정을 확인 하 고 교환 교체를 클릭 하 Azure Functions 배포 슬롯Verify the configuration settings for your swap and click Swap Swap Azure Functions deployment slot

교환 작업을 실행 하는 동안 작업이 잠시 소요 될 수 있습니다.The operation may take a moment while the swap operation is executing.

교환 롤백Roll back a swap

교환 결과로 오류가 발생 하거나 단순히 교체를 "실행 취소" 하려는 경우 초기 상태로 롤백할 수 있습니다.If a swap results in an error or you simply want to "undo" a swap, you can roll back to the initial state. 사전 전환 된 상태로 돌아가려면 다른 교환을 수행 하 여 교체를 반대로 합니다.To return to the pre-swapped state, do another swap to reverse the swap.

슬롯 제거Remove a slot

CLI 또는 포털을 통해 슬롯을 제거할 수 있습니다.You can remove a slot via the CLI or through the portal. 다음 단계에서는 포털에서 슬롯을 제거 하는 방법을 보여 줍니다.The following steps demonstrate how to remove a slot in the portal:

  1. 함수 앱 개요로 이동 합니다.Navigate to the function app Overview

  2. 삭제 단추를 클릭 합니다.Click on the Delete button

    배포 슬롯 Azure Functions 추가

슬롯 관리 자동화Automate slot management

Azure CLI를 사용 하 여 슬롯에 대해 다음 작업을 자동화할 수 있습니다.Using the Azure CLI, you can automate the following actions for a slot:

App Service 계획 변경Change App Service plan

App Service 계획으로 실행 되는 함수 앱을 사용 하 여 슬롯에 대 한 기본 App Service 요금제를 변경할 수 있습니다.With a function app that is running under an App Service plan, you have the option to change the underlying App Service plan for a slot.

참고

소비 계획에서 슬롯의 App Service 요금제를 변경할 수 없습니다.You can't change a slot's App Service plan under the Consumption plan.

슬롯의 App Service 계획을 변경 하려면 다음 단계를 사용 합니다.Use the following steps to change a slot's App Service plan:

  1. 슬롯으로 이동Navigate to a slot

  2. 플랫폼 기능에서 모든 설정 을 클릭 합니다.Under Platform Features, click All Settings

    App service 계획 변경

  3. App Service 계획 을 클릭 합니다.Click on App Service plan

  4. 새 App Service 계획을 선택 하거나 새 계획을 만듭니다.Select a new App Service plan, or create a new plan

  5. 확인을 클릭합니다.Click OK

    App service 계획 변경

제한 사항Limitations

Azure Functions 배포 슬롯에는 다음과 같은 제한 사항이 있습니다.Azure Functions deployment slots have the following limitations:

  • 앱에 사용할 수 있는 슬롯 수는 계획에 따라 다릅니다.The number of slots available to an app depends on the plan. 소비 계획은 배포 슬롯을 하나만 허용 합니다.The Consumption plan is only allowed one deployment slot. App Service 계획에서 실행 되는 앱에 대 한 추가 슬롯을 사용할 수 있습니다.Additional slots are available for apps running under the App Service plan.
  • 슬롯을 교환 하면 AzureWebJobsSecretStorageType 앱 설정이 files같은 앱에 대 한 키가 다시 설정 됩니다.Swapping a slot resets keys for apps that have an AzureWebJobsSecretStorageType app setting equal to files.
  • Linux 소비 계획에는 슬롯을 사용할 수 없습니다.Slots are not available for the Linux Consumption plan.

지원 수준Support levels

배포 슬롯에 대해 지원 되는 두 가지 수준은 다음과 같습니다.There are two levels of support for deployment slots:

  • GA (일반 공급) : 프로덕션 사용을 위해 완전히 지원 되 고 승인 됩니다.General availability (GA): Fully supported and approved for production use.
  • 미리 보기: 아직 지원 되지 않지만 나중에 GA 상태에 도달할 것으로 예상 됩니다.Preview: Not yet supported, but is expected to reach GA status in the future.
OS/호스팅 계획OS/Hosting plan 지원 수준Level of support
Windows 사용량Windows Consumption 일반 공급General availability
Windows PremiumWindows Premium 일반 공급General availability
Windows 전용Windows Dedicated 일반 공급General availability
Linux 소비Linux Consumption 지원되지 않음Unsupported
Linux 프리미엄Linux Premium 일반 공급General availability
Linux 전용Linux Dedicated 일반 공급General availability

다음 단계Next steps