이 문서에서는 Flex 소비 계획과 레거시소비 계획 모두에 대한 계획 비용을 예측하는 방법을 보여 주세요.
함수 실행에 대한 기능, 성능 및 비용 요구 사항을 가장 잘 지원하는 호스팅 옵션을 선택합니다. 자세한 내용은 Azure Functions 크기 조정 및 호스팅을 참조하세요.
이 문서에서는 이러한 계획의 청구는 각 인스턴스 내의 활성 실행 기간에 따라 달라지므로 두 가지 사용 요금제에 중점을 둡니다.
유연한 컴퓨팅 옵션, 가상 네트워크 통합 및 Microsoft Entra ID 인증을 사용하는 연결에 대한 모든 지원을 통해 빠른 수평 크기 조정을 제공합니다. 이 계획에서 인스턴스는 최적의 효율성을 위해 구성된 인스턴스별 동시성, 들어오는 이벤트 및 함수별 워크로드에 따라 동적으로 확장됩니다. Flex 소비 플랜은 서버리스 호스팅에 권장됩니다. 자세한 내용은 Azure Functions Flex Consumption 플랜 호스팅을 참조하세요.
Durable Functions는 두 계획 모두에서 실행할 수도 있습니다. Durable Functions를 사용할 때의 비용 고려 사항에 대한 자세한 내용은 Durable Functions 청구를 참조하세요.
소비 기반 비용
무료 보조금을 포함하여 소비 기반 비용을 계산하는 방법은 특정 계획에 따라 달라집니다. 최신 비용 및 부여 정보는 Azure Functions 가격 책정 페이지를 참조하세요.
Flex 사용량 플랜에서 앱을 실행할 때 비용이 결정되는 두 가지 모드가 있습니다. 각 모드는 인스턴스별로 결정됩니다.
| 청구 모드 | 설명 |
|---|---|
| 주문형 |
주문형 모드로 실행하면 사용 가능한 인스턴스에서 함수 코드가 실행되는 시간에 대해서만 요금이 청구됩니다. 주문형 모드에서는 최소 인스턴스 수가 필요하지 않습니다. 다음 항목에 대해 요금이 청구됩니다. • 각 주문형 인스턴스가 함수를 적극적으로 실행하는 동안 프로비전된 총 메모리 양(GB-초)에서 매월 무료로 제공되는 GB-초를 뺀 값입니다. • 총 실행 수에서 월별 무료 실행 허용(수)을 뺀 값입니다. |
| 상시 준비 | 특정 트리거 유형(HTTP/Durable/Blob)과 개별 함수에 할당된 하나 이상의 인스턴스를 구성하여 항상 요청을 처리할 수 있습니다. 상시 준비 인스턴스를 사용하도록 설정하면 다음 비용이 청구됩니다. • 모든 상시 준비 인스턴스에 걸쳐 프로비전된 총 메모리 양, 기준(GB-초)이라고 합니다. • 각각의 상시 준비 인스턴스가 적극적으로 함수를 실행하는 동안 프로비전된 총 메모리 양(GB-초). • 총 실행 횟수. 상시 준비 청구에는 무료 보조금이 없습니다. |
실행 가격 책정, 상시 준비 초기 비용, 주문형 실행에 대한 무료 보조금에 대한 최신 정보를 보려면 Azure Functions 가격 책정 페이지를 참조하세요.
이 다이어그램은 이 계획에서 주문형 비용을 결정하는 방법을 보여줍니다.
실행 시간 외에도 하나 이상의 상시 준비 인스턴스를 사용하는 경우 유지 관리하는 상시 준비 인스턴스 수에 대해 더 낮은 기준 요금을 지불합니다. 항상 준비된 인스턴스의 실행 시간은 주문형 실행이 있는 인스턴스의 실행 시간보다 저렴할 수 있습니다.
중요합니다
이 문서에서는 주문형 가격 책정을 사용하여 예제 계산을 이해하는 데 도움을 줍니다. Flex Consumption 계획에서 함수를 실행하는 동안 발생할 수 있는 비용을 예측할 때 항상 Azure Functions 가격 책정 페이지에서 현재 비용을 확인합니다.
다음과 같은 기본 팩트를 사용하는 HTTP 트리거만 있는 함수 앱을 고려합니다.
- HTTP 트리거는 초당 40개의 상수 요청을 처리합니다.
- HTTP 트리거는 10개의 동시 요청을 처리합니다.
- 인스턴스 메모리 크기는 2,048MB입니다.
- 항상 준비된 인스턴스를 구성하지 않습니다. 즉, 앱이 0으로 확장할 수 있습니다.
이와 같은 상황에서 가격 책정은 코드 실행 중에 수행된 작업의 종류에 따라 달라집니다. 다음 두 가지 워크로드 시나리오를 살펴보겠습니다.
CPU 바인딩 워크로드: CPU 바인딩된 워크로드에서는 동일한 인스턴스에서 여러 요청을 병렬로 처리하는 이점이 없습니다. 이 제한은 각 요청을 자체 인스턴스에 배포하는 것이 더 낫기 때문에 경합 없이 요청이 가능한 한 빨리 완료된다는 것을 의미합니다. 이 시나리오에서는 낮은 HTTP 트리거 동시성을
1설정합니다. 동시 요청이 10개인 경우 앱은 약 10개의 인스턴스의 안정적인 상태로 확장되며, 각 인스턴스는 한 번에 하나의 요청을 지속적으로 처리합니다.각 인스턴스의 크기는 약 2GB이므로 단일 연속 활성 인스턴스의 사용량은
2 GB * 3600 s = 7200 GB-s입니다. 요청 시 실행 속도가 $0.0000026GB-s라고 가정하면(무료 보조금이 적용되지 않음) 비용은 인스턴스당 시간당 비용이 됩니다$0.1872 USD. CPU 바인딩된 앱은 10개의 인스턴스로 확장되므로 실행 시간의 총 시간당 속도는 다음과 같습니다$1.872 USD.마찬가지로 초당 40개 요청의 주문형 실행당 요금(무료 부여 없음)은 시간당
40 * 3600 = 144,000또는0.144 million개의 실행과 같습니다. 백만 번 실행당 주문형 요금이$0.40라고 가정하면 총(무료 크레딧 제외) 시간당 실행 비용은0.144 * $0.40이며 이는 시간당$0.0576에 해당합니다.이 시나리오에서는 10개 인스턴스에서 주문형으로 실행하는 총 시간당 비용이
$1.872 + $0.0576s = $1.9296 USD입니다.IO 바인딩 워크로드: IO 바인딩된 워크로드에서 대부분의 애플리케이션 시간은 들어오는 요청을 기다리는 데 소요되며, 이는 네트워크 처리량 또는 기타 업스트림 요인에 의해 제한될 수 있습니다. 제한된 입력으로 인해 코드는 부정적인 영향 없이 여러 작업을 동시에 처리할 수 있습니다. 이 시나리오에서는 동일한 인스턴스에서 10개의 동시 요청을 모두 처리할 수 있다고 가정합니다.
사용 요금은 각 활성 인스턴스의 메모리를 기반으로 하므로 소비 요금 계산은 단순히
2 GB * 3600 s = 7200 GB-s입니다. 즉, 단일 인스턴스에 대해 시간당$0.1872 USD(으)로 가정된 주문형 실행 속도(무료 부여 제외)입니다.CPU 바인딩 시나리오와 마찬가지로 초당 40개 요청의 주문형 실행당 요금(무료 권한 부여 없음)은 시간당
40 * 3600 = 144,000또는 1억 4,400만 개의 실행과 같습니다. 이 경우 시간당$0.0576, 총 시간당 실행 비용0.144 * $0.40가 부여됩니다.이 시나리오에서는 단일 인스턴스를 주문형으로 실행하는 데 드는 총 시간당 비용은 다음과 같습니다
$0.1872 + $0.0576 = $0.245 USD.
실행 시간에 영향을 주는 동작
함수의 다음 동작은 실행 시간에 영향을 줄 수 있습니다.
트리거 및 바인딩: 함수 바인딩 에서 입력을 읽고 출력을 쓰는 데 걸린 시간은 실행 시간으로 계산됩니다. 예를 들어 함수가 출력 바인딩을 사용하여 Azure 스토리지 큐에 메시지를 쓰는 경우 실행 시간에는 함수 비용 계산에 포함된, 메시지를 큐에 쓰는 데 걸리는 시간이 포함됩니다.
비동기 실행: 함수가 비동기 요청
await(C#)의 결과를 기다리는 시간은 실행 시간으로 계산됩니다. GB-초 계산은 함수의 시작 및 종료 시간과 해당 기간 동안의 메모리 사용량을 기반으로 합니다. CPU 작업 측면에서 해당 시간 동안 발생하는 작업은 계산에 고려되지 않습니다. 비동기 작업 중에 Durable Functions를 사용하여 비용을 절감할 수 있습니다. 오케스트레이터 함수에서 기다리는 데 소요된 시간에 대해서는 요금이 청구되지 않습니다.
메트릭에서 비용 보기 및 예측
청구서에서 실제 청구 비용과 함께 비용 관련 데이터를 볼 수 있습니다. 그러나 이 청구서 데이터는 과거 청구서 기간에 대한 월별 집계입니다.
이 섹션에서는 앱 수준 및 함수 실행 모두 메트릭을 사용하여 함수 앱 실행 비용을 예측하는 방법을 보여 줍니다.
함수 앱-수준 메트릭
앱에서 사용할 수 있는 앱 수준 메트릭은 사용하는 사용 계획 유형에 따라 달라집니다.
이러한 Azure Monitor 메트릭은 Flex 소비 계획 청구와 관련이 있습니다.
| Metric | 설명 | 미터 계산 |
|---|---|---|
| 주문형 함수 실행 수 | 주문형 인스턴스의 총 함수 실행 수입니다. |
OnDemandFunctionExecutionCount 는 주문형 총 실행 미터와 관련이 있습니다 . |
| Always Ready 함수 실행 횟수 | 상시 준비 인스턴스의 총 함수 실행 수입니다. |
AlwaysReadyFunctionExecutionCount 는 Always Ready Total Executions 미터와 관련이 있습니다 . |
| 주문형 함수 실행 단위 | 함수 실행 활동 중의 총 MB-밀리초를 계산한 값으로, 주문형 인스턴스를 기준으로 합니다. |
OnDemandFunctionExecutionUnits / 1,024,000 는 주문형 실행 시간 미터(GB-초)입니다. |
| 항상 준비된 함수 실행 유닛 | 함수가 실행 중인 동안 항상 대기 상태인 인스턴스의 총 MB-밀리초입니다. |
AlwaysReadyFunctionExecutionUnits / 1,024,000는 Always Ready 실행 시간 측정기(GB-초)입니다. |
| 항상 준비된 유닛 | 함수가 적극적으로 실행 중인지 여부에 관계없이 앱에 할당된 항상 준비된 인스턴스의 총 MB-밀리초입니다. |
AlwaysReadyUnits / 1,024,000는 GB초로 표시된 Always Ready 기준 측정값입니다. |
자세한 내용은 Azure Functions 모니터링 데이터 참조를 참조하세요.
함수의 비용을 더 잘 이해하려면 Azure Monitor를 사용하여 함수 앱이 생성하는 비용 관련 메트릭을 확인합니다. 다음 도구 중 하나를 사용하여 모니터 메트릭을 볼 수 있습니다.
Azure Monitor 메트릭 탐색기를 사용하여 Flex Consumption 계획 함수 앱의 비용 관련 데이터를 그래픽 형식으로 볼 수 있습니다.
Azure Portal에서 함수 앱으로 이동합니다.
왼쪽 패널에서 모니터링까지 아래로 스크롤 하고메트릭을 선택합니다.
메트릭에서 주문형 함수 실행 횟수 및 집계에 대한 합계를 선택합니다. 이 선택 영역은 선택한 기간 동안 실행 횟수의 합계를 차트에 추가합니다.
메트릭 추가를 선택하고 주문형 함수 실행 단위, Always Ready 함수 실행 수, Always Ready 함수 실행 단위 및 Always Ready 단위를 차트에 추가합니다.
결과 차트에는 선택한 시간 범위의 모든 Flex Consumption 실행 메트릭에 대한 합계가 포함되며, 이 예제에서는 사용자 지정 시간 범위입니다.
주문형 함수 실행 단위 수가 주문형 함수 실행 수보다 크고 앱에 항상 준비된 인스턴스 가 없으므로 차트에 주문형 함수 실행 단위만 표시됩니다.
이 차트는 16분 동안 사용된 총 3.54억 On Demand Function Execution Units (MB-밀리초)를 보여줍니다. GB 초로 변환하려면 1,024,000으로 나눕니다. 이 예제에서 함수 앱은 3,540,000,000 / 1,024,000 = 3,457.03 GB-초를 사용했습니다. 이 값을 사용하여 함수 가격 책정 페이지에서 주문형 실행 시간의 현재 가격을 곱할 수 있습니다. 그러면 실행 시간의 무료 부여를 이미 사용했다고 가정할 때 이러한 16분의 비용이 제공됩니다. Always Ready 함수 실행 단위 메트릭 및 Always Ready 실행 시간 청구 미터 비용, 그리고 Always Ready 단위 메트릭 및 Always Ready 베이스라인 청구 미터 비용과 동일한 계산을 사용하여 항상 준비된 인스턴스의 GB-초 비용을 확인할 수 있습니다.
주문형 총 실행 비용을 계산하려면 같은 기간 동안 주문형 함수 실행 수 합계를 가져와 수백만으로 변환한 다음 함수 가격 책정 페이지의 주문형 총 실행 가격을 곱합니다. 예를 들어 위의 예제에서 2,100개의 실행은 백만 개의 실행으로 0.0021 변환됩니다. Always Ready 함수 실행 수 메트릭 및 Always Ready Total Executions 청구 미터와 함께 이 동일한 계산을 사용하여 Always Ready 인스턴스에서 처리되는 실행 비용을 확인할 수 있습니다.
함수 수준 메트릭
메모리 사용량은 함수 실행 비용을 예측할 때 중요합니다. 그러나 메모리 사용량이 비용에 미치는 영향은 특정 계획 유형에 따라 달라집니다.
Flex 소비 계획에서 설정된 메모리 제한이 있는 선택한 인스턴스 크기에 따라 인스턴스가 실행되는 시간에 대한 비용을 지불합니다. 자세한 내용은 Billing을 참조하세요.
이를 아직 수행하지 않은 경우 함수 앱에서 Application Insights를 사용하도록 설정합니다. 이 통합을 사용하도록 설정하면 포털에서 이 원격 분석 데이터를 쿼리할 수 있습니다.
Azure Portal 또는 REST API에서 Azure Monitor 메트릭 탐색기를 사용하여 Monitor 메트릭 데이터를 가져올 수 있습니다.
메모리 사용량 확인
모니터링 아래에서 로그(분석)를 선택한 후, 다음 원격 분석 쿼리를 복사하여 쿼리 창에 붙여넣고 실행을 선택합니다. 이 쿼리는 샘플링된 각 시간의 총 메모리 사용량을 반환합니다.
performanceCounters
| where name == "Private Bytes"
| project timestamp, name, value
결과는 다음 예제와 같습니다.
| 타임스탬프 [UTC] | 이름 | 가치 |
|---|---|---|
| 2019년 9월 12일, 오전 1:05:14.947 | 프라이빗 바이트 | 209,932,288 |
| 2019년 9월 12일, 오전 1:06:14.994 | 프라이빗 바이트 | 212,189,184 |
| 2019년 9월 12일, 오전 1:06:30.010 | 프라이빗 바이트 | 231,714,816 |
| 2019년 9월 12일, 오전 1:07:15.040 | 프라이빗 바이트 | 210,591,744 |
| 2019년 9월 12일, 오전 1:12:16.285 | 프라이빗 바이트 | 216,285,184 |
| 2019년 9월 12일, 오전 1:12:31.376 | 프라이빗 바이트 | 235,806,720 |
기간 결정
Azure Monitor는 Functions의 경우 함수 앱인 리소스 수준에서 메트릭을 추적합니다. Application Insights 통합은 함수 단위로 메트릭을 내보냅니다. 함수의 평균 기간을 가져오는 분석 쿼리 예제는 다음과 같습니다.
customMetrics
| where name contains "Duration"
| extend averageDuration = valueSum / valueCount
| summarize averageDurationMilliseconds=avg(averageDuration) by name
| 이름 | 평균기간밀리초 |
|---|---|
| QueueTrigger 평균 지속시간(밀리초) | 16.087 |
| QueueTrigger 최대 지속 시간 밀리초 | 90.249 |
| QueueTrigger 최소지속시간(ms) | 8.522 |
기타 관련 비용
모든 플랜에서 함수를 실행하는 전체 비용을 예측할 때 함수 런타임은 각각 별도로 청구되는 여러 Azure 서비스를 사용합니다. 함수 앱에 대한 가격 책정을 예상할 때 다른 Azure 서비스와 통합되는 모든 트리거 및 바인딩을 사용하려면 해당 다른 서비스를 만들고 비용을 지불해야 합니다.
사용량 계획에서 실행되는 함수의 경우 총 비용은 함수의 실행 비용과 대역폭 및 기타 서비스의 비용입니다.
함수 앱 및 관련 서비스의 전체 비용을 예측하는 경우 Azure 가격 책정 계산기를 사용합니다.
| 관련 비용 | 설명 |
|---|---|
| 스토리지 계정 | 각 함수 앱에는 별도로 청구되는 연결된 범용 Azure Storage 계정이 있어야 합니다. 이 계정은 함수 런타임에서 내부적으로 사용되지만 스토리지 트리거 및 바인딩에 사용할 수도 있습니다. 스토리지 계정이 없는 경우 함수 앱을 만들 때 하나의 계정이 만들어집니다. 자세한 내용은 스토리지 계정 요구 사항을 참조하세요. |
| Application Insights | Functions는 Application Insights를 사용하여 함수 앱에 고성능 모니터링 환경을 제공합니다. 필수는 아니지만 Application Insights 통합을 사용하도록 설정해야 합니다. 원격 분석 데이터의 체험판 부여는 매달 포함됩니다. 자세한 정보는 Azure Monitor 가격 책정 페이지를 참조하세요. |
| 네트워크 대역폭 | 데이터 이동의 방향과 시나리오에 따라 데이터 전송 비용이 발생할 수 있습니다. 자세한 정보는 대역폭 가격 책정 세부 정보를 참조하세요. |