Durable Task는 내결함성 워크플로 및 오케스트레이션을 일반 코드로 빌드하기 위한 Microsoft의 지속성 실행 프레임워크입니다. 복잡한 재시도 논리, 상태 컴퓨터 또는 메시지 큐를 관리하는 대신 비즈니스 논리를 간단한 함수로 작성합니다. 지속성 작업은 상태 지속성, 자동 복구 및 분산 조정을 처리합니다.
지속성 작업 워크플로는 크래시, 다시 시작 또는 재배포 후 마지막으로 완료된 단계에서 안정적으로 다시 시작하여 몇 시간, 일 또는 몇 달 동안 실행할 수 있습니다. 일반적인 사용 사례에는 분산 트랜잭션, 다중 에이전트 AI 오케스트레이션, 데이터 처리 파이프라인 및 인프라 관리가 포함됩니다.
지속성 작업은 다음을 포함합니다.
- 자체 호스팅 애플리케이션에 대한 지속성 작업 SDK 입니다.
- Azure Functions의 서버리스 호스팅을 위한 Durable Functions
- 지속성 작업 스케줄러는 지속성 워크로드를 위해 특별히 빌드된 완전 관리형 백 엔드 서비스입니다.
메모
지속성 실행 은 진행률을 자동으로 유지하여 일반 코드 내결함성을 만드는 업계 전반의 접근 방식입니다. 지속성 작업은 Microsoft 지속성 실행의 구현입니다.
주요 지속성 작업 사용 사례
애플리케이션에 분산 서비스 간에 신뢰할 수 있는 장기 실행 워크플로 오케스트레이션이 필요한 경우 Durable Task를 사용합니다. 일반적인 시나리오는 다음과 같습니다.
- 장기 실행 프로세스: 지속성 작업은 중단 또는 오류 발생 시에도 장기간 실행되는 프로세스의 상태 및 진행률을 관리할 수 있습니다. 예를 들어 주문 처리, 데이터 파이프라인, 기계 학습 모델 학습 및 장기 실행 시뮬레이션이 있습니다.
- 병렬 및 팬아웃/팬인 시나리오: 지속성 작업을 활용하면 여러 대의 컴퓨터에서 병렬로 동작하는 작업자들에게 작업을 분산시키고, 각 작업자의 처리 결과를 다시 하나로 취합할 수 있습니다. 예를 들어 이미지 처리, 맵 감소 작업 및 ETL 워크플로가 있습니다.
- 마이크로 서비스 및 API 오케스트레이션: 지속성 작업은 복잡한 제어 흐름 및 오류 처리를 사용하여 분산 서비스, API 및 컴퓨터에서 작업을 조정할 수 있습니다. 지속성 태스크를 사용하면 사가 패턴을 사용하여 분산 트랜잭션을 구현할 수 있습니다. 여기서 각 단계에는 이후 단계가 실패할 경우 자동으로 실행되는 보상 논리가 있습니다.
- 비즈니스 프로세스 자동화: 지속성 작업은 오랜 기간 동안 여러 단계, 종속성, 휴먼 인 더 루프 및 오류 처리를 포함하는 복잡하고 결정적인 비즈니스 프로세스를 자동화할 수 있습니다. 예를 들어 공급망 관리, 문서 검토, 고객 온보딩 및 ID 확인이 있습니다.
- 인프라 자동화: 지속성 작업은 복잡한 종속성 및 오류 처리로 인프라 프로비전, 구성 및 배포를 관리할 수 있습니다. 예를 들어 클라우드 리소스 관리 및 CI/CD 파이프라인이 있습니다.
- 다중 에이전트 오케스트레이션: 지속성 작업은 여러 AI 에이전트가 수행하는 작업을 조정하여 긴 기간 동안 안정적인 작업 준수를 보장하고 복잡한 다단계 AI 프로세스에 효율적인 토큰 사용을 보장할 수 있습니다. 예를 들어 심층 연구, 코딩 및 고객 지원을 위한 AI 에이전트가 있습니다.
이러한 시나리오에서 일반적인 테마는 너무 복잡하거나, 너무 오래 실행되거나, 너무 분산되어 임시 코드로 안정적으로 관리할 수 없는 작업을 포함한다는 것입니다. 지속성 태스크는 지속성, 내결함성 및 상태 저장 조정이라는 기본 보증을 제공하므로 해당 작업을 간단한 코드로 표현할 수 있습니다.
지원되는 언어 및 지속성 작업 호스팅 모델
Durable Task는 Azure Functions(Durable Functions 확장을 통해) 및 자체 호스팅(독립 실행형 지속성 작업 SDK를 통해)의 두 호스팅 모델에서 여러 프로그래밍 언어를 지원합니다. Azure Functions 호스팅 모델은 기본 제공 크기 조정 및 오케스트레이션 기능이 있는 완전 관리형 서버리스 컴퓨팅 환경을 제공하며, 자체 호스팅 모델을 사용하면 Azure Container Apps 같은 선택한 컴퓨팅 플랫폼에서 지속성 애플리케이션을 실행할 수 있습니다. Azure Kubernetes Service, Azure App Service 또는 가상 머신
| 언어 | Azure Functions | 자체 호스팅 |
|---|---|---|
| .NET(C#/F#) | ✅ | ✅ |
| 자바스크립트/타입스크립트 | ✅ | ✅ |
| Python | ✅ | ✅ |
| Java | ✅ | ✅ |
| PowerShell | ✅ | ❌ |
메모
Go 는 자체 호스팅 시나리오에 대해 커뮤니티에서 지원하는 오픈 소스 SDK로도 사용할 수 있지만 현재 실험 단계에 있으며 프로덕션용으로는 권장되지 않습니다.
Azure Functions 자체 호스팅 중에서 선택하는 방법에 대한 지침은 호스팅 모델 선택을 참조하세요.
아키텍처 구성 요소
지속성 작업에는 애플리케이션 코드에서 사용하는 SDK 와 상태를 관리하는 상태 스토리지 백 엔드 의 두 가지 기본 계층이 있습니다.
지속성 작업 SDK
지속성 작업 SDK는 애플리케이션 코드에서 오케스트레이션, 활동 및 엔터티를 작성하는 데 사용하는 것입니다. 오케스트레이터 함수 재생, 로컬 실행 컨텍스트 관리 및 상태 스토리지 백 엔드와 통신 등 지속성 실행의 메커니즘을 내부적으로 처리합니다. Durable Task는 앞에서 언급한 다양한 언어 및 호스팅 모델에 대한 몇 가지 SDK 옵션을 제공합니다.
이러한 옵션 중에서 선택하는 방법에 대한 지침은 호스팅 모델 선택을 참조하세요.
상태 스토리지 백엔드
상태 스토리지 백 엔드는 오케스트레이션 상태를 유지하고, 실행 기록을 유지하며, 컴퓨팅 인스턴스 간에 분산된 스케일 아웃을 조정합니다.
권장되는 상태 스토리지 옵션은 지속성 작업 스케줄러입니다. 이 서비스는 완전 관리형 Azure 서비스로, 지속성 작업 워크로드에 적합하도록 특별히 설계되고 최적화되어 있습니다. Durable Functions 및 독립 실행형 Durable Task SDK 모두에서 작동하고, 따라서 관리할 스토리지 인프라 없이 가장 다양한 기능을 제공합니다.
Durable Functions는 여러 BYO(bring-your-own) 스토리지 옵션을 지원합니다. 이렇게 하면 상태가 저장되는 위치를 더 자세히 제어할 수 있지만 기본 인프라를 직접 프로비전하고 관리해야 합니다. BYO 스토리지 백 엔드는 현재 Durable Functions만 사용할 수 있습니다.
스토리지 옵션에 대한 자세한 내용은 스토리지 공급자를 참조하세요.
추가 지속성 작업 리소스
연구 간행물
Durable Task는 Microsoft Research와 공동으로 개발되었습니다. 따라서 팀은 다음을 비롯한 연구 논문 및 아티팩트를 적극적으로 생성합니다.
- Durable Functions: 상태 저장 서버리스의 의미 체계(OOPSLA'21)
- Durable Functions 및 Netherite를 사용하는 서버리스 워크플로(사전 인쇄)
비디오 개요
다음 비디오에서는 Azure Durable Functions 이점을 강조 표시합니다.