배포 후 활성 Cloudflare Durable Object는 절전 상태에 들어갈 때까지 또는 설정된 제한 시간이 만료될 때까지 현재 코드 버전으로 계속 실행될 수 있습니다. Cloudflare는 10월 30일 지연 업데이트를 기본값으로 설정했으며, 최대 지연 시간은 5분입니다. 개발자에게 이는 배포 중 이미 실행 중인 객체의 동작이 달라짐을 의미합니다. 업데이트가 객체를 즉시 중단할 필요는 없으며, 지원되는 WebSocket 연결은 새 버전으로 전환할 때 유지될 수 있습니다.

배포 중에 일어나는 일
Durable Objects는 지속적인 식별성과 상태를 가진 주소 지정 가능한 객체입니다. Cloudflare는 이를 클라이언트 조정, 장시간 실행 작업, WebSocket 세션 등에 사용합니다. 하나의 객체에는 한 번에 하나의 코드 버전만 적용됩니다. 따라서 활성 인스턴스를 즉시 교체하면 재설정이 일어나 작업이나 연결이 끊길 수 있습니다.
이제 기본 동작은 전환을 지연하는 것입니다. 배포 후 활성 객체는 이전 버전으로 요청을 계속 처리합니다. 객체가 먼저 절전 상태에 들어가면 다음 요청 때 새 버전이 실행됩니다. 5분이 지났는데도 객체가 여전히 활성 상태라면 재설정된 뒤 새 버전을 적용합니다. 이때 Worker 배포는 별도로 완료됩니다. 지연되는 것은 이미 활성 상태인 객체가 새 코드를 실행하기 시작하는 시점입니다.
누구에게 유용한가
이 변경은 장시간 세션, 여러 클라이언트 간 조정, WebSocket 연결처럼 하나의 객체가 요청 사이에도 작업을 유지하는 서비스에 중요합니다. 지연 전환은 객체가 업데이트 전에 현재 작업을 자연스럽게 마치거나 절전 상태로 들어갈 수 있는 시간을 제공합니다. WebSocket의 경우 Cloudflare가 별도의 조건을 명시합니다. Hibernation API를 사용하는 연결은 객체가 절전 상태에서 깨어난 뒤 새 코드를 적용해도 연결이 유지됩니다.
실무적으로 팀은 어떤 활성 객체가 몇 분 넘게 바쁜 상태로 남을 수 있는지 파악하고, 어떤 WebSocket API를 사용하는지 확인해야 합니다. 이에 따라 새 배포 방식이 애플리케이션에 원활한 전환의 기회를 줄지, 아니면 강제 업데이트 시 연결이 종료될지가 달라집니다.
5분은 기회일 뿐 보장이 아니다
Cloudflare는 지연 업데이트를 최선의 노력(best effort) 방식으로 설명합니다. 예를 들어 런타임 환경을 업데이트할 때 객체가 더 일찍 재설정될 수 있습니다. 최대 지연 시간이 끝날 때까지 절전 상태에 들어가지 않으면 플랫폼은 재설정을 통해 새 버전을 적용합니다. 따라서 중요한 상태는 영구 저장소에 보관하고, 작업은 재실행 가능성을 고려해 설계해야 합니다. Cloudflare 문서는 배포 후에도 유지해야 하는 상태를 저장할 것을 권장하며, 활성 인스턴스의 메모리에만 의존하지 말라고 안내합니다.
팀은 Durable Objects 설정에서 동작을 재정의할 수 있습니다. 즉시 업데이트 모드를 지정하거나 지연 전환의 제한 시간을 변경할 수 있습니다. 새 버전을 즉시 적용해야 하는 긴급 수정 등의 경우에는 즉시 모드가 유용합니다. 더 긴 지연은 객체에 추가 시간을 줄 수 있지만, 일부 인스턴스가 이전 버전을 계속 제공하는 기간도 늘어납니다.
다음 배포 전에 확인할 사항
Worker와 Durable Object가 서로 다른 버전으로 실행될 수 있는 동안 요청 호환성을 확인하세요. 중요한 상태가 메모리에만 있는 것이 아니라 저장소에 보관되는지 점검하세요. WebSocket의 경우 애플리케이션이 Hibernation API를 사용하는지 확인하세요. 일반 연결은 업데이트 적용 중 종료될 수 있습니다. 배포 시 즉시 전환이 필요하다면 새 기본값에 기대지 말고 모드 설정을 명시적으로 확인하세요.
요컨대 Cloudflare는 배포 시 기본적인 절충점을 바꿨습니다. 활성 객체에 자연스럽게 전환할 제한된 시간을 주면서도, 팀은 설정을 통해 업데이트를 앞당길 수 있습니다. 개발자가 다음 배포 전에 확인할 가장 중요한 사항은 구버전과 신버전의 호환성, 상태 보존 여부, WebSocket 유형입니다.