오케스트레이션 및 워크플로우 (Orchestration)
개요
에이전트가 단일 Task(예: “문서 요약해줘”)를 넘어, 며칠에 걸친 다단계 프로세스(예: “경쟁사 보고서를 주기적으로 크롤링하고, 특정 키워드 발견 시 내부망 슬랙으로 요약본 발송 후, 이메일로 리뷰 요청해”)를 수행하려면 어떻게 해야 할까요?
단순한 Python 스크립트나 API 서버(FastAPI, Flask 등)는 일시적인 메모리에 의존하기 때문에 서버가 재시작되면 그동안 진행하던 프로세스가 초기화되는 치명적인 제약(Fragility)이 있습니다. 이를 극복하고 AI 에이전트 워크플로우를 영구적으로 신뢰할 수 있게 만들기 위해 에이전트 오케스트레이션 인프라가 필수적입니다.
1. 영속적 실행(Durable Execution) 이란?
- 상태 보존: 코드 실행이 멈추거나, 서버가 죽어도 진행하던 13번째 단계(State)부터 다시 안전하게 재개(Roll-forward)하는 능력.
- 장기 대기 허용 (Human-in-the-loop 지원): 결재 대기 중인 문서처럼 사용자의 피드백을 수개월간 기다리는 비동기 작업 지원.
에이전트 오케스트레이션이 해결하는 문제들
- LLM API 오류 및 타임아웃 발생 시 자동 재시도(Retry)
- 분산된 에이전트 코드를 하나의 신뢰성 있는 파이프라인으로 연결
- 에이전트 간 비동기 메시징 스케줄링 및 큐잉
2. 대표적인 오케스트레이션 스택
AI 엔지니어링 생태계에서 에이전트의 워크플로우를 엮고 관장하는 핵심 기술은 다음과 같습니다.
Temporal (백엔드 오케스트레이션의 표준)
- 본래 마이크로서비스(Microservices)의 복잡한 트랜잭션을 묶어주는 오픈소스 워크플로우 엔진.
- 안정성(Reliability)이 생명인 AI 에이전트 파이프라인 백엔드로 최근 각광받고 있음. (예: 인프라의 상태 복구, 타임아웃/에러 처리 로직을 코드 단에서 완전히 추상화)
Apache Airflow (데이터 파이프라인 기반)
- 데이터 엔지니어링의 표준인 전통적인 파이프라인 스케줄러를 RAG의 뱃치(Batch) 워크플로우(예: 정기적 문서 인덱싱, 정기 리포트 생성)에 통합.
- 단점: Temporal이나 LangGraph에 비해 비동기 실시간 에이전트 상호작용(Event-driven)에는 덜 적합함.
LangGraph (AI-Native 프레임워크)
- 복잡한 다중 에이전트를 스테이트머신(Graph State) 기반으로 구축하고 관리하기 위해 고안된 프레임워크.
- 상태 지속성(Persistence, Checkpointing)을 기본 스펙으로 제공하여, 대화 도중 인간 개입(Human-in-the-loop)이 필요한 시점에 워크플로우를 중지 후 영속성을 유지.