🎼

오케스트레이션 패턴 — 모델 호출을 조합하는 법

한 번의 호출로 안 되면, 여러 번을 어떻게 엮는가

"LLM에게 물어보면 답이 나온다" — 간단한 질문은 이걸로 충분하다. 하지만 "이 레포의 버그를 고쳐줘"는 한 번에 안 된다. 파일을 읽고, 문제를 분석하고, 패치를 만들고, 테스트를 돌리고, 실패하면 다시 수정한다. 이 전체 흐름을 설계하는 게 오케스트레이션이다.

주요 패턴

체이닝(Chaining) — 첫 번째 호출의 출력이 두 번째 호출의 입력이 되는 직렬 구조. 가장 단순하지만 효과적이다. 예: 코드 생성 → 코드 리뷰 → 수정. 각 단계마다 다른 프롬프트를 쓸 수 있다.

라우팅(Routing) — 입력을 분석해서 적절한 처리 경로로 보낸다. "이 질문은 코드 관련이니 코딩 에이전트로", "이건 문서 관련이니 검색 에이전트로" 같은 분기. 분류 모델이 라우터 역할을 한다.

병렬화(Parallelization) — 독립적인 작업을 동시에 실행한다. 파일 10개를 분석해야 하면, 하나씩 순서대로 하는 것보다 동시에 돌리는 게 빠르다. fan-out → 처리 → fan-in 구조.

에이전트 루프 — 목표를 달성할 때까지 계속 반복한다. "테스트 통과할 때까지 코드 수정"이 전형적인 예. while 루프 안에서 모델을 계속 호출하는 구조. Agentic AI 카테고리의 Agent Loop 참고.

파이프라인 — 체이닝의 확장. 여러 단계가 정해진 순서로 실행되고, 각 단계에서 다른 도구와 모델을 쓸 수 있다. CI/CD와 비슷한 개념.

패턴 선택 기준

단순한 질의응답 → 단일 호출로 충분.

품질이 중요한 생성 작업 → 체이닝 (생성 → 검증 → 수정).

다양한 유형의 입력 → 라우팅.

독립적인 대량 처리 → 병렬화.

불확실한 결과, 반복 개선 필요 → 에이전트 루프.

복잡한 다단계 처리 → 파이프라인.

실제로는 이 패턴들을 조합해서 쓴다. Claude Code는 에이전트 루프 안에서 체이닝과 병렬화를 모두 사용한다.

동작 흐름

1

체이닝 — A의 출력이 B의 입력이 되는 직렬 구조 (생성 → 검증 → 수정)

2

라우팅 — 입력을 분류해서 적절한 처리 경로로 분기

3

병렬화 — 독립적인 작업을 동시 실행 (fan-out → 처리 → fan-in)

4

에이전트 루프 — 목표 달성까지 반복 (while + 모델 호출 + 도구 사용)

5

파이프라인 — 정해진 순서의 다단계 처리, 각 단계에서 다른 도구/모델 사용

사용 사례

Claude Code — 에이전트 루프(반복) + 체이닝(탐색→패치→테스트) + 병렬화(서브에이전트) 고객 지원 시스템 — 라우팅(질문 분류) + 체이닝(답변 생성→톤 검증) 문서 처리 파이프라인 — OCR→구조화→분석→요약의 고정 순서 파이프라인