다음을 통해 공유


서버리스 함수 앱 작업

이 문서에서는 서버리스 Functions 애플리케이션에 대한 Azure 작업 시 고려 사항에 대해 설명합니다. Functions 앱을 지원하려면 운영 담당자가 다음을 수행해야 합니다.

  • 호스팅 구성을 이해하고 구현합니다.
  • 인프라 프로비저닝을 자동화하여 향후 확장성을 확보합니다.
  • 가용성 및 재해 복구 요구 사항을 충족하여 비즈니스 연속성을 유지합니다.

계획

작업을 계획하려면 워크로드 및 요구 사항을 이해한 다음 요구 사항에 가장 적합한 옵션을 디자인하고 구성합니다.

호스팅 옵션 선택

Azure Functions 런타임을 사용하면 유연하게 호스팅할 수 있습니다. 호스팅 플랜 비교 테이블을 사용하여 요구 사항에 가장 적합한 선택을 결정합니다.

  • Azure Functions 호스팅 플랜

    각 Azure Functions 프로젝트는 규모 및 비용 단위인 자체 Functions 앱에서 배포 및 실행됩니다. Azure Functions에 대해 사용 가능한 세 가지 기본 호스팅 플랜으로는 사용량 플랜, 프리미엄 플랜 및 전용(App Service) 플랜을 꼽을 수 있습니다. 호스팅 플랜은 크기 조정 동작, 사용 가능한 리소스, 가상 네트워크 연결과 같은 고급 기능에 대한 지원을 결정합니다.

  • AKS(Azure Kubernetes Service)

    Kubernetes 기반 Functions는 KEDA(Kubernetes-based Event Driven Autoscaling)를 통해 이벤트 기반 스케일링을 사용하여 Docker 컨테이너에서 Functions 런타임을 제공합니다.

호스팅 플랜에 대한 자세한 내용은 다음을 참조하세요.

스케일링 이해

서버리스 사용량 및 프리미엄 호스팅 플랜은 들어오는 이벤트 수에 따라 Azure Functions 호스트 인스턴스를 추가 및 제거하여 자동으로 스케일링됩니다. 스케일링은 여러 차원에 따라 다를 수 있으며 플랜, 트리거 및 코드 언어에 따라 다르게 동작할 수 있습니다.

스케일링에 대한 자세한 내용은 다음을 참조하세요.

콜드 스타트 이해 및 처리

호스트 인스턴스 수가 0으로 스케일 다운되면 다음 요청에는 콜드 스타트라고 하는 함수 앱을 다시 시작하는 추가 대기 시간이 포함됩니다. 콜드 스타트는 서버리스 아키텍처에 대한 큰 논의 지점이며 Azure Functions에 대한 모호성 지점입니다.

프리미엄 호스팅 플랜은 일부 인스턴스를 웜 상태로 유지하여 콜드 스타트를 방지합니다. 종속성을 줄이고 Functions 앱에서 비동기 작업을 사용하면 콜드 스타트의 영향도 최소화됩니다. 그러나 가용성 요구 사항에는 Always on이 사용하도록 설정된 전용 호스팅 플랜에서 앱을 실행해야 할 수 있습니다. 전용 플랜은 전용 VM(가상 머신)을 사용하므로 서버리스가 아닙니다.

콜드 스타트에 대한 자세한 내용은 서버리스 콜드 스타트 이해를 참조하세요.

스토리지 식별 고려 사항

Azure Functions 앱은 트리거 관리 및 함수 실행 로깅 등의 작업에 Azure Storage를 사용합니다. Functions 앱을 만들 때 Blob, Queue 및 Table Storage를 지원하는 범용 Azure Storage 계정을 만들거나 해당 계정에 연결해야 합니다. 자세한 내용은 Azure Functions의 스토리지 고려 사항을 참조하세요.

네트워크 디자인 식별 고려 사항

네트워킹 옵션을 사용하면 Functions 앱이 인터넷 라우팅 가능 주소를 사용하지 않고도 액세스를 제한하거나 리소스에 액세스할 수 있습니다. 호스팅 플랜은 다양한 수준의 네트워크 격리를 제공합니다. 네트워크 격리 요구 사항을 가장 잘 충족하는 옵션을 선택합니다. 자세한 내용은 Azure Functions 네트워킹 옵션을 참조하세요.

생산

프로덕션을 위해 애플리케이션을 준비하려면 호스팅 플랜을 쉽게 다시 배포하고 스케일 아웃 규칙을 적용할 수 있는지 확인합니다.

호스팅 플랜 프로비저닝 자동화

코드 제공 인프라(Infrastructure as code)를 사용하면 인프라 프로비저닝을 자동화할 수 있습니다. 자동 프로비저닝은 재해 중에 더 높은 복원력을 제공하고 필요에 따라 인프라를 신속하게 다시 배포하는 빠른 민첩성을 제공합니다.

자동화된 프로비저닝에 대한 자세한 내용은 다음을 참조하세요.

스케일 아웃 옵션 구성

자동 크기 조정은 애플리케이션 부하를 처리하기 위해 적절한 양의 실행 중인 리소스를 제공합니다. 자동 크기 조정은 늘어난 부하를 처리하기 위해 리소스를 추가하고 유휴 상태의 리소스를 제거하여 비용을 절약합니다.

자동 크기 조정에 대한 자세한 내용은 다음을 참조하세요.

Optimization

애플리케이션이 프로덕션 환경에 있는 경우 다음을 확인합니다.

  • 호스팅 플랜은 애플리케이션 요구에 맞게 확장할 수 있습니다.
  • 비즈니스 연속성, 가용성 및 재해 복구 계획이 있습니다.
  • 호스팅 및 애플리케이션 상태를 모니터링하고 경고를 받을 수 있습니다.

가용성 요구 사항 구현

Azure Functions는 특정한 지역에서 실행됩니다. 더 높은 가용성을 얻기 위해 동일한 Functions 앱을 여러 지역에 배포할 수 있습니다. 여러 지역에서 Functions는 활성-활성 또는 활성-수동 가용성 패턴으로 실행할 수 있습니다.

Azure Functions 가용성 및 재해 복구에 대한 자세한 내용은 다음을 참조하세요.

모니터링 로깅, 애플리케이션 모니터링 및 경고

Azure Monitor의 Application Insights 및 로그는 자동으로 로그, 성능 및 오류 데이터를 수집하고 성능 이상을 감지합니다. Azure Monitor에는 문제를 진단하고 함수 사용을 이해하는 데 도움이 되는 강력한 분석 도구가 포함되어 있습니다. Application Insights는 성능 및 유용성을 지속적으로 향상시키는 데 도움이 됩니다.

Azure Functions 성능 모니터링 및 분석에 대한 자세한 내용은 다음을 참조하세요.

다음 단계