다음을 통해 공유


Azure Functions 호스팅 옵션

Azure에서 함수 앱을 만들 때는 앱의 호스팅 옵션을 선택해야 합니다. Azure는 함수 코드에 대해 다음과 같은 호스팅 옵션을 제공합니다.

호스팅 옵션 서비스 가용성 컨테이너 지원
사용 계획 Azure 기능 일반적으로 사용 가능 (GA) None
Flex 사용량 계획 Azure 기능 프리뷰 None
프리미엄 계획 Azure 기능 GA Linux
전용 계획 Azure 기능 GA Linux
Container Apps Azure Container Apps GA Linux

Azure Functions 호스팅 옵션은 Linux 및 Windows 가상 머신 모두에서 Azure App Service 인프라를 통해 지원됩니다. 선택한 호스팅 옵션에 따라 다음 동작이 결정됩니다.

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

선택한 계획은 함수 코드를 실행하는 비용에도 영향을 줍니다. 자세한 내용은 Billing을 참조하세요.

이 문서에서는 다양한 호스팅 계획을 자세히 비교합니다. Linux 컨테이너에서 함수 코드를 실행하고 관리하는 방법에 대한 자세한 내용은 Azure Functions의 Linux 컨테이너 지원을 참조하세요.

계획 개요

다음은 Azure Functions 호스팅의 다양한 옵션이 제공하는 이점에 대한 요약입니다.

옵션 이점
사용 플랜 자동 크기 조정을 통해 함수가 실행 중일 때만(종량제) 컴퓨팅 리소스에 대한 비용을 지불합니다.

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

✔ 실제 서버리스 호스팅을 제공하는 기본 호스팅 계획입니다.
✔ 함수가 실행되는 경우에만 지불
✔ 높은 부하 기간 동안에도 자동으로 크기 조정
Flex 사용량 계획 컴퓨팅 선택, 가상 네트워킹 및 종량제 청구를 통해 높은 확장성을 얻을 수 있습니다.

Flex 사용량 계획에서 Functions 호스트의 인스턴스는 인스턴스 동시성 및 들어오는 이벤트의 수에 따라 동적으로 추가되고 제거됩니다.

✔ 미리 프로비전된(항상 준비됨) 인스턴스 수를 지정하여 콜드 시작을 줄입니다.
✔ 보안을 강화하기 위해 가상 네트워킹을 지원합니다.
✔ 함수를 실행 중일 때 비용을 지불합니다.
✔ 높은 부하 기간 동안에도 자동으로 크기 조정
프리미엄 계획 유휴 상태 후 지연 없이 애플리케이션을 실행하고, 더 강력한 인스턴스에서 실행되고, 가상 네트워크에 연결하는 사전 준비가 된 작업자를 사용하여 수요에 따라 크기가 자동으로 조정됩니다.

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

✔ 함수 앱을 계속해서 또는 거의 계속해서 실행
✔ 인스턴스를 좀 더 세부적으로 제어하고 이벤트 기반 크기 조정을 사용하여 동일한 계획에 여러 함수 앱을 배포하려고 합니다.
✔ 소형 실행 수도 많고 실행 요금도 높지만 소비 계획에서 GB 초는 낮음
✔ 사용량 계획에서 제공하는 것보다 많은 CPU 또는 메모리 옵션이 필요합니다.
✔ 코드가 소비 계획에 허용된 최대 실행 시간보다 오래 실행해야 함
✔ 가상 네트워크 연결이 필요합니다.
✔ 함수를 실행할 사용자 지정 Linux 이미지를 제공하고자 합니다.
전용 계획 App Service 계획 내에서 함수를 정기적인 App Service 계획 요금으로 실행합니다.

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

✔ 이미 다른 App Service 인스턴스를 실행하고 있는 기존의 활용도가 낮은 가상 머신이 있습니다.
✔ 완전히 예측 가능한 청구가 있거나 인스턴스 크기를 수동으로 조정해야 합니다.
✔ 동일한 계획에서 여러 웹앱 및 함수 앱을 실행하려고 합니다.
✔ 더 큰 컴퓨팅 크기를 선택할 수 있어야 합니다.
✔ ASE(App Service Environment)에서 제공하는 전체 컴퓨팅 격리 및 보안 네트워크 액세스입니다.
✔ 매우 높은 메모리 사용량 및 높은 확장성(ASE)입니다.
Container Apps Azure Container Apps에서 호스트하는 완전히 관리되는 환경에서 컨테이너화된 함수 앱을 만들고 배포합니다.

Azure Functions 프로그래밍 모델을 사용하여 이벤트 기반의 서버리스 클라우드 네이티브 함수 앱을 빌드합니다. 다른 마이크로 서비스, API, 웹 사이트 및 워크플로와 함께 컨테이너 호스팅 프로그램으로 함수를 실행합니다. 다음과 같은 상황에서 Container Apps에서 함수를 호스팅하는 것이 좋습니다.

✔ LOB(기간 업무) 앱을 지원하기 위해 함수 코드로 사용자 지정 라이브러리를 패키지하려고 합니다.
✔ 온-프레미스 또는 레거시 앱에서 컨테이너에서 실행되는 클라우드 네이티브 마이크로 서비스로 코드 실행을 마이그레이션해야 합니다.
✔ Kubernetes 클러스터 및 전용 컴퓨팅 관리의 오버헤드 및 복잡성을 방지하려는 상황입니다.
✔ 함수에 전용 GPU 컴퓨팅 리소스에서 제공하는 고급 처리 성능이 필요합니다.

이 문서의 나머지 표에서는 다양한 기능과 동작을 토대로 호스팅 옵션을 비교합니다.

운영 체제 지원

이 표에서는 호스팅 옵션의 운영 체제 지원 현황을 보여 줍니다.

호스팅 Linux1 배포 Windows2 배포
사용 계획 ✅ 코드 전용
❌ 컨테이너(지원되지 않음)
✅ 코드 전용
Flex 사용량 계획 ✅ 코드 전용
❌ 컨테이너(지원되지 않음)
❌ 지원 안 됨
프리미엄 계획 ✅ 코드 전용
✅ 컨테이너
✅ 코드 전용
전용 계획 ✅ 코드 전용
✅ 컨테이너
✅ 코드 전용
Container Apps ✅ 컨테이너 전용 ❌ 지원 안 됨

1 Linux는 Python 런타임 스택에 대해 지원되는 유일한 운영 체제입니다.
2 Windows 배포는 코드 전용입니다. Functions는 현재 Windows 컨테이너를 지원하지 않습니다.

함수 앱 시간 제한 기간

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

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

계획 기본값 최댓값1
사용 계획 5 10
Flex 사용량 계획 30 무제한2
프리미엄 계획 303 무제한3
전용 계획 304 무제한3

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

언어 지원

Functions의 현재 네이티브 언어 스택 지원에 대한 자세한 내용은 Azure Functions에서 지원되는 언어를 참조하세요.

확장

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

계획 확장 최대 인스턴스 수
사용 계획 이벤트 기반 높은 부하가 발생하는 기간 동안에도 자동으로 스케일 아웃합니다. Functions 인프라는 들어오는 트리거 이벤트의 수를 기반으로 Functions 호스트의 인스턴스를 더 추가하여 CPU 및 메모리 리소스의 크기를 조정합니다. Windows: 200
Linux: 1001
Flex 사용량 계획 함수별 크기 조정. 이벤트 기반 크기 조정 결정은 함수별로 계산되므로 앱의 함수 크기를 좀 더 결정적으로 조정할 수 있습니다. HTTP, Blob 스토리지(Event Grid) 및 Durable Functions를 제외한 앱의 다른 모든 함수 트리거 유형은 독립적인 인스턴스에서 크기가 조정됩니다. 앱의 모든 HTTP 트리거는 모든 Blob 스토리지(Event Grid) 트리거와 마찬가지로 동일한 인스턴스에서 그룹으로 함께 확장됩니다. 모든 Durable Functions 트리거도 인스턴스를 공유하고 함께 크기가 조정됩니다. 지정된 지역에 걸쳐 있는 모든 인스턴스의 총 메모리 사용량에 의해서만 제한됩니다. 자세한 내용은 인스턴스 메모리를 참조하세요.
프리미엄 계획 이벤트 기반 높은 부하 기간 동안에도 자동으로 규모 확장 Azure Functions 인프라는 해당 함수가 트리거되는 이벤트의 수를 기반으로 Functions 호스트의 더 많은 인스턴스를 추가하여 CPU 및 메모리 리소스의 크기를 조정합니다. Windows: 100
Linux: 20-1002
전용 플랜3 크기 수동/자동 조정 10-30
100(ASE)

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

콜드 부팅 동작

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

서비스 제한

리소스 사용 계획 Flex 사용량 플랜12 프리미엄 계획 전용 플랜/ASE
기본 시간 제한 기간(분) 5 30 30 301
최대 시간 제한 기간(분) 10 무제한15 무제한7 무제한2
최대 아웃바운드 연결 수(인스턴스당) 600개 활성(총 1,200개) 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
최대 메모리(인스턴스당 GB) 1.5 413 3.5-14 1.75-14/3.5-14
최대 인스턴스 수(Windows/Linux) 200/100 1000 14 100/20 SKU/100에 따라 다름9
계획당 함수 앱11 100 100 100 무제한4
App Service 계획 지역당 100 해당 없음 리소스 그룹당 100 리소스 그룹당 100
app10배포 슬롯 2 해당 없음 3 1-209
스토리지5 5GB 250GB 250GB 50-1000GB
앱당 사용자 지정 도메인 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개의 제한이 있습니다.
  12. Flex 사용 플랜은 현재 미리 보기로 제공됩니다.
  13. Flex 사용량 플랜 인스턴스 크기는 현재 2,048MB 또는 4,096MB로 정의됩니다. 자세한 내용은 인스턴스 메모리를 참조하세요.
  14. 미리 보기 중 Flex 사용량 플랜에는 지정된 지역에 걸쳐 모든 인스턴스의 총 메모리 사용량을 제한하는 지역별 구독 할당량이 있습니다. 자세한 내용은 인스턴스 메모리를 참조하세요.
  15. Flex 사용량 플랜에서 호스트는 실행 시간 제한을 적용하지 않습니다. 그러나 스케일 인, 배포 또는 업데이트를 적용하기 위해 플랫폼에서 인스턴스를 종료해야 할 수도 있으므로 현재로서는 보장할 수 없습니다.

네트워킹 기능

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

결제

계획 세부 정보
사용 계획 함수가 실행되는 시간 만큼만 요금을 지불하면 됩니다. 청구는 실행 횟수, 실행 시간 및 사용된 메모리를 기반으로 하며,
Flex 사용량 계획 청구는 실행 횟수, 함수를 적극적으로 실행하는 인스턴스의 메모리 및 항상 준비된 인스턴스의 비용을 기반으로 합니다. 자세한 내용은 Flex 사용량 계획 청구를 참조하세요.
프리미엄 계획 프리미엄 계획은 필요하고 사전 준비된 인스턴스에서 사용되는 메모리와 코어 초 수에 기반합니다. 플랜당 하나 이상의 인스턴스는 항상 사전 준비된 상태로 유지되어야 합니다. 이 계획은 가장 예측 가능한 가격 책정을 제공합니다.
전용 계획 웹앱과 같은 다른 App Service 리소스에서와 마찬가지로 App Service 계획에서 함수 앱에 대해 동일한 비용을 지불합니다.

ASE의 경우 인프라에 대해 비용을 지불하고 환경의 크기에 따라 변경되지 않는 월정액이 있습니다. 또한 App Service 계획 vCPU당 비용이 발생합니다. ASE에 호스트되는 모든 앱은 격리 가격 책정 SKU에 해당합니다. 자세한 내용은 ASE 개요 문서를 참조하세요.

동적 호스팅 계획(사용량, Flex 사용량 및 프리미엄) 간의 직접 비용 비교에 대한 내용은 Azure Functions 가격 책정 페이지를 참조하세요. 다양한 전용 계획 옵션의 가격 책정에 대한 내용은 App Service 가격 책정 페이지를 참조하세요. Container Apps 호스팅 가격 책정은 Azure Container Apps 가격 책정을 참조하세요.

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

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

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

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

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

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

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

다음 단계