다음을 통해 공유


Durable Functions 버전 개요

Durable Functions 는 서버리스 환경에서 상태 저장 함수를 작성할 수 있는 Azure FunctionsAzure WebJobs 의 확장입니다. 확장은 상태, 검사점 및 다시 시작을 관리합니다. Durable Functions에 아직 익숙하지 않은 경우 개요 설명서를 참조하세요.

Microsoft.Azure.WebJobs.Extensions.DurableTask v3.x

이 섹션에서는 새로운 Microsoft.Azure.WebJobs.Extensions.DurableTask v3 패키지(후속 섹션에서 WebJobs.Extensions.DurableTask라고 함)를 소개하고 업데이트 및 변경 내용에 대한 세부 정보를 제공합니다. 이 업데이트는 In-process 모델을 사용하는 Durable C# 앱을 실행하는 고객에게만 호환성이 손상되는 변경으로 간주됩니다.

비고

Durable Functions .NET out-of-process 패키지인 Microsoft.Azure.Functions.Worker.Extensions.DurableTask는 Microsoft.Azure.WebJobs.Extensions.DurableTask를 기본 어셈블리로 참조합니다. 따라서 이 업데이트는 버전 1.2.x부터 Microsoft.Azure.Functions.Worker.Extensions.DurableTask에도 적용됩니다.

새 Azure Storage SDK

기본적으로 Durable Functions는 Azure Storage를 스토리지 백 엔드로 사용하여 애플리케이션 상태를 지속적으로 저장합니다. WebJobs.Extensions.DurableTask v3에서 Azure Storage 백 엔드는 Azure.Data.Tables, Azure.Storage.Blobs 및 Azure.Storage.Queues의 최신 버전을 사용하도록 업그레이드되었습니다. 새 Azure Storage SDK는 더욱 보호되며 관리 ID에 대한 향상된 지원을 제공합니다. 또한 더 나은 성능, 보다 효율적인 데이터 처리 및 기타 최신 스토리지 기능을 제공합니다.

Azure Storage 백 엔드의 비용 효율성 향상

Azure Storage 백 엔드에서 Partition Manager는 작업자 간에 파티션/제어 큐를 배포하는 역할을 담당합니다. WebJobs.Extensions.DurableTask v3 패키지는 기본적으로 파티션 관리자 V3를 사용합니다. 이 V3는 Azure 테이블을 활용하여 Azure Blob 임대 대신 파티션 할당을 관리하는 새로운 디자인입니다. 이 디자인은 디버깅을 더 쉽게 만들면서 스토리지 비용을 크게 줄일 수 있습니다. 파티션 관리자 V3를 사용하면 스토리지 계정에 이름이 지정된 Partitions이 만들어지으므로 파티션 정보를 쉽게 확인할 수 있습니다.

Functions v1 런타임에 대한 지원이 제거됨

WebJobs.Extensions.DurableTask v3은 2026년 9월에 종료될 예정인 Azure Functions 런타임 버전 1.x를 더 이상 지원하지 않습니다. Functions 런타임 v1을 사용해야 하는 경우 v2.11.0보다 낮은 Durable Functions 확장 버전을 사용하세요. 지원 종료 시점이 다가오면, Durable Functions는 런타임 v1에 대한 지원도 중단할 것입니다.

.NET Framework 업데이트

WebJobs.Extensions.DurableTask v3은 .NET Framework를 .NET Core 3.1에서 .NET 6으로 업데이트하여 최신 .NET 기능 및 라이브러리와의 향상된 성능과 향상된 호환성을 제공합니다. 이 업데이트는 Azure Functions 확장 번들의 향후 릴리스와 일치합니다.

WebJobs.Extensions.DurableTask v2.x에서 v3.x로 마이그레이션

WebJobs.Extensions.DurableTask v2.x에서 v3.x로의 마이그레이션은 변경 내용이 백그라운드에 있으므로 코드 변경 없이 간단하게 설계되었습니다. v3.x의 새로운 기능과 향상된 기능을 활용하도록 종속성을 업데이트하기만 하면 됩니다.

비고

WebJobs.Extensions.DurableTask v3은 v2(UTF-8)에 사용된 것과 비교할 때 다른 텍스트 인코딩(Base64)이 있는 최신 버전의 Azure Storage SDK를 사용합니다. 이전 버전과의 호환성을 보장하기 위해 v3.x에서 v2.x로 다운그레이드해야 하는 경우 v2.13.5 이상을 사용합니다. Microsoft.Azure.Functions.Worker.Extensions.DurableTask를 사용하는 .NET Out-of-process 사용자의 경우 v1.2.x 이상에서 되돌리는 경우 v1.1.5 이상으로 다운그레이드합니다.

v2.x의 지원 및 유지 관리

WebJobs.Extensions.DurableTask v2.x는 보안 업데이트 및 버그 수정을 계속 수신하여 기존 애플리케이션이 안전하고 안정적으로 유지되도록 합니다. 그러나 모든 새로운 기능과 향상된 기능은 v3.x에만 추가됩니다. 이 때문에 최신 기능과 지속적인 향상된 기능을 활용하려면 최대한 빨리 WebJobs.Extensions.DurableTask v3으로 업그레이드해야 합니다.

Microsoft.Azure.WebJobs.Extensions.DurableTask v2.x의 새로운 기능

이 섹션에서는 버전 2.x에 추가된 Durable Functions의 기능에 대해 설명합니다.

비고

이 섹션은 dotnet 독립 실행형 작업자의 Durable Functions에는 적용되지 않습니다. 이를 위해 지속성 함수 격리 프로세스 개요를 참조하세요.

Durable 엔터티

Durable Functions 2.x에서는 새로운 엔터티 함수 개념을 도입했습니다.

엔터티 함수는 지속성 엔터티라고 하는 작은 상태 부분을 읽고 업데이트하기 위한 작업을 정의합니다. 오케스트레이터 함수와 마찬가지로 엔터티 함수는 특수 트리거 유형인 엔터티 트리거를 사용하는 함수입니다. 오케스트레이터 함수와 달리 엔터티 함수에는 특정 코드 제약 조건이 없습니다. 또한 엔터티 함수는 제어 흐름을 통해 상태를 암시적으로 나타내는 대신 상태를 명시적으로 관리합니다.

자세한 내용은 지속성 엔터티 문서를 참조하세요.

지속성 HTTP

Durable Functions 2.x에서는 다음을 수행할 수 있는 새로운 지속성 HTTP 기능을 도입했습니다.

  • 오케스트레이션 함수에서 직접 HTTP API를 호출합니다(일부 문서화된 제한 사항 포함).
  • 자동 클라이언트 쪽 HTTP 202 상태 폴링을 구현합니다.
  • Azure 관리 ID에 대한 기본 제공 지원.

자세한 내용은 HTTP 기능 문서를 참조하세요.

1.x에서 2.x로 마이그레이션

이 섹션에서는 새 기능을 활용하기 위해 기존 버전 1.x Durable Functions를 버전 2.x로 마이그레이션하는 방법을 설명합니다.

확장 프로그램 업그레이드하기

프로젝트에 최신 2.x 버전의 Durable Functions 바인딩 확장을 설치합니다.

JavaScript, Python 및 PowerShell

Durable Functions 2.x는 Azure Functions 확장 번들의 버전 2.x부터 사용할 수 있습니다.

Durable Functions에서 Python을 지원하려면 Durable Functions 2.x 이상이 필요합니다.

프로젝트에서 확장 번들 버전을 업데이트하려면 host.json 열고 버전 4.x(extensionBundle)를 사용하도록 섹션을 업데이트 [4.*, 5.0.0) 합니다.

{
    "version": "2.0",
    "extensionBundle": {
        "id": "Microsoft.Azure.Functions.ExtensionBundle",
        "version": "[4.*, 5.0.0)"
    }
}

비고

확장 번들 버전을 변경한 후 Visual Studio Code에서 올바른 템플릿을 표시하지 않는 경우 Developer: Reload Window 명령(Windows 및 Linux의 경우 Ctrl+R , macOS의 Command+R )을 실행하여 창을 다시 로드합니다.

자바

Durable Functions 2.x는 Azure Functions 확장 번들의 버전 4.x부터 사용할 수 있습니다. Java 함수를 실행하려면 Azure Functions 4.0 런타임을 사용해야 합니다.

프로젝트에서 확장 번들 버전을 업데이트하려면 host.json 열고 버전 4.x(extensionBundle)를 사용하도록 섹션을 업데이트 [4.*, 5.0.0) 합니다.

{
    "version": "2.0",
    "extensionBundle": {
        "id": "Microsoft.Azure.Functions.ExtensionBundle",
        "version": "[4.*, 5.0.0)"
    }
}

닷넷

최신 버전의 Durable Functions 바인딩 확장을 사용하도록 .NET 프로젝트를 업데이트합니다.

자세한 내용은 Azure Functions 바인딩 확장 등록 을 참조하세요.

코드 업데이트

Durable Functions 2.x에는 몇 가지 주요 변경 내용이 도입되었습니다. Durable Functions 1.x 애플리케이션은 코드를 변경하지 않고 Durable Functions 2.x와 호환되지 않습니다. 이 섹션에서는 버전 1.x 함수를 2.x로 업그레이드할 때 변경해야 하는 몇 가지 사항을 나열합니다.

Host.json 스키마

Durable Functions 2.x는 새 host.json 스키마를 사용합니다. 1.x의 주요 변경 내용은 다음과 같습니다.

  • "storageProvider" 스토리지별 구성 (및 "azureStorage" 하위 섹션)에 대한.
  • "tracing" 추적 및 로깅 구성을 위한 것입니다.
  • "notifications""eventGrid" 하위 섹션에 대한 Event Grid 알림 구성

자세한 내용은 Durable Functions host.json 참조 설명서를 참조하세요 .

기본 작업 허브 이름 변경

버전 1.x에서 작업 허브 이름이 host.json지정되지 않은 경우 기본값은 "DurableFunctionsHub"입니다. 버전 2.x에서 기본 작업 허브 이름은 이제 함수 앱의 이름에서 파생됩니다. 이 때문에 2.x로 업그레이드할 때 작업 허브 이름을 지정하지 않은 경우, 코드는 새 작업 허브에서 작동하게 되며, 진행 중인 모든 오케스트레이션은 더 이상 이를 처리할 애플리케이션이 없게 됩니다. 이를 해결하려면 작업 허브 이름을 v1.x 기본값인 "DurableFunctionsHub"로 명시적으로 설정하거나 가동 중지 시간 0 배포 지침 에 따라 진행 중인 오케스트레이션의 호환성이 손상되는 변경 내용을 처리하는 방법에 대한 세부 정보를 확인할 수 있습니다.

공용 인터페이스 변경(.NET에만 해당)

버전 1.x에서는 Durable Functions에서 지원하는 다양한 컨텍스트 개체에 단위 테스트에 사용하기 위한 추상 기본 클래스가 있습니다. Durable Functions 2.x의 일부로 이러한 추상 기본 클래스는 인터페이스로 대체됩니다.

다음 표에서는 주요 변경 내용을 나타냅니다.

1.x 2.x
DurableOrchestrationClientBase IDurableOrchestrationClient 또는 IDurableClient
DurableOrchestrationContext 또는 DurableOrchestrationContextBase IDurableOrchestrationContext
DurableActivityContext 또는 DurableActivityContextBase IDurableActivityContext
OrchestrationClientAttribute DurableClientAttribute

추상 기본 클래스에 가상 메서드가 포함된 경우 이러한 가상 메서드는 정의된 확장 메서드 DurableContextExtensions로 대체되었습니다.

function.json 변경 내용

Durable Functions 1.x에서 오케스트레이션 클라이언트 바인딩은 다음을 typeorchestrationClient사용합니다. 버전 2.x는 대신 사용합니다 durableClient .

이벤트 변경 사항 발생시키기

Durable Functions 1.x에서 raise 이벤트 API를 호출하고 존재하지 않는 인스턴스를 지정하면 조용히 실패했습니다. 2.x부터 이벤트를 존재하지 않는 오케스트레이션으로 올리면 예외가 발생합니다.