프로덕션 런타임 — Queue, Event, Cron

프로덕션 에이전트는 여섯 가지 런타임 형태(runtime shapes) 위에서 실행됩니다. 요청-응답(request-response), 스트리밍(streaming), 내구성 있는 실행(durable execution), 큐 기반 백그라운드(queue-based background), 이벤트 기반(event-driven), 스케줄 실행(scheduled)입니다. 프레임워크를 고르기 전에 실행 형태를 먼저 고르세요. 모든 형태에서 관측성(observability)은 하중을 지탱하는 구조물(load-bearing)입니다.

유형: Learn 언어: Python (stdlib) 선수 학습: Phase 14 · 13 (LangGraph), Phase 14 · 22 (Voice) 소요 시간: 약 60분

학습 목표

  • 여섯 가지 프로덕션 런타임 형태를 말하고, 각 형태를 프레임워크나 제품 패턴에 매핑합니다.
  • 긴 작업(long-horizon tasks)에 내구성 있는 실행(LangGraph)이 왜 중요한지 설명합니다.
  • 이벤트 기반 런타임을 설명하고, Claude Managed Agents가 언제 맞는지 말합니다.
  • 멀티 단계 에이전트에서 관측성이 하중을 지탱한다는 주장을 설명합니다.

문제

프로덕션 에이전트는 Jupyter notebook이 드러내지 않는 방식으로 실패합니다. 37번째 단계에서 네트워크 타임아웃(timeout)이 발생하고, 음성 통화 중 사용자가 전화를 끊고, 머신 재부팅으로 cron 작업(cron job)이 죽고, 백그라운드 워커(worker)가 메모리를 다 써버립니다. 런타임 형태는 어떤 실패가 복구 가능한지를 결정합니다.

사전 테스트

2문제 · 이 강의를 시작하기 전에 얼마나 알고 있는지 확인해보세요

1.에이전트 프레임워크를 고르기 전에 런타임 형태(runtime shape)를 먼저 골라야 하는 이유는 무엇인가요?

2.에이전트를 위한 여섯 가지 프로덕션 런타임 형태는 무엇인가요?

0/2 답변 완료

개념

요청-응답(Request-response)

  • 동기식(synchronous) HTTP입니다. 사용자는 완료를 기다립니다.
  • 짧은 작업(<30초)에만 적합합니다.
  • 스택은 Agno(Python + FastAPI), Mastra(TypeScript + Express/Hono/Fastify/Koa)가 있습니다.
  • 관측성은 표준 HTTP 접근 로그(access log)와 OTel 스팬(span)입니다.

스트리밍(Streaming)

  • 점진적 출력을 위해 SSE나 WebSocket을 사용합니다.
  • LiveKit은 이를 음성/비디오용 WebRTC로 확장합니다(22강).
  • 스택은 스트리밍을 지원하는 어떤 프레임워크든 가능하며, 프론트엔드(frontend)는 SSE/WS를 처리해야 합니다.
  • 관측성은 청크별 시간 측정(per-chunk timing), 첫 토큰 지연(first-token latency), 꼬리 지연(tail latency)입니다.

내구성 있는 실행(Durable execution)

  • 모든 단계 뒤에 상태를 체크포인트(checkpoint)로 저장하고, 실패하면 자동으로 재개합니다.
  • AutoGen v0.4의 액터 모델(actor model)은 실패를 한 에이전트로 격리합니다(14강).
  • LangGraph의 핵심 차별점입니다(13강).
  • 단계 수를 알 수 없고 복구 비용이 높을 때 필수입니다.

큐 기반 / 백그라운드(Queue-based / background)

  • 작업이 큐(queue)에 들어가면 워커(worker)가 가져가서 처리하고, 결과는 웹훅(webhook)이나 발행/구독(pub/sub)으로 돌아옵니다.
  • 긴 작업(long-horizon agents)에는 필수입니다. Anthropic의 computer use 발표에 따르면 한 작업이 수십-수백 단계에 이를 수 있습니다.
  • 스택은 Celery(Python), BullMQ(Node), SQS + Lambda(AWS), 커스텀(custom) 구현이 있습니다.
  • 관측성은 큐 깊이(queue depth), 작업별 지연 분포, DLQ 크기입니다.

이벤트 기반(Event-driven)

  • 에이전트가 새 이메일, PR 열림(PR opened), cron 발화(cron fire) 같은 트리거(trigger)를 구독합니다.
  • Claude Managed Agents는 이를 기본으로 제공합니다(17강).
  • CrewAI Flows(15강)는 이벤트 기반 결정론적 워크플로(workflow)를 구조화합니다.
  • 관측성은 트리거 출처, 이벤트 도착에서 실행까지의 지연(event-to-start latency), 에이전트 지연입니다.

스케줄 실행(Scheduled)

  • 주기적으로 실행되는 cron 형태의 에이전트입니다.
  • 내구성 있는 실행과 결합하면 실패한 야간 실행(nightly run)이 다음 주기(tick)에서 재개될 수 있습니다.
  • 스택은 Kubernetes CronJob + 내구성 있는 프레임워크, 또는 Render cron, Vercel cron 같은 호스팅(hosted) 옵션입니다.

2026년 배포 패턴

  • CrewAI Flows는 이벤트 기반 프로덕션에 사용합니다.
  • Agno는 Python 마이크로서비스(microservice)용 상태 없는(stateless) FastAPI에 적합합니다.
  • Mastra는 Express, Hono, Fastify, Koa 같은 서버 어댑터(server adapter)로 다른 시스템에 임베딩(embedding)하기 좋습니다.
  • Pipecat Cloud / LiveKit Cloud는 관리형(managed) 음성 처리에 적합합니다(22강).
  • Claude Managed Agents는 호스팅되는 장기 실행 비동기(long-running async)에 적합합니다.

관측성은 하중을 지탱한다

OpenTelemetry GenAI 스팬(23강)과 Langfuse/Phoenix/Opik 백엔드(backend)(24강)가 없으면 40번째 단계에서 실패한 멀티 단계 에이전트를 디버깅(debugging)할 수 없습니다. 프로덕션에서는 선택 사항이 아닙니다. "빠르게 디버깅한다"와 "로그를 더 넣고 처음부터 다시 재생한다"의 차이를 만듭니다.

프로덕션 런타임이 실패하는 지점

  • 잘못된 형태 선택. 5분짜리 작업에 요청-응답을 고릅니다. 사용자는 연결을 끊고, 워커는 쌓이고, 재시도는 겹칩니다.
  • DLQ가 없음. 데드 레터 큐(dead-letter queue; DLQ) 없는 큐 워커는 실패한 작업을 사라지게 만듭니다.
  • 불투명한 백그라운드 작업. 백그라운드 에이전트가 추적 내보내기(trace export) 없이 실행됩니다. 사용자가 신고하기 전까지 실패가 보이지 않습니다.
  • 내구성 있는 상태 생략. 30초가 넘고 처음부터 다시 시작할 수 없는 모든 실행에는 내구성 있는 실행이 필요합니다.

만들어보기

code/main.py는 표준 라이브러리(stdlib)만 사용해 여러 실행 형태를 보여줍니다.

  • 요청-응답 엔드포인트(endpoint)입니다. 일반 함수(plain function)로 구현했습니다.
  • 스트리밍 핸들러(handler)입니다. 제너레이터(generator)를 사용합니다.
  • DLQ가 있는 큐 기반 워커(worker)입니다.
  • 이벤트 트리거 레지스트리(registry)입니다.
  • cron 형태의 스케줄러(scheduler)입니다.

실행 방법은 다음과 같습니다.

python3 code/main.py

출력은 같은 작업에 대해 각 형태가 어떻게 동작하는지 보여주는 다섯 개의 실행 추적(trace)을 출력합니다. 같은 에이전트 로직이지만 외부 껍질이 다릅니다. 여섯 번째 형태인 내구성 있는 실행은 LangGraph 체크포인트(checkpointing)와 함께 13강에서 의도적으로 다룹니다.

사용해보기

  • 요청-응답은 채팅 스타일 UX에 적합합니다.
  • 스트리밍은 점진적 응답에 적합합니다.
  • 내구성 있는 실행은 긴 작업에 적합합니다.
  • 는 배치(batch), 비동기, 장기 실행에 적합합니다.
  • 이벤트는 에이전트 반응성(agent reactivity)에 적합합니다.
  • Cron은 유지 보수성 작업(housekeeping)에 적합합니다. 메모리 통합, 평가(eval), 비용 보고서(cost report) 작성이 예입니다.

산출물 만들기

outputs/skill-runtime-shape.md는 작업에 맞는 런타임 형태를 고르고 관측성 요구사항을 연결합니다.

연습문제

  1. 1강 ReAct 루프를 여러분의 스택에서 여섯 형태 모두로 옮기세요. 어떤 제품 표면(product surface)에 어떤 형태가 맞나요?
  2. 큐 기반 데모에 DLQ를 추가하세요. 10% 작업 실패를 시뮬레이션하고 DLQ 크기를 표시합니다.
  3. 전날 상위 20개 추적을 대상으로 매일 밤 실행되는 cron 트리거 평가 에이전트(cron-triggered eval agent)를 작성하세요.
  4. 역압(backpressure)이 있는 스트리밍을 구현하세요. 클라이언트가 느리면 에이전트를 멈춥니다. 이것은 턴 예산(turn budget)과 어떻게 상호작용하나요?
  5. Claude Managed Agents 문서를 읽어보세요. 자체 호스팅 장기 작업 에이전트를 언제 관리형(managed)으로 옮기겠습니까?

핵심 용어

용어흔한 설명실제 의미
요청-응답(Request-response)"동기식"사용자가 기다립니다. 짧은 작업에만 적합합니다.
스트리밍(Streaming)"SSE / WS"점진적 출력입니다. UX가 좋아지고 청크별 지연을 관찰할 수 있습니다.
내구성 있는 실행(Durable execution)"실패에서 재개"상태를 체크포인트로 저장하고 마지막 단계에서 다시 시작합니다.
큐 기반(Queue-based)"백그라운드 작업"생산자(producer) / 워커 풀(worker pool) / DLQ 구조입니다.
이벤트 기반(Event-driven)"트리거 기반"에이전트가 외부 이벤트에 반응합니다.
DLQ"데드 레터 큐(Dead-letter queue)"실패한 작업을 임시로 세워두는 주차장입니다.
Claude Managed Agents"호스팅 하니스(harness)"Anthropic이 호스팅하는 장기 실행 비동기 런타임입니다. 캐싱(caching)과 압축(compaction)이 포함됩니다.

더 읽을거리

실습 코드

이 강의의 실습 코드 1개

main
Code

산출물

이 강의에서 생성된 프롬프트, 스킬, 코드 산출물 1개

runtime-shape

Pick a production runtime shape (request-response, streaming, queue, event, cron, durable) and wire observability.

Skill

확인 문제

3문제 · 모두 맞추면 완료 표시가 가능합니다

1.큐 기반 에이전트 워커가 작업을 처리하지만 데드 레터 큐(DLQ)가 없습니다. 실패한 작업은 그냥 사라집니다. 이것이 위험한 이유는 무엇인가요?

2.멀티 단계 프로덕션 에이전트에서 관측성(observability)이 '하중을 지탱하는 구조물(load-bearing)'이라고 설명되는 이유는 무엇인가요?

3.팀이 보통 5분 걸리는 작업에 요청-응답(request-response)을 선택했습니다. 어떤 연쇄 문제가 발생하나요?

0/3 답변 완료

추가 문제 풀기

AI가 강의 내용을 바탕으로 새로운 문제를 생성합니다