클라우드플레어(Cloudflare)가 제공하는 서버리스 컴퓨팅 서비스인 클라우드플레어 워커(Cloudflare Workers)가 같은 서비스 내에서 실행되는 코드 상태를 유지하고 안정된 서비스를 제공할 수 있는 새로운 기능인 듀러블 오브젝트(Durable Objects)를 발표했다. 듀러블 오브젝트를 이용해 서버리스 컴퓨팅에서 어려웠던 데이터 일관성을 확보할 수 있으며 여러 클라이언트 사이 실시간 처리를 실현할 수 있다.
클라우드플레어 워커는 웹사이트를 전 세계 DNS 서버에 캐시하고 클라이언트 통신을 최적화하는 CDN 엣지(Worker)에서 자바스크립트 등 코드를 실행할 수 있는 서비스다. 이용자가 서버를 준비하지 않고도 코드를 실행할 수 있는 서버리스 구조 서비스인 것.
엣지에 작업을 분배하는 서버리스 구조를 갖는 클라우드플레어 워커는 서버 관리를 할 필요가 없고 클라이언트 물리적 위치에 따라 처리를 최적화할 수 있기 때문에 높은 편리성을 갖고 있다. 하지만 코드 상태를 유지하고 처리를 임기응변으로 변경 상태에서 서비스를 구축해 엣지간 데이터 일관성과 여러 클라이언트간 협업을 확보할 필요가 있기 때문에 클라우드플레어 워커에선 어려웠다. 이 과제를 해결한 게 듀러블 오브젝트로 지금까지 클라우드플레어 워커는 실현이 어려웠던 게임 서비스나 쇼핑 사이트 등 안정적 서비스 구축을 쉽게 할 수 있게 해준다.
듀러블 오브젝트는 코드에서 개체 상태를 유지해 서버리스 구조에서도 안정된 서비스 구축을 가능하게 해준다. 개체 상태를 유지하기 위한 스토리지에 연결된 고유 식별자가 부여된다. 전 세계에서 작동하는 엣지 식별자를 바탕으로 개체에 액세스해 엣지 사이 일관성과 여러 클라이언트간 협업을 유지하는 구조다.
보통 클라우드 서비스를 이용하는 경우 데이터센터 지역을 나타내는 지역, 가능한 클라이언트와의 물리적 거리가 가까운 걸 선택하지만 듀러블 오브젝트에서 개체를 배치한다. 여러 클라이언트 클라우드플레어가 생성하는 코디네이터를 통해 서로 상호 작용한다. 코디네이터는 클라이언트간 처리 충돌을 해결하고 처리를 스택해 나중에 반영하는 비동기 처리를 맡는다. 듀러블 오브젝트는 출시에 맞춰 워커가 웹소켓 프로토콜을 지원하는 클라이언트 사이 실시간 처리가 용이하게 해준다. 듀러블 오브젝트는 현재 베타 버전이다. 관련 내용은 이곳에서 확인할 수 있다.