내구성 함수(Durable Function)의 3가지 형태: Stateless, Session, Actor
내구성 함수(Durable Function)는 시스템 장애에도 실행 상태를 보존하며 재시작 가능한 함수를 의미함
Stateless Function, Session, Actor의 세 가지 형태로 분류하여 각 특징과 사용 사례를 제시함
Temporal, Restate, DBOS, Resonate 등 다양한 DE 프레임워크를 이 모델에 매핑하여 비교 분석함
Stateless Function: 일회성 작업
Stateless Function은 단일 실행(One-shot)을 위한 내구성 함수 형태로, 시작과 끝이 명확하며 외부 상호 작용이 없다. 결제 처리(Payment Processing)와 같이, 입력 데이터를 받아 처리하고 결과를 반환하는 데 사용된다. 실행 중 오류 발생 시, DEE(Durable Execution Engine)는 메모이제이션(Memoization)된 결과를 활용하여 처음부터 다시 실행한다. Stateless Function은 공개적으로 접근 가능하지 않으며(Publicly addressable), 실행 ID가 필요하지 않다.
Session: 대화형 워크플로우
Session은 실행 ID(Execution ID)를 가지며, 여러 단계의 상호 작용을 지원하는 내구성 함수 형태이다. 대출 신청 워크플로우(Loan Application Workflow)와 같이, 여러 단계의 프로세스를 관리하고 외부의 요청에 따라 상태를 변경할 수 있다. Session은 실행 중인 인스턴스에 대한 접근(Access to the running instance)을 허용하며, 외부 시스템과의 통신을 위해 메시지 전달(Message Passing) 또는 보조 함수 호출(Secondary function calls)을 사용한다. Session의 수명은 프로세스 실행 기간으로 제한된다.
Actor: 지속적인 상태 관리
Actor는 영구적인 ID(Persistent Identity)를 가지며, 장기간 상태를 유지하는 내구성 함수 형태이다. 쇼핑 카트(Shopping Cart)와 같이, 여러 세션에 걸쳐 상태를 보존하고, 외부의 요청에 따라 상태를 변경한다. Actor는 여러 함수(Functions)를 제공하며, 각 함수는 상태 변경(State Mutation) 또는 부수 효과(Side Effects)를 수행한다. Actor는 명시적으로 삭제될 때까지 존재하며, 동시성(Concurrency)은 각 함수가 순차적으로 실행되는 방식으로 관리된다.
DE 프레임워크 매핑
게시물은 Temporal, Restate, DBOS, Resonate와 같은 DE 프레임워크를 앞서 설명한 세 가지 형태에 매핑하여 각 프레임워크의 특징을 분석한다. Temporal은 Session 형태의 워크플로우를 지원하며, 신호(Signals)와 업데이트(Updates)를 통해 외부 상호 작용을 처리한다. Restate는 Stateless Function, Session, Actor에 해당하는 다양한 서비스 유형과 핸들러를 제공한다. DBOS는 Session 기반의 워크플로우를 중심으로 하며, 메시지 전송(Send/Recv messaging) 및 이벤트 발행(Event publishing)을 통해 외부 상호 작용을 지원한다. Resonate는 Durable Promise를 기반으로 Stateless Function을 중심으로 하며, Session의 의미를 지원한다.