Category
LLM 호출, 도구 실행, 분기·재시도·상태 저장을 하나의 제어 흐름으로 엮는 계층이다. 모델은 추론만 하고, 실제로 무엇을 언제 어떤 순서로 실행할지는 오케스트레이션이 결정한다. LangGraph·자체 워크플로 엔진 모두 결국 상태 전이와 실패 복구를 어떻게 다루느냐의 문제로 수렴한다.
지금까지 에이전트 오케스트레이션은 각 프레임워크(LangGraph, CrewAI, Agno 등)가 자기 방식으로 도구 호출과 에이전트 간 위임을 코드로 묶는 식이었다. 이 구도가 두 표준으로 분리되며 일하는 방식 자체가 바뀌고 있다. MCP(Model Context Protocol)는 에이전트와 도구·데이터 소스 사이의 연결을 표준화해, 어떤 프레임워크로 짠 에이전트든 동일한 MCP 서버를 붙여 쓸 수 있게 한다. A2A(Agent-to-Agent) 계열 프로토콜은 한 발 더 나아가 서로 다른 벤더·런타임의 에이전트가 능력(capability)을 광고하고 작업을 위임·수신하는 핸드오프 규약을 노린다. 결과적으로 오케스트레이션 로직이 특정 프레임워크 코드에 박히는 대신, 프로토콜 경계로 빠진다. CrewAI의 역할 기반 팀, Agno의 경량 멀티 에이전트 같은 상위 추상화는 유지되더라도, 그 아래 도구 연결층은 MCP로 수렴하는 흐름이다. 즉 '무엇을 오케스트레이션하느냐'는 프레임워크가 정하고, '어떻게 붙이느냐'는 프로토콜이 정한다.
오케스트레이션 프레임워크 경쟁이 'LLM이 알아서 다음 단계를 고르게 하느냐(에이전트 자율)' 대 '개발자가 그래프로 흐름을 못 박느냐(결정적 제어)'의 축으로 재편됐다. LangGraph는 상태(state)를 명시적 스키마로 두고, 노드(작업 단위)와 엣지(전이)를 코드로 선언한 뒤, 분기만 LLM에게 맡기는 'conditional edge' 모델을 핵심으로 민다. 즉 라우팅 판단은 LLM이 하되, 어떤 노드가 실행 가능한지의 위상은 개발자가 고정한다. 여기에 체크포인터(checkpointer)로 그래프 상태를 영속화해 중단·재개(human-in-the-loop, time-travel)를 1급 기능으로 끌어올렸다. 핵심 주장은 단순하다. 프로덕션 에이전트의 버그 대부분은 모델이 아니라 '제어 흐름이 불투명해서 재현·디버깅이 안 되는 것'이며, 그래프로 만들면 어느 노드에서 어떤 상태로 멈췄는지 로그가 결정적으로 남는다. 자율 ReAct 루프 한 덩어리로 돌릴 때와 달리, 각 전이가 검사 가능한 경계가 된다.
'전문 에이전트를 여러 개 두고 매니저가 위임한다'는 멀티 에이전트 환상에 대한 강한 반론이 업계 엔지니어링 블로그를 중심으로 굳어졌다. 핵심 비판은 두 가지다. 첫째, 서브에이전트끼리 컨텍스트를 공유하지 못하면 같은 사실을 서로 다르게 가정해 결과가 충돌하고(컨텍스트 단절), 둘째 한 에이전트의 출력을 다른 에이전트의 입력으로 넘기는 핸드오프 지점마다 정보가 압축·소실되어 오류가 누적된다. 결정은 분산되는데 결정에 필요한 맥락은 분산되지 않으므로, 병렬 작성자(writer) 여러 명이 서로 모순되는 보고서를 만드는 전형적 실패가 나온다. 대안으로 제시되는 건 '단일 스레드 에이전트 + 컨텍스트 엔지니어링'이다. 작업을 쪼개되 결정권은 한 곳에 모으고, 긴 컨텍스트를 압축·요약해 단일 에이전트가 전체 맥락을 유지하게 한다. 멀티 에이전트가 정당화되는 경우는 읽기 전용 병렬 조사처럼 결과를 합치기만 하면 되는, 쓰기 충돌이 없는 작업으로 좁혀진다.