Azure Functions 호스팅 옵션

Azure에서 함수 앱을 만들 때는 앱의 호스팅 계획을 선택해야 합니다. Azure Functions가 제공하는 Azure Functions 기본 호스팅 계획으로는 소비 계획, 프리미엄 계획전용(App Service) 계획이 있습니다. 이러한 호스팅 계획은 Azure App Service 인프라를 통해 지원되며 Linux 및 Windows 가상 머신 모두에서 GA(일반 공급)됩니다.

선택한 Azure Functions 호스팅 계획에 따라 다음 동작이 결정됩니다.

  • 함수 앱의 크기 조정 방법
  • 각 함수 앱 인스턴스에 사용 가능한 리소스
  • Azure Virtual Network 연결 등의 고급 기능 지원

Azure Functions 호스팅 외에도 Kubernetes 클러스터 또는 Azure Container Apps에 배포할 수 있는 컨테이너에서 컨테이너화된 함수 앱을 호스팅할 수도 있습니다. Kubernetes 클러스터에서 함수를 호스트하도록 선택하는 경우 Azure Arc 지원 Kubernetes 클러스터를 사용하는 것이 좋습니다. 사용자 지정 컨테이너 앱을 배포하는 방법에 대한 자세한 내용은 Azure Functions의 Azure Container Apps 호스팅을 참조하세요.

이 문서에서는 컨테이너 기반 호스팅 옵션을 비롯한 다양한 호스팅 계획 간의 자세한 비교를 제공합니다.

참고 항목

Azure Functions 컨테이너 호스팅은 Azure Arc 지원 Kubernetes 클러스터 및 Azure Container Apps 모두에서 현재 미리 보기로 제공됩니다.

계획 개요

다음은 Azure Functions의 세 가지 주요 호스팅 계획이 제공하는 이점에 대한 요약입니다.

계획 이점
사용 플랜 자동으로 스케일링하여 함수가 실행 중일 때만 컴퓨팅 리소스 비용을 지불하세요.

소비 계획에서 Functions 호스트의 인스턴스는 들어오는 이벤트의 수에 따라 동적으로 추가되고 제거됩니다.

✔ 기본 호스팅 계획
✔ 함수가 실행되는 경우에만 지불
✔ 높은 부하 기간 동안에도 자동으로 크기 조정
프리미엄 계획 유휴 상태 후 지연 없이 애플리케이션을 실행하고, 더 강력한 인스턴스에서 실행되고, 가상 네트워크에 연결하는 사전 준비가 된 작업자를 사용하여 수요에 따라 크기가 자동으로 조정됩니다.

다음과 같은 상황에서 Azure Functions 프리미엄 계획을 고려합니다.

✔ 함수 앱을 계속해서 또는 거의 계속해서 실행
✔ 소형 실행 수도 많고 실행 요금도 높지만 소비 계획에서 GB 초는 낮음
✔ 소비 계획에서 제공하는 것보다 많은 CPU 또는 메모리 옵션이 필요함
✔ 코드가 소비 계획에 허용된 최대 실행 시간보다 오래 실행해야 함
✔ 가상 네트워크 연결처럼 소비 계획에서 사용할 수 없는 기능이 필요함
✔ 함수를 실행할 사용자 지정 Linux 이미지를 제공하고자 함
전용 계획 App Service 계획 내에서 함수를 정기적인 App Service 계획 요금으로 실행합니다.

Durable Functions를 사용할 수 없는 장기 실행 시나리오에 적합합니다. 다음 상황에서 App Service 플랜을 고려합니다.

✔ 이미 다른 App Service 인스턴스를 실행하고 있는 기존의 활용도가 낮은 VM이 있음
✔ 예측 크기 조정 및 비용이 필요함

이 문서의 비교 테이블에는 다음과 같이 가장 많은 양의 컨트롤과 격리를 제공하여 그 안에서 함수 앱을 실행할 수 있는 호스팅 옵션도 포함되어 있습니다.

호스팅 옵션 세부 정보
ASE ASE(Azure App Service Environment)는 App Service 앱을 높은 확장성으로 안전하게 실행하기 위해 완전히 격리된 전용 환경을 제공하는 App Service 기능입니다.

ASE는 다음을 필요로 하는 애플리케이션 워크로드에 적합합니다.

✔ 매우 높은 확장성
✔ 완전 컴퓨팅 격리 및 보안된 네트워크 액세스
✔ 높은 메모리 사용량
Azure Container Apps Azure Container Apps는 서버리스 플랫폼에서 마이크로 서비스 및 컨테이너화된 애플리케이션을 실행할 수 있는 완전 관리형 환경입니다. Azure Container Apps를 사용하면 Kubernetes API를 사용해야 하는 복잡성을 제거하면서 기본 AKS(Azure Kubernetes Service)의 기능으로 함수를 실행할 수 있습니다.
Kubernetes
(직접 또는
Azure Arc)
Kubernetes는 Kubernetes 플랫폼을 기반으로 실행되는 완전히 격리된 전용 환경을 제공합니다.

Kubernetes는 다음을 필요로 하는 애플리케이션 워크로드에 적합합니다.
✔ 사용자 지정 하드웨어 요구 사항
✔ 격리 및 보안된 네트워크 액세스
✔ 하이브리드 또는 다중 클라우드 환경에서 실행하는 기능
✔ 기존 Kubernetes 애플리케이션 및 서비스와 함께 실행

이 문서의 나머지 테이블에서는 다양한 기능과 동작에 대한 계획을 비교합니다. 동적 호스팅 계획(소비 및 프리미엄) 간의 가격 비교에 대한 내용은 Azure Functions 가격 책정 페이지를 참조하세요. 다양한 전용 계획 옵션의 가격 책정에 대한 내용은 App Service 가격 책정 페이지를 참조하세요.

운영 체제/런타임

다음 테이블에서는 호스팅 플랜에 대해 운영 체제 및 언어 지원을 보여 줍니다.

Linux1,2
코드 전용
Windows 코드 전용 Linux1,2,3
Docker 컨테이너
사용 계획 C#
JavaScript
Java
Python
PowerShell Core
TypeScript
C#
JavaScript
Java
PowerShell Core
TypeScript
지원되지 않음
프리미엄 계획 C#
JavaScript
Java
Python
PowerShell Core
TypeScript
C#
JavaScript
Java
PowerShell Core
TypeScript
C#
JavaScript
Java
PowerShell Core
Python
TypeScript
전용 계획 C#
JavaScript
Java
Python
TypeScript
C#
JavaScript
Java
PowerShell Core
TypeScript
C#
JavaScript
Java
PowerShell Core
Python
TypeScript
ASE C#
JavaScript
Java
Python
TypeScript
C#
JavaScript
Java
PowerShell Core
TypeScript
C#
JavaScript
Java
PowerShell Core
Python
TypeScript
Kubernetes(직접) 해당 없음 해당 없음 C#
JavaScript
Java
PowerShell Core
Python
TypeScript
Azure Arc(미리 보기) C#
JavaScript
Java
Python
TypeScript
해당 없음 C#
JavaScript
Java
PowerShell Core
Python
TypeScript

1 Linux는 Python 런타임 스택에 대해 지원되는 유일한 운영 체제입니다.
2 Linux의 PowerShell 지원은 현재 미리 보기로 제공됩니다.
3 Linux는 Docker 컨테이너에 대해 지원되는 유일한 운영 체제입니다.

함수 앱 시간 제한 기간

함수 앱의 함수에 대한 시간 제한 기간은 host.json 프로젝트 파일의 functionTimeout 속성에 의해 정의됩니다. 이 속성은 특히 함수 실행에 적용됩니다. 트리거가 함수 실행을 시작한 후 함수는 시간 제한 기간 내에 반환/응답해야 합니다. 자세한 내용은 Azure Functions 성능 및 안정성 개선을 참조하세요.

아래의 표에는 특정 플랜에 대한 기본값과 최댓값(분)이 나와 있습니다.

계획 기본값 최댓값1
사용 계획 5 10
프리미엄 계획 302 무제한3
전용 계획 302 무제한3

1 230초는 HTTP 트리거 함수가 함수 앱 시간 제한 설정에 관계없이 요청에 응답하는 데 걸리는 최대 시간입니다. 이는 Azure Load Balancer의 기본 유휴 시간 제한 때문입니다. 처리 시간을 늘리려면 Durable Functions 비동기 패턴 사용을 고려하거나 실제 작업을 연기하고 즉각적인 응답을 반환합니다.
2 Functions 런타임 버전 1.x의 기본 시간 제한은 무제한입니다.
3 최대 60분까지 보장됩니다. OS 및 런타임 패치, 취약성 패치 및 동작 스케일 인로 인해 여전히 함수 실행이 취소될 수 있으므로 강력한 함수를 작성해야 합니다.

확장

다음 테이블에서는 다양한 호스팅 계획의 크기 조정 동작을 비교합니다.
달리 명시되지 않는 한, 최대 인스턴스는 함수 앱(소비) 또는 플랜(프리미엄/전용) 기준으로 제공됩니다.

계획 확장 최대 인스턴스 수
사용 계획 이벤트 기반 높은 부하 기간 동안에도 자동으로 규모 확장 Azure Functions 인프라는 들어오는 트리거 이벤트의 수를 기반으로 Functions 호스트의 추가 인스턴스를 추가하여 CPU 및 메모리 리소스의 크기를 조정합니다. Windows: 200
Linux: 1001
프리미엄 계획 이벤트 기반 높은 부하 기간 동안에도 자동으로 규모 확장 Azure Functions 인프라는 해당 함수가 트리거되는 이벤트의 수를 기반으로 Functions 호스트의 추가 인스턴스를 추가하여 CPU 및 메모리 리소스의 크기를 조정합니다. Windows: 100
Linux: 20-1002
전용 플랜3 크기 수동/자동 조정 10-30
ASE3 크기 수동/자동 조정 100
Kubernetes KEDA를사용하여 Kubernetes 클러스터에 대한 이벤트 기반 자동 크기 조정 클러스터에 따라 다름

1 스케일 아웃 중에는 현재 사용량 플랜의 Linux 앱에 대해 구독당 시간당 500개의 인스턴스로 제한됩니다.
2 일부 지역에서는 프리미엄 플랜의 Linux 앱이 100개의 인스턴스로 스케일링될 수 있습니다. 자세한 내용은 프리미엄 플랜 문서를 참조하세요.
3 다양한 App Service 플랜 옵션에 대한 특정 제한은 App Service 플랜 제한을 참조하세요.

콜드 부팅 동작

계획 세부 정보
사용 계획 유휴 상태일 때 앱의 크기를 0으로 조정할 수 있습니다. 즉, 일부 요청은 시작 시 추가 대기 시간이 있을 수 있습니다. 소비 계획에는 이미 함수 호스트 및 언어 프로세스가 실행 중인 사전 준비된 자리 표시자 함수에서 끌어오는 것을 포함해 콜드 부팅 시간을 줄이는 데 도움이 되는 몇 가지 최적화가 있습니다.
프리미엄 계획 영구적 사전 준비 인스턴스로 콜드 부팅 방지
전용 계획 전용 계획에서 실행하는 경우 Functions 호스트를 지속적으로 실행할 수 있습니다. 즉, 콜드 부팅은 실제로 문제가 되지 않습니다.
ASE 전용 계획에서 실행하는 경우 Functions 호스트를 지속적으로 실행할 수 있습니다. 즉, 콜드 부팅은 실제로 문제가 되지 않습니다.
Kubernetes KEDA 구성에 따라 콜드 부팅을 방지하도록 앱을 구성할 수 있습니다. 크기가 0으로 조정되도록 구성된 경우 새 이벤트에 대해 콜드 부팅이 발생합니다.

서비스 제한

리소스 사용 계획 프리미엄 계획 전용 계획 ASE Kubernetes
기본 시간 제한 기간(분) 5 30 301 30 30
최대 시간 제한 기간(분) 10 무제한7 무제한2 unbounded unbounded
최대 아웃바운드 연결 수(인스턴스당) 600개 활성(총 1,200개) unbounded unbounded unbounded unbounded
최대 요청 크기(MB)3 100 100 100 100 클러스터에 따라 다름
최대 쿼리 문자열 길이3 4096 4096 4096 4096 클러스터에 따라 다름
최대 요청 URL 길이3 8192 8192 8192 8192 클러스터에 따라 다름
인스턴스당 ACU 100 210-840 100-840 210-2508 AKS 가격 책정
최대 메모리(인스턴스당 GB) 1.5 3.5-14 1.75-14 3.5 - 14 모든 노드가 지원됩니다.
최대 인스턴스 수(Windows/Linux) 200/100 100/20 SKU9에 따라 다름 1009 클러스터에 따라 다름
계획당 함수 앱11 100 100 무제한4 unbounded unbounded
App Service 계획 지역당 100 리소스 그룹당 100 리소스 그룹당 100 - -
app10배포 슬롯 2 3 1-209 20 해당 없음
스토리지5 5GB 250GB 50-1000GB 1TB 해당 없음
앱당 사용자 지정 도메인 5006 500 500 500 해당 없음
사용자 지정 도메인 SSL 지원 무제한 SNI SSL 연결 포함 무제한 SNI SSL 및 1개의 IP SSL 연결 포함 무제한 SNI SSL 및 1개의 IP SSL 연결 포함 무제한 SNI SSL 및 1개의 IP SSL 연결 포함 해당 없음

1 기본적으로 App Service 요금제의 Functions 1.x 런타임에 대한 제한 시간은 무제한입니다.
2 App Service 요금제를 Always On으로 설정해야 합니다. 표준 요금으로 결제하세요.
3 이러한 한도는 호스트에 설정됩니다.
4 호스트할 수 있는 함수 앱의 실제 수는 앱의 활동, 머신 인스턴스의 크기 및 해당 리소스 사용률에 따라 달라집니다.
5 스토리지 제한은 동일한 App Service 요금제에 있는 모든 앱에서 임시 스토리지의 총 콘텐츠 크기입니다. 소비 계획은 임시 스토리지에 Azure Files를 사용합니다.
6소비 계획에서 함수 앱이 호스트되는 경우 CNAME 옵션만 지원됩니다. 프리미엄 플랜 또는 App Service 요금제에서 호스트되는 함수 앱의 경우 CNAME 또는 A 레코드 중 하나를 사용하여 사용자 지정 도메인을 매핑할 수 있습니다.
7 최대 60분까지 보장됩니다.
8 작업자는 고객 앱을 호스트하는 역할입니다. 작업자는 vCPU 1개/3.5GB RAM, vCPU 2개/7GB RAM 또는 vCPU 4개/14GB RAM의 세 가지 고정 크기를 사용할 수 있습니다.
9 자세한 내용은 App Service 제한을 참조하세요.
10 프로덕션 슬롯을 포함합니다.
11 현재 지정된 구독에는 함수 앱 5,000개의 제한이 있습니다.

기존 리소스 그룹에서 새 함수 앱 만들기에 대한 제한 사항

경우에 따라 기존 리소스 그룹에서 함수 앱에 대한 새 호스팅 계획을 만들려고 할 때 다음 오류 중 하나가 나타날 수 있습니다.

  • 이 리소스 그룹에서는 가격 책정 계층을 사용할 수 없습니다.
  • <SKU_name> 작업자는 리소스 그룹 <resource_group_name>에서 사용할 수 없습니다.

이는 다음 조건이 충족될 때 발생할 수 있습니다.

  • 다른 함수 앱 또는 웹앱을 포함하는 기존 리소스 그룹에 함수 앱을 만듭니다. 예를 들어 Linux Dedicated 또는 Linux Premium 플랜과 동일한 리소스 그룹에서는 Linux 사용 앱이 지원되지 않습니다.
  • 새 함수 앱은 이전 앱과 동일한 지역에 만들어집니다.
  • 이전 앱은 새 앱과 어떤 식으로든 호환되지 않습니다. 이는 SKU, 운영 체제 간에 또는 가용성 영역 지원과 같은 다른 플랫폼 수준 기능으로 인해 발생할 수 있습니다.

이 문제가 발생하는 이유는 함수 앱 및 웹앱 계획이 생성될 때 다양한 리소스 풀에 매핑되는 방식 때문입니다. 다른 SKU에는 다른 인프라 기능 세트가 필요합니다. 리소스 그룹에서 앱을 만들면 해당 리소스 그룹이 매핑되고 특정 리소스 풀에 할당됩니다. 해당 리소스 그룹에 다른 계획을 만들려고 하는데 매핑된 풀에 필요한 리소스가 없으면 이 오류가 발생합니다.

이 오류가 발생하면 대신 새 리소스 그룹에 함수 앱 및 호스팅 계획을 만듭니다.

네트워킹 기능

기능 사용 계획 프리미엄 계획 전용 계획 ASE
인바운드 IP 제한 ✅예 ✅예 ✅예 ✅예
인바운드 프라이빗 엔드포인트 ❌아니요 ✅예 ✅예 ✅예
가상 네트워크 통합 ❌아니요 ✅예(지역) ✅예(지역 및 게이트웨이) ✅예
가상 네트워크 트리거(비 HTTP) ❌아니요 ✅예 ✅예 ✅예
하이브리드 연결(Windows 전용) ❌아니요 ✅예 ✅예 ✅예
아웃바운드 IP 제한 ❌아니요 ✅예 ✅예 ✅예

결제

계획 세부 정보
사용 계획 함수가 실행되는 시간 만큼만 요금을 지불하면 됩니다. 청구는 실행 횟수, 실행 시간 및 사용된 메모리를 기반으로 하며,
프리미엄 계획 프리미엄 계획은 필요하고 사전 준비된 인스턴스에서 사용되는 메모리와 코어 초 수에 기반합니다. 플랜당 하나 이상의 인스턴스는 항상 사전 준비된 상태로 유지되어야 합니다. 이 계획은 가장 예측 가능한 가격 책정을 제공합니다.
전용 계획 웹앱과 같은 다른 App Service 리소스에서와 마찬가지로 App Service 계획에서 함수 앱에 대해 동일한 비용을 지불합니다.
ASE(App Service Environment) 인프라에 대해 대금을 지급하고 ASE 크기에 따라 변경되지 않는 ASE의 월정액이 있습니다. 또한 App Service 계획 vCPU당 비용이 발생합니다. ASE에 호스트되는 모든 앱은 격리 가격 책정 SKU에 해당합니다.
Kubernetes Kubernetes 클러스터의 요금만 지불하면 되며 Functions에 대한 추가 요금 청구는 없습니다. 함수 앱은 일반 앱처럼 클러스터 기반 애플리케이션 워크로드로 실행됩니다.

다음 단계