오늘의 AI 용어: 재개 가능한 에이전트 (Suspend/Resume Agent Runtime)

좋은 아침이에요. 오늘은 “에이전트를 코루틴처럼 재웠다가 깨우는” 실행 방식이에요.

뭔가요? 보통 에이전트 루프는 모델 호출, 도구 실행, 결과 기다리기를 차례로 반복해요. 빌드가 20분 걸리면 그동안 프로세스와 메모리를 붙잡고 멍하니 기다리죠. 재개 가능한 런타임은 도구를 호출하는 순간을 await 지점으로 보고, 대화 기록을 저장한 뒤 에이전트를 아예 내려버려요. 결과가 큐로 도착하면 그 기록을 불러와 이어서 실행해요. 대화 기록 자체가 “이어서 할 상태”라는 점이 핵심이에요.

시점부터 구분할게요. 아이디어 자체는 오래됐어요.
– 코루틴 개념은 1963년 멜빈 콘웨이 논문까지 거슬러 올라가고, 지금 흔히 쓰는 async/await은 C# 5(2012), Python 3.5(2015), Rust 1.39(2019)로 퍼졌어요.
– 작업을 멈췄다 이어서 하는 “지속 실행(Durable Execution)”도 Azure Durable Functions·Uber Cadence(2017), Temporal(2019) 때부터 있던 패턴이에요.
– 이번에 화제가 된 건 2026-10-23(미국 기준) AWS와 UC Berkeley가 오픈소스로 공개한 Infinity 런타임이에요. 이 패턴을 LLM 에이전트에 그대로 적용해서, 대기 중인 에이전트 하나가 약 100KB만 차지하고 Raspberry Pi 5(8GB)에 7만 5천 개가 들어간다고 했어요. Lambda처럼 요청마다 켜졌다 꺼지는 서버리스에서도 사흘짜리 CI를 기다릴 수 있다고 하고요. 아직 초기 연구용 릴리스라는 점은 감안하세요.
– 새로운 건 “합성 도구 호출(synthetic tool call)”이에요. PR이 열렸다는 식의 비동기 이벤트를 사용자 메시지로 끼워 넣지 않고, 모델이 하지 않은 가짜 도구 호출과 그 결과로 대화에 넣어서 모델이 원래 학습된 방식대로 해석하게 해요.

왜 지금 뜨나요? 에이전트가 몇 분짜리 답변에서 며칠짜리 일(CI 대기, 승인 대기, 저장소 이벤트 구독)로 넘어가고 있어서요. 기다리는 시간이 대부분인데 그 시간에 돈과 메모리를 쓰는 게 낭비라는 문제의식이 커졌어요.

Claude만 쓰던 개발자라면 이렇게 나누면 돼요.
– 기다리기와 깨우기는 코드에 맡기세요. 큐, 타이머, 웹훅이 “결과 왔다”를 알려주게 하고, LLM한테 “다 됐나?”를 반복해서 묻는 폴링은 하지 마세요.
– LLM은 깨어난 순간의 판단만 하게 하세요. 이 결과가 실패인지, 다음에 뭘 할지, 사람한테 물어야 할지 같은 것들이요.
– 도구는 “시작만 하고 바로 반환”하게 짜고, 결과는 나중에 메시지로 돌려보내요. 메시지에 고유 ID를 붙여서 두 번 와도 한 번만 처리되게(멱등성) 하는 게 실무에서 제일 중요해요.
– 짧은 대화형 작업이라면 지금처럼 Claude Code 세션 안에서 동기로 돌리는 게 더 간단해요. 몇 시간 넘게 기다리는 일, 동시에 많이 돌리는 일부터 이 방식을 고려하면 돼요.

연관 용어
– 지속 실행 (Durable Execution): 실행 상태를 저장해서 장애나 재시작 뒤에도 이어서 돌리는 패턴이에요. Temporal이 대표적이에요.
– 액터 모델 (Actor Model): 1973년 칼 휴잇이 제안한 모델로, 각자 메시지 큐를 가진 독립 단위가 메시지로만 소통해요. Infinity의 스레드 구조도 이와 비슷해요.
– 멱등성 (Idempotency): 같은 요청을 여러 번 처리해도 결과가 한 번 처리한 것과 같은 성질이에요. 큐가 메시지를 다시 보내는 환경에서는 필수예요.

댓글 남기기