Azure Portal을 사용하는 Durable Functions 만들기
Azure Functions에 대한 지속성 함수 확장이 NuGet 패키지 Microsoft.Azure.WebJobs.Extensions.DurableTask에서 제공됩니다. 이 확장을 함수 앱에 설치해야 합니다. 이 문서에서는 Azure Portal에서 Durable Functions를 개발할 수 있도록 이 패키지를 설치하는 방법을 보여줍니다.
참고 항목
- C#에서 Durable Functions를 개발하려는 경우에는 대신 Visual Studio 2019 개발을 고려해야 합니다.
- JavaScript에서 Durable Functions를 개발하려는 경우에는 대신 Visual Studio Code 개발을 고려해야 합니다.
함수 앱 만들기
함수 실행을 호스트하는 함수 앱이 있어야 합니다. 함수 앱을 사용하면 함수를 논리 단위로 그룹화하여 리소스를 보다 쉽게 관리, 배포, 크기 조정 및 공유할 수 있습니다. .NET 또는 JavaScript 앱을 만들 수 있습니다.
Azure Portal 메뉴 또는 홈 페이지에서 리소스 만들기를 선택합니다.
새로 만들기 페이지에서 컴퓨팅>함수 앱을 선택합니다.
호스팅 옵션 선택에서 사용량>선택을 선택하여 기본 사용량 플랜에서 앱을 만듭니다. 이 서버리스 호스팅 옵션에서는 함수가 실행되는 시간만큼만 요금을 지불하면 됩니다. 프리미엄 플랜은 동적 크기 조정도 제공합니다. App Service 계획에서 실행하는 경우 함수 앱의 크기 조정을 관리해야 합니다.
기본 사항 페이지에서 함수 앱 설정을 다음 표에서 지정한 대로 사용합니다.
설정 제안 값 설명 구독 구독 새 함수 앱을 만드는 데 사용되는 구독입니다. 리소스 그룹 myResourceGroup 함수 앱을 만들 새 리소스 그룹의 이름입니다. 기존 리소스 그룹에서 새 함수 앱을 만들 때 알려진 제한 사항이 있으므로 새 리소스 그룹을 만들어야 합니다. 함수 앱 이름 전역적으로 고유한 이름 새 함수 앱을 식별하는 이름입니다. 유효한 문자는 a-z
(대/소문자 구분 안 함),0-9
및-
입니다.런타임 스택 기본 언어 즐겨찾는 함수 프로그래밍 언어를 지원하는 런타임을 선택합니다. 포털 내 편집은 JavaScript, PowerShell, Python, TypeScript 및 C# 스크립트에만 사용할 수 있습니다.
포털 내 편집을 지원하는 C# 스크립트 앱을 만들려면 In Process 모델을 지원하는 런타임 버전을 선택해야 합니다.
C# 클래스 라이브러리 및 Java 함수는 로컬로 개발해야 합니다.버전 버전 번호 설치된 런타임의 버전을 선택합니다. 지역 기본 지역 사용자 또는 함수가 액세스할 수 있는 기타 서비스에 가까운 지역을 선택합니다. 운영 체제 Windows 운영 체제는 런타임 스택 선택에 따라 미리 선택되지만 필요한 경우 설정을 변경할 수 있습니다. 포털 내 편집은 Windows에서만 지원됩니다. 스토리지 탭에 새 스토리지 계정을 만드는 기본 동작과 모니터링 탭의 새 Application Insights 인스턴스를 포함하여 나머지 탭의 기본 옵션을 적용합니다. 기존 스토리지 계정 또는 Application Insights 인스턴스를 사용하도록 선택할 수도 있습니다.
검토 + 만들기를 선택하여 선택한 앱 구성을 검토한 다음 만들기를 선택하여 함수 앱을 프로비전하고 배포합니다.
포털의 오른쪽 위 모서리에 있는 알림 아이콘을 선택하고 배포 성공 메시지를 확인합니다.
리소스로 이동을 선택하여 함수 앱을 봅니다. 대시보드에 고정을 선택할 수도 있습니다. 고정하면 대시보드에서 이 함수 앱 리소스로 쉽게 돌아올 수 있습니다.
기본적으로 만들어진 함수 앱은 Azure Functions 런타임 버전 2.x를 사용합니다. Durable Functions 확장은 C#의 경우 Azure Functions 런타임의 버전 1.x 및 2.x 모두, JavaScript의 경우 버전 2.x에서 작동합니다. 그러나 템플릿은 선택한 언어에 관계없이 런타임의 버전 2.x를 대상으로 하는 경우에만 사용 가능합니다.
durable-functions npm 패키지 설치(JavaScript만 해당)
JavaScript Durable Functions를 만드는 경우 durable-functions
npm 패키지를 설치해야 합니다.
함수 앱 페이지에서 왼쪽 창의 개발 도구 아래에서 고급 도구를 선택합니다.
고급 도구 페이지에서 Go를 선택합니다.
Kudu 콘솔 내에서 디버그 콘솔을 선택한 다음, CMD를 선택합니다.
함수 앱의 파일 디렉터리 구조가 표시되어야 합니다.
site/wwwroot
폴더로 이동합니다. 여기에서package.json
파일을 파일 디렉터리 창에 끌어서 놓아 업로드할 수 있습니다. 샘플package.json
은 다음과 같습니다.{ "dependencies": { "durable-functions": "^1.3.1" } }
package.json
이 업로드되면 Kudu 원격 실행 콘솔에서npm install
명령을 실행합니다.
오케스트레이터 함수 만들기
함수 앱의 왼쪽 창에서 Functions를 선택한 다음, 맨 위 메뉴에서 추가를 선택합니다.
새 함수 페이지의 검색 필드에
durable
을 입력한 다음, Durable Functions HTTP 시작 템플릿을 선택합니다.새 함수 이름에
HttpStart
를 입력한 다음, 함수 만들기를 선택합니다.만들어진 함수를 사용하오여 오케스트레이션을 시작합니다.
이번에는 Durable Functions 오케스트레이터 템플릿을 사용하여 이 함수 앱에서 다른 함수를 만듭니다. 새 오케스트레이션 함수
HelloSequence
에 이름을 지정합니다.Durable Functions 작업 템플릿을 사용하여
Hello
라는 이름의 세 번째 함수를 만듭니다.
Durable Functions 오케스트레이션 테스트
HttpStart 함수로 돌아가서 함수 URL 가져오기를 선택하고 클립보드에 복사 아이콘을 선택하여 URL을 복사합니다. 이 URL을 사용하여 HelloSequence 함수를 시작합니다.
보안 HTTP 테스트 도구를 사용하여 URL 엔드포인트에 HTTP POST 요청을 보냅니다. 이 예제는 지속성 함수에 POST 요청을 보내는 cURL 명령입니다.
curl -X POST https://{your-function-app-name}.azurewebsites.net/api/orchestrators/{functionName} --header "Content-Length: 0"
이 예제에서
{your-function-app-name}
은 함수 입의 이름에 해당하는 도메인이고,{functionName}
은 HelloSequence 오케스트레이터 함수입니다. 응답 메시지에는 실행을 모니터링하고 관리하기 위해 사용할 수 있는 URI 엔드포인트 세트가 포함되어 있습니다. 다음 예와 같습니다.{ "id":"10585834a930427195479de25e0b952d", "statusQueryGetUri":"https://...", "sendEventPostUri":"https://...", "terminatePostUri":"https://...", "rewindPostUri":"https://..." }
데이터를 안전하게 유지하는 HTTP 테스트 도구를 선택해야 합니다. 자세한 내용은 HTTP 테스트 도구를 참조하세요.
statusQueryGetUri
엔드포인트 URI를 호출하면 Durable Functions의 현재 상태가 보이며 다음 예와 같습니다.{ "runtimeStatus": "Running", "input": null, "output": null, "createdTime": "2017-12-01T05:37:33Z", "lastUpdatedTime": "2017-12-01T05:37:36Z" }
상태가 완료됨으로 변경될 때까지
statusQueryGetUri
엔드포인트를 계속 호출하면 다음 예제와 같은 응답이 표시됩니다.{ "runtimeStatus": "Completed", "input": null, "output": [ "Hello Tokyo!", "Hello Seattle!", "Hello London!" ], "createdTime": "2017-12-01T05:38:22Z", "lastUpdatedTime": "2017-12-01T05:38:28Z" }
첫 번째 Durable Functions가 Azure에서 작동되고 실행됩니다.