다음을 통해 공유


컨테이너 및 서버리스 접근 방식 결합

이 콘텐츠는 Azure용 클라우드 네이티브 .NET 애플리케이션 설계 eBook 에서 발췌한 것으로, .NET 문서에서 제공되거나 오프라인 상태에서도 읽을 수 있는 PDF(무료 다운로드 가능)로 제공됩니다.

Azure용 클라우드 기본 .NET 앱 eBook 표지 썸네일.

클라우드 네이티브 애플리케이션은 일반적으로 컨테이너 및 오케스트레이션을 활용하는 서비스를 구현합니다. 애플리케이션의 일부 서비스를 Azure Functions로 노출할 수 있는 기회가 종종 있습니다. 그러나 클라우드 네이티브 앱이 Kubernetes에 배포된 경우 이 동일한 도구 집합 내에서 Azure Functions를 활용하는 것이 좋습니다. 다행히 Docker 컨테이너 내에서 Azure Functions를 래핑하고 Kubernetes 기반 앱의 나머지 부분과 동일한 프로세스 및 도구를 사용하여 배포할 수 있습니다.

어떤 경우에 서버리스로 컨테이너를 사용하는 것이 적절한가요?

Azure Function에는 배포된 플랫폼에 대한 지식이 없습니다. 일부 시나리오의 경우 특정 요구 사항이 있을 수 있으며 함수 코드가 실행되는 환경을 사용자 지정해야 합니다. 종속성을 지원하는 사용자 지정 이미지 또는 기본 이미지에서 지원되지 않는 구성이 필요합니다. 이러한 경우 사용자 지정 Docker 컨테이너에 함수를 배포하는 것이 좋습니다.

Azure Functions에서 컨테이너를 사용하지 않도록 해야 하는 경우는 언제인가요?

사용량 청구를 사용하려는 경우 컨테이너에서 함수를 실행할 수 없습니다. 또한 Kubernetes 클러스터에 함수를 배포하는 경우 Azure Functions에서 제공하는 기본 제공 스케일링의 이점을 더 이상 활용할 수 없습니다. 이 장 앞부분에서 설명한 Kubernetes의 스케일링 기능을 사용해야 합니다.

서버리스 및 Docker 컨테이너를 결합하는 방법

Docker 컨테이너에서 Azure Function을 래핑하려면 Azure Functions Core Tools를 설치하고 다음 명령을 실행합니다.

func init ProjectName --worker-runtime dotnet --docker

프로젝트가 만들어지면 Dockerfile 및 dotnet으로 구성된 작업자 런타임이 포함됩니다. 이제 함수를 로컬로 만들고 테스트할 수 있습니다. docker builddocker run 명령을 사용하여 빌드하고 실행합니다. Docker 지원으로 Azure Functions 빌드를 시작하는 자세한 단계는 사용자 지정 이미지를 사용하여 Linux에서 함수 만들기 자습서를 참조하세요.

KEDA와 서버리스 및 Kubernetes를 결합하는 방법

이 장에서는 Azure Functions의 플랫폼이 수요에 맞게 자동으로 스케일 아웃되는 것을 확인했습니다. 그러나 AKS에 컨테이너화된 함수를 배포하는 경우 기본 제공 크기 스케일링 기능이 손실됩니다. 해답은 바로 KEDA(Kubernetes 기반 이벤트 구동)입니다. 컨테이너화된 함수를 포함하여 세분화된 자동 크기 조정 event-driven Kubernetes workloads을 사용할 수 있습니다.

KEDA는 Docker 컨테이너의 Functions 런타임에 이벤트 기반 스케일링 기능을 제공합니다. KEDA는 부하에 따라 0개의 인스턴스(이벤트가 발생하지 않는 경우)에서 n instances까지 스케일링될 수 있습니다. Kubernetes 자동 스케일러(Horizontal Pod Autoscaler)에 사용자 지정 메트릭을 노출하여 자동 스케일링을 사용하도록 설정합니다. KEDA와 함께 Functions 컨테이너를 사용하면 모든 Kubernetes 클러스터에서 서버리스 함수 기능을 복제할 수 있습니다.

KEDA 프로젝트는 이제 CNCF(Cloud Native Computing Foundation )에서 관리할 가치가 있습니다.