이번 소식
Cloudflare가 Durable Objects에서 대기 중인 작업이 있을 때 종료를 막는 범위를 넓혔습니다. Durable Objects는 상태를 가진 서버 작업을 조율하는 실행 단위입니다. 사용자가 작업을 요청한 뒤 연결을 끊더라도, 지원되는 외부 호출이나 컨테이너 결과를 기다리는 동안 작업을 이어갈 수 있도록 바뀝니다.
주요 변경
- 대기 작업 보호 확대: 다른 Cloudflare 서비스와 연결하는 service binding 요청, 다른 Durable Object에 보내는 RPC·fetch() 호출, 컨테이너 상태를 기다리는
this.ctx.container.monitor()가 종료 방지 대상에 포함됩니다. - 완료를 기다리도록 등록한 작업도 포함:
this.ctx.waitUntil()에 전달한 Promise와 아직 실행되지 않은setTimeout()·setInterval()타이머에도 같은 보호가 적용됩니다. 일반 외부 fetch() 요청·TCP 소켓·외부 WebSocket은 이미 객체를 유지하던 대상입니다. - 작업 하나당 최대 15분: 해당 작업이 끝나거나 시작 후 15분이 지나면 그 작업의 보호가 끝납니다. 동시에 시작한 여러 작업의 시간을 합산하지 않으며, 나중에 새 작업을 시작하면 객체가 메모리에 머무는 시간은 더 길어질 수 있습니다.
영향 대상과 활용
예를 들어 서버에서 여러 도구를 차례로 호출하거나 컨테이너 처리 결과를 기다리는 서비스를 만드는 팀에 도움이 됩니다. 이전에는 연결된 클라이언트가 없는 상태에서 이런 작업이 남아 있어도 유휴 객체가 종료돼, 진행 중인 일이 멈출 수 있었습니다. 이제 지원되는 대기 작업 자체가 종료를 막는 근거가 됩니다.
다만 요청을 보낸 사용자의 화면이 계속 연결돼 있지 않아도 된다는 변화이지, 모든 작업의 완료를 보장하는 기능은 아닙니다. 공식 수명주기 문서는 코드 배포나 런타임 갱신 등으로 객체가 재시작될 수 있다고 설명합니다. 중요한 진행 상태를 저장하고 다시 이어갈 수 있는 설계는 여전히 필요합니다.
사용 전 확인할 점
Workers의 호환 날짜가 2026-10-01 이후이면 새 동작이 기본입니다. 이전 날짜에서는 durable_object_io_tasks_prevent_eviction 플래그로 켤 수 있고, 제외하려면 durable_object_io_tasks_do_not_prevent_eviction을 사용합니다. 종료를 막는 동안에는 실행 시간 요금이 계속 발생합니다. 오래 기다리는 호출과 타이머의 수명도 함께 점검하는 것이 적절합니다.
공식 출처·발표 시점
공식 발표일은 2026년 10월 1일입니다. RSS 게시 시각은 10월 1일 09:00 KST이며, 개별 계정 적용 완료 시각을 뜻하지 않습니다. Durable Objects 수명주기 문서에서 15분 제한과 과금·재시작 조건을 함께 확인했습니다.
새 글 받아보기
RSS 리더에서 BlogFlow의 새 글을 확인할 수 있습니다.