다음을 통해 공유


Azure Functions Flex 사용 계획 호스팅

Flex 사용량은 사용한 만큼 지불하는 서버리스 청구 모델을 기반으로 하는 Linux 기반 Azure Functions 호스팅 계획입니다. 여전히 서버리스 모델을 기반으로 하는 프라이빗 네트워킹, 인스턴스 메모리 크기 선택, 빠른/대규모 스케일 아웃 기능을 도입하여 유연성과 사용자 지정 가능성을 높여줍니다.

Flex 사용량 플랜 샘플 리포지토리에서 Flex 사용량 플랜을 기능으로 하는 전체 샘플을 검토할 수 있습니다.

이점

Flex 사용량 플랜은 동적 크기 조정 및 실행 기반 청구를 포함하는 사용량 플랜의 장점을 기반으로 빌드됩니다. Flex 사용량을 사용하면 다음과 같은 추가 기능도 가져올 수 있습니다.

이 표는 Flex 사용량의 기능을 사용량 호스팅 계획과 직접 비교하는 데 도움이 됩니다.

기능 소비 Flex 사용량
0으로 조정 ✅ 예 ✅ 예
크기 조정 동작 이벤트 기반 이벤트 기반(빠름)
가상 네트워크 ❌ 지원 안 됨 ✅ 지원됨
전용 컴퓨팅(콜드 부팅 완화) ❌ 없음 ✅ 상시 준비된 인스턴스(선택 사항)
결제 실행 시간에만 실행 시간 + 상시 준비된 인스턴스
인스턴스 스케일 아웃(최대) 200 1000

사용량 플랜과 기타 모든 계획 및 호스팅 형식에 대한 Flex 사용량 플랜의 전체 비교를 보려면 함수 크기 조정 및 호스팅 옵션을 참조하세요.

가상 네트워크 통합

Flex 사용량은 가상 네트워크 통합에 대한 지원을 추가하여 사용량 플랜의 기존 이점을 확장합니다. 앱이 Flex 사용량 플랜으로 실행되면 가상 네트워크 내에서 보호되는 다른 Azure 서비스에 연결할 수 있습니다. 동시에 Flex 사용량 계획의 크기 조정성 및 처리량 이점과 함께 서버리스 청구 및 크기 조정성을 활용할 수 있습니다. 자세한 내용은 가상 네트워크 통합 사용을 참조하세요.

인스턴스 메모리

Flex 사용량 플랜에서 함수 앱을 만들 때 앱이 실행되는 인스턴스의 메모리 크기를 선택할 수 있습니다. 인스턴스 메모리 크기가 함수 앱 비용에 어떤 영향을 미치는지 알아보려면 청구를 참조하세요.

현재 Flex 사용량은 2,048MB와 4,096MB의 인스턴스 메모리 크기 옵션을 모두 제공합니다.

앱에 사용할 인스턴스 메모리 크기를 결정할 때 고려해야 할 몇 가지 사항은 다음과 같습니다.

  • 2,048MB 인스턴스 메모리 크기는 기본값이며 대부분의 시나리오에 사용해야 합니다. 앱에 더 많은 동시성 또는 더 높은 처리 능력이 필요한 시나리오에는 4,096MB 인스턴스 메모리 크기를 사용합니다. 자세한 내용은 인스턴스 메모리 구성을 참조하세요.
  • 인스턴스 메모리 크기는 언제든지 변경할 수 있습니다. 자세한 내용은 인스턴스 메모리 구성을 참조하세요.
  • 인스턴스 리소스는 Functions 코드와 Functions 호스트 간에 공유됩니다.
  • 인스턴스 메모리 크기가 클수록 각 인스턴스는 동시 실행이나 집약적인 CPU 또는 메모리 워크로드까지 더 많이 처리할 수 있습니다. 특정 규모 결정은 워크로드에 따라 다릅니다.
  • HTTP 트리거의 기본 동시성은 인스턴스 메모리 크기에 따라 다릅니다. 자세한 내용은 HTTP 트리거 동시성을 참조하세요.
  • 사용 가능한 CPU 및 네트워크 대역폭은 특정 인스턴스 크기에 비례하여 제공됩니다.

함수별 크기 조정

동시성은 Flex 사용량 함수 앱의 크기 조정 방식을 결정하는 핵심 요소입니다. 다양한 트리거 형식을 사용하여 앱의 크기 조정 성능을 개선하기 위해 Flex 사용량 플랜은 함수별로 앱의 크기를 조정하는 보다 결정적인 방법을 제공합니다.

함수별 크기 조정 동작은 호스팅 플랫폼의 일부이므로 앱을 구성하거나 코드를 변경할 필요가 없습니다. 자세한 내용은 이벤트 기반 크기 조정 문서의 함수별 크기 조정을 참조하세요.

함수별 크기 조정에서는 그룹 집계를 기반으로 특정 함수 트리거에 대한 결정을 내립니다. 다음 표는 정의된 함수 크기 조정 그룹 집합을 보여줍니다.

그룹 크기 조정 그룹 내 트리거 설정 값
HTTP 트리거 HTTP 트리거
SignalR 트리거
http
Blob Storage 트리거
(Event Grid 기반)
Blob Storage 트리거 blob
지속성 함수 오케스트레이션 트리거
작업 트리거
엔터티 트리거
durable

앱의 다른 모든 함수는 function:<NAMED_FUNCTION> 규칙을 사용하여 참조되는 자체 인스턴스 세트에서 개별적으로 크기가 조정됩니다.

상시 준비 인스턴스

Flex 사용량에는 항상 실행되고 각 함수별 크기 조정 그룹 또는 함수에 할당되는 인스턴스를 선택할 수 있는 상시 준비 함수가 포함되어 있습니다. 이는 애플리케이션의 콜드 부팅 대기 시간을 줄이기 위해 요청을 처리할 수 있도록 항상 최소한의 인스턴스 수를 준비해야 하는 시나리오에 적합한 옵션입니다. 기본값은 0(영)입니다.

예를 들어, HTTP 함수 그룹에 대해 상시 준비를 2로 설정하면 플랫폼은 앱의 HTTP 함수에 대해 항상 두 개의 인스턴스를 실행하고 앱에 할당된 상태를 유지합니다. 이러한 인스턴스는 함수 실행을 처리하고 있지만 동시성 설정에 따라 플랫폼은 주문형 인스턴스를 사용하여 두 인스턴스 이상으로 크기 조정됩니다.

상시 준비된 인스턴스를 구성하는 방법을 알아보려면 상시 준비된 인스턴스 수 설정을 참조하세요.

동시성

동시성은 앱 인스턴스에서 함수의 병렬 실행 횟수를 나타냅니다. 각 인스턴스가 특정 시간에 처리해야 하는 최대 동시 실행 수를 설정할 수 있습니다. 자세한 내용은 HTTP 트리거 동시성을 참조하세요.

동시성은 앱 크기 조정 방식에 직접적인 영향을 미칩니다. 동시성 수준이 낮을수록 함수에 대한 이벤트 중심 수요를 처리하기 위해 더 많은 인스턴스가 필요하기 때문입니다. 동시성을 제어하고 미세 조정할 수 있지만 대부분의 경우에 작동하는 기본값을 제공합니다. HTTP 트리거 함수에 대한 동시성 제한을 설정하는 방법을 알아보려면 HTTP 동시성 제한 설정을 참조하세요.

배포

Flex 사용 계획의 배포는 단일 경로를 따릅니다. 프로젝트 코드가 빌드되고 애플리케이션 패키지로 압축되면 Blob Storage 컨테이너에 배포됩니다. 시작할 때 앱은 패키지를 가져오고 이 패키지에서 함수 코드를 실행합니다. 기본적으로 내부 호스트 메타데이터(AzureWebJobsStorage)를 저장하는 데 사용되는 것과 동일한 스토리지 계정이 배포 컨테이너로도 사용됩니다. 그러나 대체 스토리지 계정을 사용하거나 앱 배포 설정을 구성하여 기본 인증 방법을 선택할 수 있습니다. 배포 경로를 간소화하면 더 이상 배포 동작에 영향을 미치는 앱 설정이 필요하지 않습니다.

결제

Flex 사용량 플랜에서 앱을 실행할 때 비용이 결정되는 두 가지 모드가 있습니다. 각 모드는 인스턴스별로 결정됩니다.

청구 모드 설명
주문형 주문형 모드로 실행하면 사용 가능한 인스턴스에서 함수 코드가 실행되는 시간에 대해서만 요금이 청구됩니다. 주문형 모드에서는 최소 인스턴스 수가 필요하지 않습니다. 다음 항목에 대해 요금이 청구됩니다.

• 각 주문형 인스턴스가 함수를 적극적으로 실행하는 동안 프로비전된 총 메모리 양(GB-초)에서 매월 무료로 제공되는 GB-초를 뺀 값입니다.
• 총 실행 수에서 월별 무료 실행 허용(수)을 뺀 값입니다.
상시 준비 요청을 처리할 수 있는 특정 트리거 형식(HTTP/Durable/Blob) 및 개별 함수에 할당된 하나 이상의 인스턴스를 구성할 수 있습니다. 상시 준비 인스턴스를 사용하도록 설정하면 다음 비용이 청구됩니다.

• 모든 상시 준비 인스턴스에 걸쳐 프로비전된 총 메모리 양, 기준(GB-초)이라고 합니다.
• 각각의 상시 준비 인스턴스가 적극적으로 함수를 실행하는 동안 프로비전된 총 메모리 양(GB-초).
• 총 실행 횟수.

상시 준비 청구에는 무료 보조금이 없습니다.

실행 가격 책정, 상시 준비 초기 비용, 주문형 실행에 대한 무료 보조금에 대한 최신 정보를 보려면 Azure Functions 가격 책정 페이지를 참조하세요.

두 실행 모드 모두에 대해 청구 가능한 최소 실행 기간은 1,000ms입니다. 그 이후에는 청구 가능한 작업 기간이 가장 가까운 100ms로 반올림됩니다. 모니터링 참조에서 Flex 사용량 플랜 청구 기준에 대한 세부 정보를 확인할 수 있습니다.

예를 포함하여 Flex 사용량 플랜을 실행할 때 비용이 계산되는 방법에 대한 자세한 내용은 사용량 기반 비용을 참조하세요.

지원되는 언어 스택 버전

이 표는 현재 Flex 사용량 앱에 지원되는 언어 스택 버전을 보여 줍니다.

언어 스택 필수 버전
C#(격리 프로세스 모드)1 .NET 82
Java Java 11, Java 17
Node.JS 노드 20
PowerShell PowerShell 7.4
Python Python 3.10, Python 3.11

1C# In Process 모드는 지원되지 않습니다. 대신 격리된 작업자 모델에서 실행되도록 .NET 코드 프로젝트를 마이그레이션해야 합니다.
2Microsoft.Azure.Functions.Worker 버전 1.20.0 이상 및 Microsoft.Azure.Functions.Worker.Sdk 버전 1.16.2 이상이 필요합니다.

지역 구독 메모리 할당량

현재 지정된 구독의 각 지역에는 Flex Consumption 계획에서 실행되는 앱의 모든 인스턴스에 대한 메모리 제한이 512,000 MB 있습니다. 즉, 지정된 구독 및 지역에서는 할당량 한도 미만으로 유지되는 한 모든 인스턴스 메모리 크기와 개수의 조합을 사용할 수 있습니다. 예를 들어 다음 각 예제는 할당량에 도달했으며 앱의 크기 조정을 중지한다는 의미입니다.

  • 100개의 인스턴스로 확장된 2048MB 앱 하나와 150개의 인스턴스로 확장된 두 번째 2048MB 앱이 있습니다.
  • 250개의 인스턴스로 확장된 2,048MB 앱이 하나 있습니다.
  • 125개의 인스턴스로 확장된 4096MB 앱이 하나 있습니다.
  • 100개의 인스턴스로 확장된 4,096MB 앱 하나와 50개의 인스턴스로 확장된 두 번째 2048MB 앱이 있습니다.

이 할당량은 요구 사항에 따라 Flex Consumption 앱의 크기를 더 확장할 수 있도록 늘릴 수 있습니다. 앱에 더 큰 할당량이 필요한 경우 지원 티켓을 만드세요.

더 이상 사용되지 않는 속성 및 설정

Flex 사용량에서는 Bicep, ARM 템플릿 및 전체 컨트롤 플레인에 사용되는 많은 표준 애플리케이션 설정 및 사이트 구성 속성이 더 이상 사용되지 않거나 이동되었으므로 함수 앱 리소스 만들기를 자동화할 때 사용해서는 안 됩니다. 자세한 내용은 Flex 사용량 플랜 사용 중단을 참조하세요.

고려 사항

Flex 소비 계획을 사용할 때는 다음과 같은 다른 고려 사항을 염두에 두어야 합니다.

  • 호스트: 앱 초기화를 위한 30초 제한 시간이 있습니다. 함수 앱을 시작하는 데 30초보다 오래 걸리면 gRPC 관련 System.TimeoutException 항목이 기록될 수 있습니다. 현재 이 시간 제한을 구성할 수 없습니다. 자세한 내용은 이 호스트 작업 항목을 참조 하세요.
  • Durable Functions: Azure Storage는 현재 Flex Consumption 계획에서 호스트되는 경우 Durable Functions에 대해 유일하게 지원되는 스토리지 공급자 입니다. Flex 소비 계획에서 지속성 함수를 호스팅할 때 권장 사항을 참조하세요.
  • 가상 네트워크 통합 다음 지침에 Microsoft.App 따라 Azure 리소스 공급자가 구독에 대해 사용하도록 설정되어 있는지 확인합니다. Flex 사용량 앱에 필요한 서브넷 위임은 Microsoft.App/environments입니다.
  • 트리거: Kafka 및 Azure SQL 트리거를 제외한 모든 트리거가 완벽하게 지원됩니다. Blob Storage 트리거는 Event Grid 원본만 지원합니다. C#이 아닌 함수 앱은 확장 번들[4.0.0, 5.0.0) 버전 이상을 사용해야 합니다.
  • 지역: 현재 일부 지역은 지원되지 않습니다. 자세한 내용은 현재 지원되는 지역 보기를 참조하세요.
  • 배포: 배포 슬롯은 현재 지원되지 않습니다.
  • 크기 조정: 현재 가장 낮은 최대 소수 자릿수입니다 40. 현재 지원되는 가장 높은 값은 1000입니다.
  • 관리 종속성: PowerShell의 관리되는 종속성은 Flex Consumption에서 지원되지 않습니다. 대신 사용자 지정 모듈을 정의해야 합니다.
  • 진단 설정: 진단 설정은 현재 지원되지 않습니다.
  • 인증서: WEBSITE_LOAD_CERTIFICATES 앱 설정을 사용하여 인증서를 로드하는 것은 현재 지원되지 않습니다.
  • Key Vault 참조: 함수 앱에 Virtual Network 통합이 있더라도 Key Vault가 네트워크 액세스가 제한되는 경우 앱 설정의 Key Vault 참조가 작동하지 않습니다. 현재 해결 방법은 코드에서 Key Vault를 직접 참조하고 필요한 비밀을 읽는 것입니다.

Azure Functions 호스팅 옵션Flex 사용량 플랜에서 함수 앱 만들기 및 관리