내부 벤치마크에서 지속성 작업 스케줄러는 Durable Functions 앱에 가장 일반적으로 사용되는 백 엔드인 Azure Storage 공급자보다 약 five배 빠른 작업 항목을 처리했습니다.
작업은 오케스트레이션 시작, 작업 예약 또는 타이머 처리와 같이 스케줄러에서 처리되는 불연속 작업입니다. 전체 정의 및 청구 세부 정보는 작업이란?을 참조하세요.
벤치마크 결과
지속성 작업 스케줄러는 Azure Storage, MSSQL 및 Netherite 공급자를 비롯한 다른 스토리지 공급자에 대해 벤치마킹되었습니다. 결과에는 Durable Task Scheduler가 다른 옵션보다 더 나은 액션 처리량을 제공하여 지정된 기간 동안 더 많은 오케스트레이터, 엔터티 및 액티비티 태스크가 처리됩니다.
다음 차트는 서로 다른 작업자 수에 대해 Durability Task Scheduler와 Azure Storage 제공자가 초당 처리한 작업 항목 수를 보여줍니다. Azure Storage 공급자는 Durable Functions 앱에 가장 일반적으로 사용되는 기본 백 엔드이기 때문에 비교로 선택되었습니다.
다음 표에서는 벤치마크의 숫자 처리량 값을 요약합니다.
| Configuration | Azure Storage(작업 항목/초) | 지속성 작업 스케줄러(작업 항목/초) | 속도 향상 |
|---|---|---|---|
| EP2, 1 작업자 | ~250 | ~1,400 | ~5.6x |
| EP2, 2명의 작업자 | ~430 | ~2,750 | ~6.4x |
| EP2, 4명의 작업자 | ~830 | ~3,750 | ~4.5x |
메모
이러한 결과는 내부 벤치마크에서 생성되며 상대적 성능에 대한 대략적인 비교를 제공하기 위한 것입니다. 결과는 워크로드 특성에 따라 달라집니다.
벤치마크 방법론
백 엔드 공급자의 상대 처리량을 테스트하기 위해 이러한 벤치마크는 시퀀스로 각 도시에 대해 하나씩 5개의 작업 함수를 호출하는 표준 오케스트레이터 함수를 사용하여 실행되었습니다. 각 활동은 단순히 "Hello, {cityName}!" 문자열 값을 반환하며 다른 작업은 수행하지 않습니다.
벤치마크의 목적은 너무 복잡한 작업을 수행하지 않고 각 백 엔드의 오버헤드를 측정하는 것입니다. 이 유형의 순차 오케스트레이션은 지속성 함수를 포함하는 함수 앱의 공통성으로 인해 선택되었습니다.
테스트 세부 정보
테스트는 다음 조건으로 구성됩니다.
- 이 테스트에 사용되는 함수 앱은 Elastic Premium EP2 인스턴스 1~4개에서 실행됩니다.
- 오케스트레이션 코드는 .NET 8
.NET 격리된 작업자 모델을 사용하여 C#으로 작성되었습니다. - 모든 스토리지 공급자에 동일한 앱이 사용되었으며 유일한 변경 내용은 백 엔드 스토리지 공급자 구성이었습니다.
- 테스트는 동시에 5,000개의 오케스트레이션을 시작하는 HTTP 트리거를 사용하여 트리거됩니다.
테스트가 완료되면 완료된 오케스트레이션의 총 수를 총 실행 시간으로 나누어 처리량을 계산합니다. 각 스토리지 공급자 구성에 대해 테스트를 여러 번 실행하여 결과가 일관성을 유지하도록 했습니다.
결과에 영향을 주는 요소
결과는 다음에 따라 달라질 수 있습니다.
- 오케스트레이션 및 활동의 복잡성
- 동시에 실행되는 오케스트레이션 수
- 오케스트레이션과 작업 간에 전달되는 데이터 페이로드의 크기
- 가상 머신 크기 및 SKU
- 컴퓨팅과 스케줄러 간의 네트워크 대기 시간
메모
이러한 벤치마크는 Microsoft 내부적으로 실행되었으며 독립 실행형 테스트 하네스로 사용할 수 없습니다. 스토리지 백 엔드를 선택할 때 일반적인 상대 성능을 제공하기 위한 것입니다.