본문 바로가기
MegazoneCloud
← 전체 글
Azure

Microsoft — Durable Task Extension for Microsoft Agent Framework GA: 무상태(Stateless) AI 에이전트의 이벤트 소싱 기반 영속성 아키텍처 전환

1. 한눈에 보는 핵심 요약 (Executive Summary)

  • 해결하고자 하는 근본 병목점 (The Core Problem): 다단계(Multi-step) LLM 오케스트레이션과 장기 실행(Long-running) 에이전트 워크플로우는 프로세스 재시작, 노드 장애, 외부 인간 승인 대기(Human-in-the-loop) 시 인메모리 세션과 실행 컨텍스트가 유실되는 구조적 취약점을 안고 있었습니다. 복구를 위해 전체 에이전트 파이프라인을 재실행할 경우 중복 LLM API 호출에 따른 막대한 토큰 비용과 지연시간(Latency) 스파이크가 발생했습니다.
  • 핵심 기술적 돌파구 (The Breakthrough): 검증된 분산 워크플로우 오케스트레이션 엔진인 Durable Task를 Microsoft Agent Framework와 결합하여, 에이전트 세션 상태 격리(Externalized State)와 이벤트 소싱 기반의 재생(Replay) 메커니즘을 GA(General Availability)로 제공합니다. 이를 통해 중단된 지점부터 워크플로우를 무손실 재개하며, 이미 완료된 LLM 호출 결과를 재사용하여 불필요한 모델 재호출을 완벽히 차단합니다.
  • 엔터프라이즈 임팩트 (Business & Engineering Impact): Azure Functions 기반의 완전 관리형 서버리스 환경 및 .NET/Python 자체 호스팅(Self-hosted) 환경 전반에서 탄력적(Fault-tolerant) 에이전트 시스템을 표준화된 프로그래밍 모델로 구축할 수 있습니다. 외부 승인 대기 중 유휴 컴퓨팅 자원을 0으로 축소하고 장애 복구 시 LLM 토큰 소모를 방지하여 에이전틱 AI 시스템의 TCO를 근본적으로 절감합니다.

2. 아키텍처 및 핵심 메커니즘 심층 분석 (Deep Architecture & Mechanics)

아키텍처 파이프라인 (Data & Logic Flow)

Durable Task Extension은 크게 Durable Agents(영속적 세션 관리)와 Durable Workflows(결함 허용 오케스트레이션)의 두 축으로 동작합니다. 워커 프로세스 내부가 아닌 외부화된 백엔드(Durable Task Scheduler)에 상태를 저장함으로써 프로세스 경계를 초월한 실행 연속성을 보장합니다.

  1. 세션 초기화 및 외부 직렬화 (Session Initialization & Externalization): 클라이언트가 요청을 보내면 AIAgent 프록시를 통해 고유 식별자를 가진 AgentSession이 생성됩니다. 세션 상태는 워커 로컬 메모리에 종속되지 않고 직렬화(SerializeSessionAsync / to_dict)되어 Durable Task 영속성 계층에 기록됩니다.
  2. 체크포인팅 및 재생(Replay) 엔진: 오케스트레이션 내에서 에이전트 호출(agent.run()) 또는 액티비티가 완료될 때마다 결과가 실행 히스토리에 추가됩니다. 프로세스가 재시작되면 오케스트레이터 코드가 처음부터 다시 실행(Replay)되지만, 이미 히스토리에 기록된 에이전트 호출은 실제 LLM API를 호출하지 않고 저장된 결과를 즉시 반환하여 다음 단계로 진입합니다.
  3. 그래프 기반 워크플로우 변환 (Graph-to-Orchestration): Agent Framework의 WorkflowBuilder로 정의된 방향성 그래프(Directed Graph, Fan-Out/Fan-In, 조건부 분기)를 엔진이 자동으로 분석하여 각 노드를 Durable Task 액티비티 및 서브 오케스트레이션으로 매핑·등록합니다.
  4. 비동기 이벤트 대기 (Suspension & Resumption): Human-in-the-loop 단계 진입 시 WaitForExternalEvent를 호출하여 워크플로우를 대기 상태로 전환합니다. 이 순간 워커 스레드는 즉시 해제되며, 외부 엔드포인트에서 RaiseEventAsync를 통해 이벤트가 주입되기 전까지 컴퓨트 자원을 일절 소비하지 않습니다.

핵심 알고리즘/구조의 작동 원리

  • 이벤트 소싱(Event Sourcing) 기반 상태 재구성: 오케스트레이터는 가변적인 변수 상태를 직접 저장하는 대신, 발생한 모든 이벤트(TaskScheduled, TaskCompleted, EventRaised)의 순차적 로그를 보관합니다. 장애 발생 시 이 로그를 기반으로 결정론적(Deterministic) 재실행을 수행함으로써 정확히 장애 직전의 프로그램 카운터(PC) 지점으로 복귀합니다.
  • 멱등성(Idempotency) 보장과 토큰 절감: 분산 환경에서 워커 노드가 크래시되었을 때 가장 위험한 요소는 다단계 LLM 체인의 중복 실행입니다. Durable Task Extension은 이미 히스토리에 존재하는 에이전트 실행 구간에 대해 토큰 발행(Token Generation)을 우회(Bypass)시켜 데이터 일관성과 비용 통제를 동시에 달성합니다.

엔지니어를 위한 직관적 비유 (Architectural Analogy)

이 메커니즘은 데이터베이스의 WAL(Write-Ahead Logging)과 트랜잭션 체크포인트 복구와 완벽히 동일합니다. 트랜잭션 도중 DB 서버가 셧다운되어도 REDO 로그를 읽어 이미 커밋된 블록을 디스크에서 다시 연산하지 않고 상태를 복구하듯, 에이전트 오케스트레이터는 ‘이벤트 히스토리’를 읽어 이미 수백 밀리초와 비용을 들여 받아온 LLM 응답을 디스크에서 즉시 REDO하고 미실행된 연산부터 파이프라인을 재개합니다.

기존 방식과의 메커니즘 대조 (Paradigm Comparison)

비교 항목기존 인메모리 / 커스텀 RDBMS 저장 방식Durable Task Extension 기반 방식구조적 차이점 및 개선 이점
장애 복구 모델워커 장애 시 인메모리 컨텍스트 소멸, 전체 파이프라인 처음부터 재시작이벤트 소싱 기반 Replay로 중단 지점 직전까지 고속 재생실패 지점 이후의 작업만 실행하여 LLM 중복 호출 및 과금 방지
세션 결합도세션을 처리 중인 특정 워커 프로세스/컨테이너에 강하게 종속세션 참조(Session ID)를 외부화하여 모든 호환 워커에서 복원 가능특정 노드 바인딩 해제, 서버 무중단 배포 및 자동 확장 최적화
Human-in-the-Loop 대기루프 풀링(Polling) 또는 프로세스 슬립 유지로 컴퓨팅 자원 상시 점유오케스트레이션 서스펜드(Suspend) 후 외부 이벤트 수신 시 자동 재개수 시간~수 일 단위 승인 대기 시 CPU/메모리 점유 제로(Zero-Compute) 달성
그래프 워크플로우 관리개발자가 직접 분기, 팬아웃/팬인, 재시도 큐잉 로직을 커스텀 구현프레임워크 그래프 빌더 코드를 Durable 오케스트레이션으로 자동 변환분산 상태 관리 및 분기 병합의 복잡도(Boilerplate) 제거

3. 30년 차 아키텍트의 엔터프라이즈 인사이트 (“So What?”)

1) 클라우드 인프라 & TCO 관점 (Compute, Storage & Cost)

  • 컴퓨트 비용의 구조적 전환: 인간 검토나 외부 승인이 필요한 엔터프라이즈 에이전트의 경우,従来の 아키텍처에서는 워커가 컨테이너 메모리나 가상머신을 점유한 채 유휴 대기 상태를 유지해야 했습니다. Azure Functions 연동 모델을 채택하면 대기 시간 동안 할당 자원이 0으로 스케일다운(Scale-to-Zero)되어 순수 대기 비용이 소멸합니다.
  • 인프라 사이징 및 호스팅 토폴로지:
    • 서버리스 (Azure Functions): 부하 변동폭이 크고 비동기 이벤트 주도형 에이전트 시스템에 최적입니다.
    • 자체 호스팅 (AKS / Container Apps / On-premise): Microsoft.Agents.AI.DurableTask (.NET) 또는 agent-framework-durabletask (Python)를 사용하여 독자적인 백엔드 스케줄러와 함께 구동 가능하므로 온프레미스 폐쇄망 환경에서도 동일한 신뢰성 계층을 확보할 수 있습니다.
  • 추론 토큰 방어벽: 복잡한 그래프 에이전트가 10단계 중 8단계에서 네트워크 타임아웃을 겪었을 때, 이전 7단계의 LLM 추론 비용(토큰 비용)을 100% 보존합니다. 이는 프로덕션 환경의 실패 복구 비용을 사실상 ‘미완료 단계의 추론 비용’으로 한정 짓는 핵심 안전장치입니다.

2) 엔터프라이즈 시스템 & LLMOps 통합 (Integration & Governance)

  • 분산 관측성(Observability) 통합: Durable Task Scheduler 대시보드를 통해 단일 인터페이스에서 에이전트 세션의 대화 이력, 단계별 타임라인, 입출력 페이로드, 토큰 소비량을 엔드투엔드로 추적할 수 있습니다. 이는 금융, 법률, 의료 등 규제 산업에서 요구하는 AI 의사결정 감사 추적(Audit Trail) 요건을 완벽하게 충족합니다.
  • 파이프라인 결합성: 기존 엔터프라이즈 검색 및 RAG 파이프라인에서 벡터 DB 쿼리나 ERP 시스템 연동 작업을 일반 ‘Activity Task’로 래핑하고, LLM 판단 작업을 ‘Durable Agent’로 분리함으로써 비결정론적(LLM) 영역과 결정론적(전통적 IT 시스템) 영역을 명확히 격리할 수 있습니다.
  • 보안 및 엔터프라이즈 거버넌스: 세션 데이터 직렬화 시 고객 민감 정보(PII)가 외부 스케줄러 스토리지에 암호화(At-Rest)되어 보관되는지, VNet 통합 환경 내에서 Scheduler 엔드포인트가 Private Endpoint로 폐쇄 격리되는지 검증 체계를 수립해야 합니다.

3) 도입 의사결정 매트릭스 (Enterprise Decision Matrix)

  • 적극 도입을 검토해야 하는 조직:
    • 에이전트 워크플로우에 결재, 서명, 검토 등 1시간 이상의 Human-in-the-loop 개입이 필수적인 비즈니스 프로세스.
    • 여러 하위 에이전트가 Fan-Out/Fan-In 형태로 병렬 협업하며, 중간 실패 시 전체를 처음부터 재시도하기에 토큰 비용 부담이 큰 멀티 에이전트 시스템.
    • C#(.NET) 또는 Python 기반으로 엔터프라이즈 백엔드를 운영하며 Azure Functions 또는 마이크로서비스 아키텍처를 표준으로 채택한 팀.
  • 도입을 보류하거나 관망해야 하는 조직:
    • 수초 내 단일 턴 질의응답(Single-turn Stateless QA)으로 작업이 완전히 종결되는 초단기 실시간 챗봇.
    • 이벤트 소싱 및 재생 메커니즘 특유의 오케스트레이션 오버헤드(수십 밀리초 단위의 이벤트 저장 지연)조차 허용되지 않는 초저지연(Ultra-low Latency) 트레이딩/시그널 시스템.
  • 엔지니어링 액션 아이템 (PoC 체크리스트):
    1. 코드 결정론(Determinism) 검증: 오케스트레이터 함수 내부에서 시스템 시간(DateTime.UtcNow), 무작위 난수 생성기(Guid.NewGuid()), 비동기 비결정적 I/O를 직접 호출하지 않고 반드시 TaskOrchestrationContext가 제공하는 결정론적 API를 사용하는지 점검.
    2. 세션 직렬화 스토리지 설계: 프레임워크가 제공하는 serializedSession JSON 문자열을 애플리케이션 계층(Cosmos DB, Redis, RDBMS 등)에 안전하게 바인딩하는 키 설계 및 수명 주기(TTL) 정책 수립.
    3. 재시도 정책(Retry Policy) 구성: LLM 서빙 엔드포인트(Azure OpenAI Service 등)의 429(Rate Limit) 및 일시적 네트워크 에러 발생 시, Durable Task 액티비티 레벨의 지수 백오프(Exponential Backoff) 재시도 파라미터 튜닝.
    4. Durable Task Scheduler 인프라 사이징: 처리할 동시 워크플로우 인스턴스 수에 맞춰 Scheduler 및 백엔드 스토리지의 처리량(Throughput/RU) 설정 및 관측 대시보드 연동 테스트.

References:

  1. Microsoft Community Hub: Durable Task extension for Microsoft Agent Framework is now Generally Available (https://techcommunity.microsoft.com/blog/appsonazureblog/durable-task-extension-for-microsoft-agent-framework-is-now-generally-available/4571100)

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다