Durable Task Scheduler를 Durable Functions 앱의 백 엔드로 사용하여 오케스트레이션 및 엔터티 런타임 상태를 저장합니다. 이 빠른 시작에서는 Durable Task Scheduler를 사용하도록 이미 구성된 Hello Cities 샘플을 복제하고, 에뮬레이터를 사용해 로컬에서 실행한 다음, Azure에 배포합니다.
- 지속성 작업 스케줄러에 대해 미리 구성된 Hello Cities 샘플을 복제합니다.
- 로컬 개발을 위해 지속성 작업 스케줄러 에뮬레이터를 설정합니다.
- 샘플을 실행하고 오케스트레이션 출력을 확인합니다.
- 앱을 Azure에 배포하고 Durable Task Scheduler 대시보드를 통해 모니터링합니다.
사전 요구 사항
Tip
에뮬레이터가 실행되면 지속성 작업 스케줄러 대시보드에 http://localhost:8082 액세스하여 오케스트레이션을 모니터링할 수 있습니다.
빠른 시작 샘플 실행
최신 버전의 Microsoft.Azure.Functions.Worker.Extensions.DurableTask.AzureManaged 패키지를 dotnet add package 명령을 사용하여 설치합니다.
dotnet add package Microsoft.Azure.Functions.Worker.Extensions.DurableTask.AzureManaged --prerelease
메모
지속성 작업 스케줄러 확장에는 Microsoft.Azure.Functions.Worker.Extensions.DurableTask 버전 1.2.2 이상이 필요합니다.
함수 앱을 빌드하고 시작합니다.
dotnet build func start
host.json에서 extensionBundle 속성을 지속성 작업 스케줄러 지원을 포함하는 버전 4.32.0 이상으로 업데이트합니다.
{
"extensionBundle": {
"id": "Microsoft.Azure.Functions.ExtensionBundle",
"version": "[4.32.0, 5.0.0)"
}
}
함수 앱을 시작합니다.
func start
함수 앱을 빌드하고 시작합니다.
mvn clean package mvn azure-functions:run
별도의 터미널에서 오케스트레이션을 트리거합니다.
$response = Invoke-RestMethod -Method POST -Uri http://localhost:7071/api/DurableFunctionsOrchestrationCSharp1_HttpStart $response
별도의 터미널에서 오케스트레이션을 트리거합니다.
$response = Invoke-RestMethod -Method POST -Uri http://localhost:7071/api/StartChaining $response
응답에는 오케스트레이션 인스턴스에 대한 상태 URL이 포함됩니다.
statusQueryGetUri를 조회하여 결과를 확인합니다.Invoke-RestMethod -Uri $response.statusQueryGetUri오케스트레이션의
runtimeStatus가Completed이면, 출력에는 인사말 결과가 포함됩니다.runtimeStatus에Running또는Pending이(가) 표시되면 잠시 기다렸다가 다시 쿼리하세요.의
http://localhost:8082에서 오케스트레이션 인스턴스에 대한 자세한 내용을 확인할 수 있습니다.
지속성 작업 스케줄러 구성 이해
이러한 샘플에서 지속성 작업 스케줄러를 사용하도록 만드는 주요 구성은 두 개의 파일에 있습니다.
host.json
storageProvider 섹션에서는 기본 Azure Storage 백 엔드 대신 지속성 작업 스케줄러(azureManaged)를 사용하도록 Durable Functions 지시합니다.
{
"extensions": {
"durableTask": {
"hubName": "default",
"storageProvider": {
"type": "azureManaged",
"connectionStringName": "DURABLE_TASK_SCHEDULER_CONNECTION_STRING"
}
}
}
}
local.settings.json
연결 문자열은 개발용으로 로컬 에뮬레이터를 가리킵니다.
{
"Values": {
"DURABLE_TASK_SCHEDULER_CONNECTION_STRING": "Endpoint=http://localhost:8080;TaskHub=default;Authentication=None"
}
}
메모
기존 Durable Functions 앱을 마이그레이션하려면 이러한 두 파일을 업데이트하고 언어에 적합한 확장 패키지를 추가합니다. .NET의 경우 Microsoft.Azure.Functions.Worker.Extensions.DurableTask.AzureManaged NuGet 패키지를 설치합니다. 다른 언어의 경우 host.json의 확장 번들을 버전 [4.32.0, 5.0.0)로 업데이트합니다.
Azure 앱 실행
필수 리소스 만들기
함수 앱 통합 생성 흐름에 따라 Azure에서 지속성 작업 스케줄러 인스턴스 및 Azure Functions 앱을 만듭니다. 이 환경은 자동으로 ID 기반 액세스를 설정하고 앱이 스케줄러에 액세스하는 데 필요한 환경 변수를 구성합니다.
함수 앱 만들기 블레이드로 이동합니다.
함수 앱 만들기(Flex Consumption) 블레이드에서 기본 탭의 정보를 입력하세요.
분야 설명 Subscription Azure 구독을 선택합니다. 리소스 그룹 기존 리소스 그룹을 선택하거나 새로 만들기 를 클릭하여 새 리소스 그룹을 만듭니다. 함수 앱 이름 함수 앱의 고유한 이름을 만듭니다. 코드 또는 컨테이너 이미지를 배포하려고 하나요? 코드 옵션을 선택한 상태로 유지합니다. 지역 지원되는 지역 중 하나를 선택합니다. 런타임 스택 이 빠른 시작에 사용 중인 런타임을 선택합니다. 버전 런타임 스택 버전을 선택합니다. 인스턴스 크기 인스턴스 크기를 선택하거나 기본 선택을 사용합니다. 인스턴스 크기에 대해 자세히 알아봅니다. 영역 중복 기본 설정인 사용 안 함으로 두십시오. Durable Functions 탭을 선택합니다.
Azure 관리형: Durable Task Scheduler를 Durable Functions의 백 엔드 공급자로 선택합니다.
스케줄러 리소스를 만듭니다. 이 작업은 자동으로 작업 허브를 만듭니다.
분야 설명 스토리지 백 엔드 Azure 관리형: 지속성 작업 스케줄러를 선택합니다. 지역 스케줄러 및 함수 앱 영역이 동일한지 확인합니다. 지속성 작업 스케줄러 제공된 스케줄러 이름을 사용하거나 새로 만들기 를 클릭하여 사용자 지정 이름을 만듭니다. Plan 프로젝트에 가장 적합한 가격 책정 계획을 선택합니다. 오케스트레이션 프레임워크 선택 가이드를 확인하여 프로덕션 사용에 가장 적합한 계획을 결정합니다. 용량 단위 "전용" 가격 책정 계획을 선택한 경우에만 적용됩니다. 최대 3개의 용량 단위를 선택할 수 있습니다. 검토 + 만들기를 클릭하여 리소스 만들기를 검토합니다.
필요한 RBAC(역할 기반 액세스 제어) 권한이 있는 사용자 할당 관리 ID가 자동으로 만들어지고 함수 앱에 추가됩니다. 다음과 같이 관리 ID 리소스와 관련된 요약 보기 정보를 찾을 수 있습니다.
할당된 역할(지속성 작업 데이터 기여자)
작업 허브 수준으로 범위가 지정된 할당
유효성 검사가 통과하면 만들기 를 클릭합니다.
리소스 배포는 약 15~20분이 걸릴 수 있습니다. 완료되면 Azure에 앱을 배포할 수 있습니다.
Azure에 함수 앱을 배포하세요.
중요합니다
기존 함수 앱에 배포하면 항상 Azure 해당 앱의 내용을 덮어씁니다.
명령 팔레트에서 Azure Functions: 함수 앱에 배포를 입력한 다음, 선택합니다.
방금 만든 함수 앱을 선택합니다. 이전 배포를 덮어쓰라는 메시지가 표시되면 배포를 선택하여 함수 코드를 새 함수 앱 리소스에 배포합니다.
배포가 완료되면 출력 보기를 선택하여 사용자가 만든 Azure 리소스를 포함한 만들기 및 배포 결과를 확인합니다. 알림이 누락된 경우 오른쪽 아래 모서리에 있는 종 모양 아이콘을 선택하여 다시 확인합니다.
Functions Premium 플랜의 앱
앱이 Functions Premium 계획에서 실행 중인 경우 배포 후 런타임 크기 조정 모니터링 설정을 켜서 부하에 따라 앱이 자동 크기 조정되도록 합니다.
az resource update -g <resource_group> -n <function_app_name>/config/web --set properties.functionsRuntimeScaleMonitoringEnabled=1 --resource-type Microsoft.Web/sites
함수 앱 테스트
다음 명령을 실행하여 함수의 URL을 가져옵니다.
az functionapp function list --resource-group <RESOURCE_GROUP_NAME> --name <FUNCTION_APP_NAME> --query '[].{Function:name, URL:invokeUrlTemplate}' --output json
오케스트레이션 상태 확인
지속성 작업 스케줄러 대시보드에서 오케스트레이션 인스턴스의 상태 및 활동 세부 정보를 확인합니다. 대시보드에 액세스하려면 로그인해야 합니다.
메모
다음 명령은 특정 작업 허브로 범위가 지정된 역할 할당을 보여 줍니다. 스케줄러의 모든 작업 허브에 액세스해야 하는 경우 스케줄러 수준에서 할당을 수행합니다.
포털에서 지속성 작업 스케줄러 리소스로 이동합니다.
작업 허브 이름을 클릭합니다.
왼쪽 메뉴에서 액세스 제어(IAM)를 선택합니다.
추가를 클릭하여 역할 할당을 추가합니다.
내구성 있는 작업 데이터 기여자를 검색하여 선택합니다. 다음을 클릭합니다.
멤버 탭의 액세스 할당에서 사용자, 그룹 또는 서비스 주체를 선택합니다.
구성원의 경우 + 구성원 선택을 클릭합니다.
구성원 선택 창에서 이름 또는 전자 메일을 검색합니다.
전자 메일을 선택하고 선택 단추를 클릭합니다.
검토 + 할당을 클릭하여 역할 할당을 완료합니다.
역할이 할당되면 작업 허브 리소스의 왼쪽 메뉴에서 개요 를 클릭하고 최상위 Essentials 섹션에 있는 대시보드 URL로 이동합니다.
자원을 정리하세요
빠른 시작을 완료하기 위해 만든 리소스가 더 이상 필요하지 않은 경우 Azure 구독의 관련 비용을 방지하기 위해 리소스 그룹 및 모든 관련 리소스를
다음 단계
- 지속성 작업 스케줄러 대시보드에 대해 자세히 알아봅니다.
- 지속성 작업 스케줄러를 사용하는 동안 발생할 수 있는 오류를 해결합니다.