[논문 리뷰] Serverless Workflows with Durable Functions and Netherite
이 논문은 개발자가 어떤 언어에서나 표준 코드를 사용하여 복잡한 상태 유지 워크플로우를 작성할 수 있도록 하는 서버리스 프로그래밍 모델인 Durable Functions와, 이러한 워크플로우를 효율적으로 확장 가능한 실행 엔진인 Netherite를 제안한다. Netherite는 파artition링, 복구 로그, 비동기 스냅샷, 사전 통신 기법을 사용하여 낮은 지연 시간과 높은 처리량을 달성하며, 핵심 워크로드에서 기존 서버리스 워크플로우 솔루션보다 수개월 정도 성능이 뛰어나다.
Serverless is an increasingly popular choice for service architects because it can provide elasticity and load-based billing with minimal developer effort. A common and important use case is to compose serverless functions and cloud storage into reliable workflows. However, existing solutions for authoring workflows provide a rudimentary experience compared to writing standard code in a modern programming language. Furthermore, executing workflows reliably in an elastic serverless environment poses significant performance challenges. To address these, we propose Durable Functions, a programming model for serverless workflows, and Netherite, a distributed execution engine to execute them efficiently. Workflows in Durable Functions are expressed as task-parallel code in a host language of choice. Internally, the workflows are translated to fine-grained stateful communicating processes, which are load-balanced over an elastic cluster. The main challenge is to minimize the cost of reliably persisting progress to storage while supporting elastic scale. Netherite solves this by introducing partitioning, recovery logs, asynchronous snapshots, and speculative communication. Our results show that Durable Functions simplifies the expression of complex workflows, and that Netherite achieves lower latency and higher throughput than the prevailing approaches for serverless workflows in Azure and AWS, by orders of magnitude in some cases.
연구 동기 및 목표
- 기존 서버리스 워크플로우 솔루션의 한계를 해결하기 위해, 낮은 프로그래밍 가능성과 성능을 개선한다.
- 개발자가 선언적 또는 비정형 조합이 아닌 익숙한 프로그래밍 구조를 사용하여 복잡한 상태 유지 워크플로우를 표현할 수 있도록 한다.
- 유연한 확장성과 함께 내구성 있는 상태의 스토리지 I/O 비용을 최소화하는 신뢰할 수 있는 실행 엔진을 구축한다.
- 작업 단위의 원자성을 보장하는 강력한, 개발자가 이해할 수 있는 신뢰성 보장 조건인 인과적 일致성 커밋을 제공한다.
- 각 워크플로우의 상태 영속성에 따른 성능 저하 문제를 해결하기 위해 효율적이고 배치 처리되며 사전 처리 가능한 상태 관리 기법을 도입한다.
제안 방법
- Durable Functions는 C#, Python, JavaScript와 같은 호스트 언어에서 워크플로우를 세밀한 상태 유지 통신 프로세스로 변환한다.
- 시스템은 두 가지 기본 원리인 무상태 작업과 상태 유지 인스턴스를 사용하여 프로그래밍 모델과 실행을 분리한다.
- Netherite는 노드 간 상태 분산을 위해 파artition링을 사용하여 확장 가능한 스케일링을 실현한다.
- 실행 중 장애 발생 후 빠른 재시작과 진행 상황의 내구성을 확보하기 위해 복구 로그를 활용한다.
- 작업 완료 후 체크포인트를 연기함으로써 상태 영속성 비용을 감소시키기 위해 비동기 스냅샷을 적용한다.
- 상태가 완전히 영속화되기 전에도 메시지 전달을 사전에 진행시켜 처리량을 증가시키고 지연 시간을 감소시킨다.
실험 결과
연구 질문
- RQ1어떻게 표준 프로그래밍 언어를 사용하여 프로그래밍 가능하고 조합 가능한 방식으로 서버리스 워크플로우를 표현할 수 있는가?
- RQ2내구성 있는 상태 유지 서버리스 워크플로우를 효율적으로 확장하면서 스토리지 I/O 오버헤드를 최소화할 수 있는 실행 모델은 무엇인가?
- RQ3서버리스 환경에서 강력한 신뢰성 보장 조건인 인과적 일치 커밋을 효율적으로 구현할 수 있는가?
- RQ4기존의 서버리스 워크플로우 시스템인 AWS Step Functions와 Azure Durable Functions에 비해 어떤 성능 향상이 가능할 수 있는가?
- RQ5파artition링, 사전 통신, 비동기 스냅샷이 결합되어 내구성 있는 서버리스 실행에서 지연 시간을 감소시키고 처리량을 증가시킬 수 있는가?
주요 결과
- Durable Functions는 개발자가 익숙한 제어 흐름 구조와 언어 생태계를 사용하여 복잡한 상태 유지 워크플로우를 작성할 수 있게 하여, 선언적 또는 비정형 모델 대비 프로그래밍 가능성을 크게 향상시킨다.
- Netherite는 기존 서버리스 워크플로우 솔루션보다 낮은 지연 시간과 높은 처리량을 달성하며, 특정 워크로드에서 성능 향상이 수개월 수준으로 나타난다.
- 파artition링과 사전 통신의 사용으로 상태가 완전히 영속화되기 전에도 메시지 처리를 동시에 진행시켜 종단 간 지연 시간을 감소시킨다.
- 비동기 스냅샷과 복구 로그를 통해 내구성 있는 상태 영속화의 I/O 비용을 감소시켜 대규모 클러스터에서의 효율적 확장이 가능해진다.
- 인과적 일치 커밋 보장은 장애 발생 시 부분적 또는 일관성 없는 상태 변경을 방지하여 작업 단위의 원자성을 보장한다.
- 종단 간 평가 결과, Netherite는 높은 부하 상황에서도 효율적으로 확장되며, 기준 시스템 대비 낮은 지연 시간과 높은 처리량을 유지한다.
더 나은 연구,지금 바로 시작하세요
논문 읽기부터 검토까지, 연구 시간을 획기적으로 줄여보세요.
카드 등록 없음 · 무료 플랜 제공
이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.