오케스트레이션 패턴(Orchestration Patterns) — Supervisor, Swarm, Hierarchical
2026년의 프레임워크 전반에서 네 가지 오케스트레이션(orchestration) 패턴이 반복적으로 등장합니다. 감독자-작업자(supervisor-worker), 군집/동등 계층(swarm / peer-to-peer), 계층형(hierarchical), 토론(debate)입니다. Anthropic의 가이드는 이렇게 말합니다. "핵심은 필요에 맞는 올바른 시스템을 만드는 것이다." 단순하게 시작하세요. 단일 에이전트와 다섯 가지 워크플로 패턴으로 충분하지 않을 때만 위상(topology)을 추가합니다.
유형: Learn + Build
언어: Python (stdlib)
선수 학습: Phase 14 · 12 (Workflow Patterns), Phase 14 · 25 (Multi-Agent Debate)
소요 시간: 약 60분
학습 목표
- 반복적으로 등장하는 네 가지 오케스트레이션 패턴의 이름을 말하고, 각각이 언제 적합한지 설명할 수 있습니다.
- 2026년 LangChain의 권장 방식인 도구 호출 기반 감독(tool-call-based supervision)과 감독자(supervisor) 라이브러리 사용의 차이를 설명할 수 있습니다.
- Anthropic의 "올바른 시스템을 만들라"는 규칙을 설명하고, 이 규칙이 위상 선택을 어떻게 제한하는지 말할 수 있습니다.
- 공통의 스크립트형 LLM 위에 네 패턴을 모두 표준 라이브러리(stdlib)로 구현할 수 있습니다.
문제
많은 팀이 필요해지기도 전에 "멀티 에이전트(multi-agent)"부터 집어 듭니다. 네 가지 패턴은 프레임워크 전반에서 반복적으로 나타납니다. 이 패턴들의 이름을 붙일 수 있게 되면 그중 올바른 것을 고르거나, 아예 위상을 도입하지 않기로 결정할 수 있습니다.
개념
감독자-작업자(Supervisor-worker)
- 중앙의 라우팅(routing) LLM이 전문 에이전트(specialist agents)에게 작업을 분배합니다.
- 자기 자신에게 되돌릴지, 전문가에게 넘길지, 종료할지를 결정합니다.
- 전문가들은 서로 직접 대화하지 않으며, 모든 라우팅은 감독자를 거칩니다.
대표적인 프레임워크 예시는 LangGraph의 create_supervisor, Anthropic의 orchestrator-workers, CrewAI Hierarchical Process입니다.
2026년 LangChain의 권장 방식: create_supervisor 같은 감독자 라이브러리에 의존하기보다, 직접 도구 호출(direct tool calls)을 통해 감독을 구현하라는 쪽으로 권장 방향이 바뀌었습니다. 이렇게 하면 컨텍스트 엔지니어링(context engineering)을 더 세밀하게 제어할 수 있어, 각 전문가가 정확히 어떤 정보를 보게 될지를 개발자가 직접 결정할 수 있습니다.
군집/동등 계층(Swarm / peer-to-peer)
- 에이전트들이 공유 도구 표면(shared tool surface)을 통해 서로 직접 작업을 인계(handoff)합니다.
- 중앙 라우터가 없습니다.
- 감독자 구조보다 지연 시간(latency)이 낮습니다. 거치는 단계(hop)가 적기 때문입니다.
- 대신 동작을 추론하기는 더 어렵습니다. 단일 제어 지점(single point of control)이 없기 때문입니다.
대표적인 프레임워크 예시는 LangGraph의 swarm 위상과 OpenAI Agents SDK의 handoff입니다. 모든 에이전트가 서로에게 인계할 수 있는 상태가 되면 군집 구조에 가까워집니다.
계층형(Hierarchical)
- 감독자가 하위 감독자(sub-supervisor)를 관리하고, 하위 감독자가 다시 작업자(worker)를 관리합니다.
- LangGraph에서는 중첩 서브그래프(nested subgraph), CrewAI에서는 중첩 crew로 구현됩니다.
- 큰 규모의 에이전트 집단으로 확장할 수 있지만 운영 복잡도(operational complexity)가 함께 커집니다.
언제 필요할까요? 단일 감독자의 컨텍스트 예산(context budget)이 모든 전문가의 설명을 한꺼번에 담을 수 없을 때입니다.
토론(Debate)
- 병렬 제안자(parallel proposers)와 반복적인 교차 비판(iterative cross-critique)으로 구성됩니다(25강 참고).
- 엄밀히 말하면 오케스트레이션이라기보다는 검증(verification)에 가깝지만, 프레임워크에서는 하나의 위상 선택지로 등장합니다.
CrewAI Crew와 Flow
CrewAI는 두 가지 배포 모드를 형식화합니다.
- Flow는 결정론적인 이벤트 기반 자동화(deterministic event-driven automation)에 사용합니다. 프로덕션의 시작점으로 권장됩니다.
- Crew는 자율적인 역할 기반 협업(autonomous role-based collaboration)에 사용합니다.
이 구분은 위에서 본 네 패턴과 직교(orthogonal)하지만 위상에 자연스럽게 매핑됩니다. Flow는 보통 감독자나 계층형 구조에 해당하고, Crew는 보통 LLM 라우터를 갖춘 감독자 구조에 해당합니다.
Anthropic의 가이드
"LLM 분야에서의 성공은 가장 정교한 시스템을 만드는 데 있지 않다. 필요에 맞는 올바른 시스템을 만드는 데 있다."
선택 순서는 다음과 같습니다.
- 단일 에이전트와 워크플로 패턴(12강) — 여기서부터 시작합니다.
- 감독자-작업자(supervisor-worker) — 전문가가 2~4명 정도 있을 때 사용합니다.
- 군집(swarm) — 추론 명확성보다 지연 시간이 더 중요할 때 사용합니다.
- 계층형(hierarchical) — 감독자의 컨텍스트 예산이 한계에 다다랐을 때만 사용합니다.
- 토론(debate) — 비용보다 정확도가 더 중요할 때 사용합니다.
이 패턴이 잘못되는 지점
- 위상 우선 사고(topology-first thinking). 멀티 에이전트가 어떤 문제를 해결하는지 식별하기도 전에 "멀티 에이전트가 필요하다"고 단정합니다.
- 군집에서의 인계 튕김(bouncing handoffs). A -> B -> A -> B처럼 같은 자리를 왔다 갔다 합니다. 단계 수 카운터(hop counter)를 두어야 합니다.
- 가짜 계층 구조(fake hierarchy). "엔터프라이즈"처럼 보이기 위해 세 계층을 만들었지만 실제 팀은 둘뿐인 경우입니다. 계층을 접어야 합니다.
만들어보기
code/main.py는 공통의 스크립트형 LLM 위에 네 패턴을 모두 표준 라이브러리(stdlib)로 구현합니다.
Supervisor — 중앙 라우터입니다.
Swarm — 직접 인계로 연결된 동등 계층(peer-to-peer) 구조입니다.
Hierarchical — 감독자의 감독자 구조입니다.
Debate — 병렬 제안자와 비판으로 구성된 구조입니다.
각 패턴은 같은 세 가지 의도(intent) 작업을 처리합니다. 환불(refund), 버그(bug), 영업(sales)입니다. 추적(trace) 형태가 패턴마다 달라집니다.
실행 방법은 다음과 같습니다.
python3 code/main.py
출력은 패턴별 추적과 연산 수(op count)를 함께 보여줍니다. 감독자 구조가 가장 깔끔하고, 군집 구조가 가장 짧으며, 계층형이 가장 깊고, 토론이 가장 비쌉니다.
사용해보기
- LangGraph는 감독자 구조와 계층형 구조에 적합합니다. 중첩 서브그래프(nested subgraph)를 사용할 수 있습니다.
- OpenAI Agents SDK는 도구 형태의 인계(handoffs-as-tools), 즉 감독자에 가까운 구조에 적합합니다.
- CrewAI Flow는 프로덕션용 결정론적 흐름에 적합합니다.
- 커스텀(Custom) 구현은 토론을 다루거나 정확한 제어가 필요할 때 적합합니다.
산출물 만들기
outputs/skill-orchestration-picker.md는 위상을 고르고 최소한으로 구현하는 일을 돕습니다.
연습문제
- (쉬움) 감독자-작업자 구조를 군집 구조로 바꿔보세요. 라우터를 제거합니다. 무엇이 깨지고, 무엇이 좋아지나요?
- (중간) 군집 구조에 단계 수 카운터(hop counter)를 추가하세요. 3번 인계 이후에는 거부하도록 합니다. A->B->A 튕김을 잡아내나요?
- (중간) 12명의 전문가가 있는 도메인을 위해 2단계 계층형 시스템을 만들어 보세요. 중첩이 없으면 컨텍스트 예산은 어디서 무너지나요?
- (어려움) 네 패턴을 프로덕션 형태의 워크로드 위에서 프로파일링(profiling)해 보세요. 어떤 지표(지연 시간, 비용, 정확도, 디버깅 용이성)에서 어떤 패턴이 우위를 보이나요?
- (어려움) Anthropic의 "Building Effective Agents" 글을 읽어보세요. 자신이 가진 각 프로덕션 흐름을 네 패턴 중 하나에 매핑해 보세요. 깔끔하게 매핑되지 않는 흐름이 있다면 무엇인가요?
핵심 용어
| 용어 | 흔한 설명 | 실제 의미 |
|---|
| 감독자-작업자(Supervisor-worker) | "라우터 + 전문가" | 중앙 LLM이 전문가에게 작업을 분배합니다. 전문가끼리는 직접 대화하지 않습니다. |
| 군집(Swarm) | "동등 계층(peer-to-peer)" | 공유 도구를 통해 직접 인계합니다. 중앙 라우터가 없습니다. |
| 계층형(Hierarchical) | "감독자의 감독자" | 큰 집단을 다루기 위한 중첩 서브그래프(nested subgraph) 구조입니다. |
| 토론(Debate) | "제안자 + 비판" | 병렬 제안자와 교차 비판입니다(25강). |
| 도구 호출 기반 감독(Tool-call-based supervision) | "라이브러리 없는 감독자" | 컨텍스트 제어를 위해 감독자를 직접 도구 호출로 구현합니다. |
| Crew | "자율 팀" | CrewAI의 역할 기반 협업 모드입니다. |
| Flow | "결정론적 워크플로" | CrewAI의 이벤트 기반 프로덕션 모드입니다. |
더 읽을거리