durable-execution

3 개의 포스트

cloudflare4분 읽기큐레이션 요약

Flue를 시작으로 Cloudflare에 더 많은 에이전트 하네스 도입하기

2026년에는 AI 에이전트가 프로토타입을 넘어 실제 운영 인프라로 사용되면서, 중단 복구·보안 실행·도구 연동 같은 분산 시스템 문제가 중요해지고 있다. 글은 이를 해결하기 위해 **프레임워크(Flue)–하네스(Pi, Project Think)–런타임(Cloudflare Agents SDK)**의 3계층 구조가 필요하다고 주장한다. Flue는 선언적으로 에이전트를 정의하고, Cloudflare Agents SDK는 내구성 있는 실행·상태·스토리지·샌드박스를 제공해 프로덕션 환경의 안정성을 높인다. ## 프로덕션 에이전트를 위한 3계층 구조 - **프레임워크: Flue** - 프로젝트 구조, 규칙, 외부 서비스 통합, CLI, 개발자 경험을 제공한다. - 에이전트를 실제 업무 환경에 배치하고 관리하는 상위 계층이다. - **하네스: Pi, Project Think** - 모델의 에이전트 루프를 담당한다. - 도구 호출, 결과 확인, 컨텍스트 관리, 작업 완료까지의 반복 과정을 처리한다. - **런타임/플랫폼: Cloudflare Agents SDK** - 에이전트가 의존하는 컴퓨트, 상태 관리, 스토리지 primitives를 제공한다. - 특정 하네스에 종속되지 않고 다양한 하네스와 프레임워크가 사용할 수 있는 기반 계층이다. ## Flue의 선언적 에이전트 모델 - Flue 1.0 Beta는 Pi 하네스를 기반으로 하며, OpenClaw와 같은 하네스를 사용한다. - 에이전트가 무엇을 할지 절차적으로 스크립팅하는 대신, 에이전트가 알아야 할 내용을 선언한다. - 사용할 모델 - 필요한 스킬 - 실행 샌드박스 - 시스템 지침 - 별도의 오케스트레이션 루프를 직접 작성하지 않아도 에이전트가 주어진 작업을 자율적으로 수행한다. - 예를 들어 버그 리포트를 받아 샌드박스에서 재현하고 원인을 진단하는 에이전트를 25줄 이하로 작성할 수 있다. ## 개발자 도구와 외부 서비스 통합 - **Channels** - Slack, GitHub, Linear, Discord 등에 에이전트를 연결한다. - 이벤트 검증과 디스패치에 필요한 반복적인 보일러플레이트를 대신 처리한다. - **헤드리스 실행과 UI 연동** - 백그라운드 작업에서는 완전히 헤드리스로 실행할 수 있다. - `@flue/react`를 사용하면 에이전트 상태, 도구 실행, 실시간 메시지를 프론트엔드로 스트리밍할 수 있다. - 별도의 실시간 통신 인프라를 직접 구축할 필요를 줄인다. - **CLI 기반 생태계 확장** - `flue add channel slack` 같은 명령으로 통합 기능을 추가한다. - 생성된 Markdown blueprint를 코딩 에이전트가 읽고 수정해 기존 코드베이스에 통합할 수 있다. ## Durable Streams를 통한 장애 복구 - 에이전트 실행은 모델 응답 스트리밍, 도구 호출, 도구 결과 대기, 사용자 승인, 하위 에이전트 위임 등 여러 단계로 구성된다. - 호스트 장애, LLM API 타임아웃, 프로세스 재시작이 발생하면 메모리에 있던 실행 상태가 사라질 수 있다. - Flue는 **Durable Streams**를 사용해 실행 이력을 append-only 로그로 기록한다. - 프롬프트 - 도구 응답 - 모델 선택 - 기타 실행 이벤트 - 각 이벤트를 변경할 수 없는 원장처럼 저장하므로 프로세스가 종료되어도 다른 프로세스가 마지막 로그부터 실행을 이어갈 수 있다. - 결과적으로 에이전트가 작업 중이던 정확한 단계에서 복구되고, 사용자가 영원히 끝나지 않는 로딩 상태를 보는 문제를 줄인다. ## 다양한 환경에 배포하는 방식 - Node.js에서는 에이전트를 장시간 실행되는 프로세스로 배포할 수 있다. - VM, 컨테이너, GitHub Actions, 기존 서버 등에 배포할 수 있어 멀티클라우드 구성이 가능하다. - Cloudflare 환경에서는 각 Flue 에이전트가 하나의 **Durable Object**로 실행된다. - 에이전트별 독립적인 컴퓨트와 스토리지를 제공한다. - 필요한 에이전트 수만큼 자동 확장할 수 있다. - 서버 프로비저닝, sticky session, noisy neighbor 문제를 신경 쓰지 않아도 된다. ## Cloudflare Agents SDK의 실행 primitives - Cloudflare에 배포된 Flue는 Agents SDK의 다음 기능을 사용해 내구성 있는 실행을 구현한다. - `runFiber()`: 에이전트 실행을 중단·복구 가능한 작업 단위로 관리 - `stash()`: 실행 중인 상태를 보존 - `onFiberRecovered()`: 복구된 실행을 다시 처리 - `@cloudflare/codemode`와 `@cloudflare/shell`을 활용해 샌드박스 안에서 코드를 실행한다. - 이 코드는 Durable Workspace와 결합되어 에이전트가 지속적으로 사용할 수 있는 작업 공간을 제공한다. ## 하네스가 플랫폼에 요구하는 것 - 에이전트 턴은 단순한 단일 HTTP 요청이 아니라 수초에서 수분간 이어지는 상태ful한 실행이다. - 실행 중 다음과 같은 단계가 발생할 수 있다. - 모델 토큰 스트리밍 - 도구 호출 - 도구 결과 대기 - 사람의 승인 요청 - 하위 에이전트 위임 - 프로세스가 중단되면 스트리밍 연결, 대기 중인 도구 호출, 현재 실행 위치 등 메모리 상태가 사라진다. - 대화 기록만 디스크에 저장되어 있어도 사용자는 완료되지 않는 스피너를 보게 되므로 충분하지 않다. - 따라서 현대적인 하네스에는 실행 중간 상태를 체크포인트로 저장하고 장애 후 이어서 실행할 수 있는 **durable execution**이 필수다. - 글은 Cloudflare Agents SDK의 Fiber가 이러한 체크포인트와 복구를 위한 네이티브 메커니즘을 제공한다고 설명하기 시작하며, 이후 세부 동작은 제공된 본문에서 이어지지 않는다. 에이전트를 실제 서비스로 운영하려면 모델 호출 로직만 구현해서는 부족하다. Flue 같은 프레임워크로 개발 경험과 통합을 단순화하고, Pi 같은 하네스로 에이전트 루프를 처리하며, Durable Objects와 Durable Streams 같은 플랫폼 primitives로 상태 보존·장애 복구·안전한 코드 실행을 확보하는 구성이 실용적이다.

원문 읽기(새 탭에서 열림)
netflix원문

Temporal이 넷플릭스의 안정 (새 탭에서 열림)

넷플릭스는 배포 시스템인 Spinnaker의 클라우드 작업 안정성을 높이기 위해 '지속 가능한 실행(Durable Execution)' 플랫폼인 Temporal을 도입했습니다. 기존 시스템은 인스턴스 재시작이나 네트워크 일시 오류 발생 시 작업 상태를 잃어버리는 구조적 한계로 인해 약 4%의 배포 실패율을 보였습니다. Temporal 도입 후, 상태 정보를 자동으로 유지하고 장애 시 중단 지점부터 재개하는 방식을 통해 일시적 장애로 인한 실패율을 0.0001%까지 획기적으로 낮추는 성과를 거두었습니다. **기존 Spinnaker 구조와 상태 관리의 한계** * 배포 엔진인 Orca가 Clouddriver에 작업을 요청하면, Clouddriver는 내부 오케스트레이션 엔진을 통해 클라우드 제공업체의 API를 호출하는 구조였습니다. * 작업 상태가 메모리나 휘발성 저장소에 유지되었기 때문에, 클러스터 업데이트나 인스턴스 종료와 같은 운영 작업 중 실행 중인 모든 작업이 유실되거나 일관성이 깨지는 문제가 빈번했습니다. * 복잡한 다단계 클라우드 작업 중 중간 단계에서 오류가 발생하면, 수동으로 개입하여 상태를 정리하거나 재시도 로직을 직접 복잡하게 구현해야만 했습니다. **Temporal을 이용한 지속 가능한 실행 구현** * 비즈니스 로직을 담당하는 '워크플로우(Workflow)'와 외부 API 호출 등 부수 효과를 수행하는 '액티비티(Activity)'를 분리하여 설계했습니다. * Temporal은 작업의 모든 실행 단계를 데이터베이스에 기록(Event Sourcing)하므로, 실행 중 프로세스가 죽더라도 새 인스턴스에서 마지막 상태를 복구하여 즉시 재개할 수 있습니다. * 개발자는 일시적인 네트워크 오류나 API 제한에 대비한 복잡한 재시도 코드를 작성하는 대신, Temporal의 선언적 재시도 정책을 활용해 "장애가 없는 것처럼" 코드를 작성할 수 있게 되었습니다. **도입 결과 및 운영 효율성 향상** * 일시적 장애로 인한 배포 실패율이 4%에서 0.0001%로 감소하며 시스템 신뢰도가 비약적으로 상승했습니다. * CDN 장비 업데이트와 같이 며칠 혹은 몇 주가 소요되는 장기 실행 작업도 타임아웃이나 상태 유실 걱정 없이 안정적으로 관리할 수 있게 되었습니다. * 인프라 운영 팀은 시스템 점검이나 배포를 위해 기존 작업을 강제로 중단하거나 완료될 때까지 기다릴 필요가 없어져 운영 유연성이 크게 확보되었습니다. 복잡한 분산 시스템에서 상태 관리와 재시도 로직을 직접 구현하는 것은 매우 까다롭고 오류가 발생하기 쉽습니다. 넷플릭스의 사례처럼 장기 실행 작업이나 높은 신뢰성이 요구되는 마이크로서비스 환경에서는 Temporal과 같은 워크플로우 엔진을 도입하여 인프라 수준에서 안정성을 보장받는 것이 효율적입니다.

aws원문

AWS Lambda Durable Functions를 사용하여 다단계 (새 탭에서 열림)

AWS Lambda Durable Functions의 출시로 개발자들은 별도의 상태 관리 인프라를 구축하지 않고도 복잡한 다단계 애플리케이션과 AI 워크플로우를 익숙한 Lambda 환경에서 구현할 수 있게 되었습니다. 이 기능은 '체크포인트 및 재실행(Checkpoint and Replay)' 메커니즘을 통해 실행 상태를 자동으로 추적하며, 실행 도중 실패가 발생하더라도 마지막 완료 지점부터 작업을 재개합니다. 특히 대기 상태에서는 컴퓨팅 비용이 발생하지 않으면서도 최대 1년까지 실행을 일시 중단할 수 있어, 결제 처리나 사용자 승인이 필요한 장기 프로세스에 최적화된 솔루션을 제공합니다. ### 지속성 실행(Durable Execution)의 핵심 메커니즘 * **체크포인트 및 재실행:** Durable execution SDK를 사용하면 함수가 실행될 때마다 진행 상황이 자동으로 기록됩니다. 예기치 않은 오류로 실행이 중단되더라도 Lambda는 처음부터 핸들러를 다시 실행하되, 이미 완료된 단계는 스킵하고 마지막 체크포인트부터 비즈니스 로직을 이어갑니다. * **비용 효율적인 대기:** 실행 중 특정 지점에서 실행을 일시 중단하면 컴퓨팅 자원 할당이 해제되어 유휴 비용이 발생하지 않습니다. 이후 정의된 조건이 충족되면 자동으로 실행이 재개됩니다. ### 워크플로우 제어를 위한 주요 프리미티브(Primitives) * **context.step():** 비즈니스 로직에 자동 재시도 및 체크포인트 기능을 추가합니다. 해당 단계가 성공적으로 완료되면 이후 재실행 시 다시 수행되지 않도록 보장합니다. * **context.wait():** 지정된 기간 동안 함수의 실행을 중단합니다. 최대 1년까지 대기가 가능하며, 대기 기간 동안에는 비용이 청구되지 않습니다. * **create_callback():** 외부 API 응답이나 사람의 직접적인 승인과 같은 외부 이벤트를 기다릴 수 있는 콜백을 생성합니다. * **wait_for_condition():** REST API 폴링 등을 통해 특정 조건이 충족될 때까지 실행을 일시 정지합니다. * **parallel() 및 map():** 복잡한 병렬 처리 및 동시성 유스케이스를 지원하여 효율적인 리소스 활용을 돕습니다. ### 서비스 도입 시 고려사항 * **설정 방식:** Durable Functions 기능은 Lambda 함수를 처음 생성하는 단계에서만 활성화할 수 있으며, 기존에 이미 생성된 함수에는 소급 적용이 불가능합니다. * **개발 환경:** 함수 생성 시 'Durable execution' 옵션을 활성화한 후, 코드 내에 오픈 소스로 제공되는 Durable Execution SDK를 포함하여 비즈니스 로직을 작성해야 합니다. * **활용 사례:** 주문 처리 프로세스, AI 에이전트의 다단계 추론 오케스트레이션, 인적 승인이 필요한 결재 시스템 등 상태 유지가 필수적인 워크로드에 강력한 이점을 제공합니다. AWS Lambda Durable Functions는 Step Functions와 같은 외부 오케스트레이션 도구 없이도 코드 수준에서 상태ful한 워크플로우를 관리할 수 있게 해줍니다. 단순한 이벤트 처리를 넘어 긴 호흡의 비즈니스 로직을 관리해야 하는 백엔드 개발자나 AI 엔지니어에게 매우 실용적인 도구가 될 것입니다.