이 문서에서는 호스팅 플랫폼, 크기 조정 요구 사항 및 운영 요구 사항에 따라 Durable Functions(Azure Functions)과 표준 지속성 작업 SDK(자체 호스팅) 중에서 결정할 수 있습니다.
팁 (조언)
호스팅 플랫폼을 이미 알고 있나요? 빠른 답변을 보려면 플랫폼 조회 테이블 로 이동합니다.
지속성 태스크란?에 설명된 대로 Durable Task는 다음 두 가지 호스팅 모델을 지원합니다.
- Azure Functions(Durable Functions을 통해)
- 자체 호스팅 ( 독립 실행형 지속성 작업 SDK를 통해).
두 호스팅 모델 모두 동일한 핵심 지속성 실행 기능(오케스트레이션, 활동, 타이머, 외부 이벤트 등)을 제공하지만 애플리케이션이 호스트, 크기 조정 및 배포되는 방식은 다릅니다.
일반적으로 애플리케이션이 실행되는 위치에 따라 사용하는 호스팅 모델이 결정됩니다. Azure Functions 빌드하는 경우 Durable Functions 사용합니다. 다른 컴퓨팅 플랫폼에서 빌드하는 경우 독립 실행형 지속성 작업 SDK를 사용합니다.
호스팅 플랫폼에 따라 선택
애플리케이션의 호스팅 플랫폼을 이미 알고 있는 경우 다음 표를 통해 사용할 호스팅 모델을 결정할 수 있습니다.
| 호스팅 플랫폼 | 호스팅 모델 |
|---|---|
| Azure Functions(소비, 유연한 소비, 프리미엄) | Durable Functions |
| Azure Container Apps(Azure Functions 런타임 사용) | 둘 중 하나 |
| Azure App Service(Azure Functions 런타임 사용) | 둘 중 하나 |
| AKS(Azure Kubernetes Service) | 독립 실행형 지속성 작업 SDK |
| 가상 머신 또는 온-프레미스 | 독립 실행형 지속성 작업 SDK |
메모
Azure App Service와 Azure Container Apps는 모두 Azure Functions 런타임을 호스팅할 수 있는 환경을 제공합니다. 이를 위해 두 가지 방법을 선택할 수 있는데, 하나는 완전 관리형 Azure Functions 통합을 사용하는 방식이고, 다른 하나는 Functions 런타임을 직접 배포하여 운영하는 방식입니다. 이러한 유연성을 통해 사용자는 관리 편의성과 제어 수준을 필요에 맞게 조정할 수 있습니다. 따라서 두 플랫폼 모두 호스팅 모델을 지원합니다. Azure Functions 호스팅 모델에 대한 자세한 내용은 Azure Functions 호스팅 계획 참조하세요.
호스팅 모델 비교
다음 표에서는 두 호스팅 모델 간의 주요 차이점을 요약합니다.
| Durable Functions (Azure Functions) | 독립 실행형 지속성 작업 SDK(자체 호스팅) | |
|---|---|---|
| 호스팅 | Azure Functions(사용량, Flex 사용, Premium), App Service, 그리고 Functions 런타임이 포함된 Container Apps | 모든 플랫폼: Azure Container Apps, AKS, App Service, VM, 온-프레미스 |
| 크기 조정 | Azure Functions의 관리 확장 인프라에 의해 자동으로 관리됨 | 직접 크기 조정을 관리하거나 플랫폼 네이티브 자동 크기 조정(예: Kubernetes의 KEDA )을 사용합니다. |
| 트리거 | HTTP, 큐, 타이머, Event Grid 및 기타 Azure Functions 트리거에 대한 기본 제공 지원 | 고유한 진입점(예: HTTP 엔드포인트, 메시지 소비자 등)을 정의합니다. |
| 상태 저장소 | ** 내구성 작업 스케줄러(권장), Azure Storage, MSSQL, Netherite | 지속성 작업 스케줄러 |
| 언어들 | .NET(C#/F#), JavaScript/TypeScript, Python, Java, PowerShell | .NET(C#/F#), JavaScript/TypeScript, Python, Java |
| 모니터링 | Azure Portal, Application Insights와 기본 제공 통합 | 고유한 모니터링 솔루션(예: Azure Monitor, Prometheus 또는 Grafana)을 설정합니다. |
메모
콜드 시작 은 유휴 상태인 후 함수 앱이 시작될 때 발생합니다. 프리미엄 및 전용 호스팅 계획은 콜드 시작 대기 시간을 줄이기 위해 인스턴스를 따뜻하게 유지합니다.
Flex Consumption 호스팅 계획은 콜드 시작 완화로 "항상 준비된 인스턴스" 개념을 제공합니다.
Azure Functions 호스팅 모델 대해 자세히 알아봅니다.
기본 제공 HTTP API
Azure Functions 함수 앱에 대한 HTTP 엔드포인트를 제공하며, Durable Functions 확장은 HTTP를 통한 인스턴스 관리에 대한 기본 제공 지원을 제공합니다.
지속성 작업 SDK를 사용하는 경우 호스팅 컴퓨팅에 따라 고유한 HTTP 엔드포인트를 구현해야 합니다.
| 특징 | Durable Functions | 내구성 있는 작업 SDK |
|---|---|---|
| 관리 HTTP API | ✅ 기본 제공 | ❌ 자체 구현 |
| 자동화 상태 URL | ✅ 기본 제공 | ❌ 자체 구현 |
Durable Functions의 HTTP 기능
Durable Functions 오케스트레이션 시작, 상태 쿼리, 이벤트 발생 및 인스턴스 종료를 위해 HTTP 엔드포인트를 자동으로 노출합니다. 이러한 API는 비동기 HTTP 폴링 패턴을 따르므로 외부 시스템과 쉽게 통합할 수 있습니다.
메모
Durable Functions 기본 제공 HTTP API를 사용하려는 경우 DurableTaskClient 클래스를 직접 사용하도록 지원합니다.
자세히 알아보기: Durable Functions의 HTTP 기능 | HTTP API 참조
Durable Task SDK 관리
지속성 작업 SDK를 사용하면 DurableTaskClient 클래스를 직접 호출하여 오케스트레이션 인스턴스를 관리합니다. HTTP 엔드포인트가 필요한 경우 선호하는 웹 프레임워크를 사용하여 직접 구현합니다.
자세한 정보: 오케스트레이션 인스턴스 관리
스토리지 백 엔드
두 호스팅 모델 모두 오케스트레이션 상태 지속성 및 실행을 위한 완전 관리형 Azure 서비스인 Durable Task Scheduler를 사용합니다(가격 정보). Durable Functions 또한 사용자 고유의 스토리지 백 엔드(Azure Storage, MSSQL 및 Netherite)를 지원합니다. 지속성 작업 SDK는 지속성 작업 스케줄러만 사용합니다.
자세한 정보: 스토리지 공급자
작업 허브 구성
Durable Functions host.json 파일에서 작업 허브를 구성합니다. 지속성 작업 SDK는 코드 및 환경 변수(연결 문자열/엔드포인트)에서 작업 허브를 구성합니다.
자세한 정보: 작업 허브
진단 및 버전 관리
| 특징 | Durable Functions | 내구성 있는 작업 SDK |
|---|---|---|
| 지속성 작업 스케줄러 대시보드 | ✅ 예 | ✅ 예 |
| Application Insights | ✅ 기본 제공 | 수동 설정 |
| 무중단 배포 | ✅ 함수 슬롯 | 플랫폼별 |
각 모델을 선택하는 경우
두 호스팅 모델 중에서 선택할 때는 다음 요소를 고려합니다.
| 다음과 같은 경우에는 Durable Functions을 선택합니다. | 다음과 같은 경우 독립 실행형 지속성 작업 SDK를 선택합니다. |
|---|---|
| 기본 제공 Azure Functions 트리거(HTTP, 큐, 타이머 등)를 원합니다. | 컨테이너 및 해당 진입점에 대한 모든 권한을 원합니다. |
| Azure Functions 호스팅 모델에 이미 익숙합니다. | Azure Functions 런타임 오버헤드 없이 경량 SDK를 사용하는 것이 좋습니다. |
| 함수 관리를 위해 Azure 포털 통합을 원합니다. | 컨테이너 플랫폼(AKS, App Service 등)에서 동일한 코드를 이식할 수 있도록 합니다. |
| 여러 스토리지 백 엔드 중에서 선택해야 합니다. | 기존에 있는 Functions가 아닌 애플리케이션 코드를 통합해야 합니다. |
| 0으로 자동 확장되는 서버리스 이벤트 기반 앱이 필요합니다. | 콜드 시작 지연 없이 항상 작동하는, 대기 시간이 짧은 워크로드가 필요합니다. |
| 실행당 종량제 가격 책정을 사용 계획과 함께 원합니다. | 일괄 처리에 최적화된 높은 처리량 시나리오 가 필요합니다. |
| 선언적 트리거 및 바인딩을 사용한 빠른 프로토타입 생성 이 필요합니다. | 기존 컨테이너화된 애플리케이션 또는 Kubernetes 애플리케이션이 있습니다. |
Migration
이미 Durable Functions 사용하고 있고 컨테이너 기반 배포로 이동하거나 지속성 작업 SDK의 호스팅 유연성을 활용하려는 경우 마이그레이션이 간단합니다. 오케스트레이션 코드는 두 프레임워크 간에 매우 유사합니다.
자세한 마이그레이션 지침은 Durable Functions에서 지속성 작업 SDK로 마이그레이션 참조하세요.
메모
Durable Task Framework(DTFx): Durable Task Framework는 내구성 있는 오케스트레이션을 위해 커뮤니티에서 유지 관리하는 오픈 소스 .NET 라이브러리입니다. 내부적으로 Durable Functions 종속성으로 사용되지만 공식적인 Microsoft 지원은 제공되지 않습니다. 새 프로젝트를 시작하는 경우 최신 지속성 작업 SDK 또는 Durable Functions 대신 사용합니다.
다음 단계
선택한 프레임워크를 시작합니다.
그런 다음 지속성 작업 스케줄러 백 엔드 공급자에 대해 자세히 알아봅니다.