AZURE

Azure functions

Mara7 2022. 9. 6.
LIST

Azure functions

연결 방식 : 기본 제공 바인딩 형식 정보, 사용자 지정 바인딩에 대한 코드 작성

actions : Azure 함수

monitoring : Azure Application Insights

관리 : REST API, Visual Studio

호스팅 옵션

  • 사용 플랜
  • functions 프리미엄 플랜
  • App Service(전용) 플랜

⇒ 일반 제공되는 대상

1. Consumption 플랜

  • 기본 호스팅 계획
  • 크기를 자동 조정, 사용자는 함수가 실행 중일때만 컴퓨팅 리소스에 대한 비용 지불
  • functions 호스트 인스턴스 ⇒ 들어오는 이벤트 수를 기준으로 동적 추가 및 제거됨

2. Premium plan

  • 유휴 상태 후 지연 없이 애플리케이션 실행
  • 더 강력
  • 가상 네트워크에 연결하는 사전 준비가 된 작업자를 사용하여 수요에 따라 크기가 자동으로 조정됨

3. 전용 계획

  • App Service 계획 내에서 함수를 정기적인 App Service 계획 요금으로 실행
  • Durable Function을 사용할 수 없는 장기 실행 시나리오에 적합

호스팅 옵션

ASE

  • App Service 앱을 높은 확장성으로 안전하게 실행하기 위해 완전히 격리된 전용 환경을 제공하는 App Service 기능

Kubernetes

  • kubernetes 플랫폼 기반 실행되는 완전한 격리된 전용 환경 제공

Always On

  • App Service 계획에서만 사용할 수 있음

Storage 계정 요구 사항

  • 어떤 플랜이든, Azure Blob, Queue,Files 및 Table storage를 지원하는 일반 Azure Storage 계정이 필요함
  • Blob 전용 스토리지 계정, 영역 중복 스토리지 복제가 사용되는 범용 스토리지 계정을 포함한 계정은 function App 만들 때 선택 못함
    • These accounts, which include blob-only storage accounts (including premium storage) and general-purpose storage accounts with zone-redundant storage replication, are filtered-out from your existing Storage Account selections when you create a function app.
  • 함수 앱에서 사용하는 것과 동일한 스토리지 계정을 트리거, 바인딩에서 사용해서 애플리케이션 데이터를 저장할수는 있는데 스토리지를 많이 쓰면 별도의 스토리지 계정을 사용해야 함

크기 조정

  • Consumption, Premium ⇒ 함수 호스트의 추가 인스턴스를 추가하여 CPU, 메모리 리소스의 크기를 조정하며 인스턴스 수는 함수를 트리거하는 이벤트의 수에 따라 결정됨
  • Consumption : host의 각 인스턴스는 1.5GB 메모리와 하나의 CPU로 제한됨
    • host의 instance는 전체 함수 앱
      • 함수 앱 내에 있는 모든 기능은 instance 내에서 리소스를 공유하고 동시에 크기 조정됨
      • 동일한 사용 계획을 공유하는 함수는 독립적으로 크기를 조정함
  • Premium : 계획의 크기 → 해당 instance에서 해당 plan의 모든 앱에 대해 사용 가능한 메모리와 CPU를 결정함
  • ☠️ 함수 code file → function의 main storage account의 Azure Files share에 저장됨
    • 함수 앱의 main storage account를 삭제하면 함수 코드 파일이 삭제되고 복구 안됨

Runtime scaling

  • scale controller
    • 이벤트 비율을 모니터링 , scale in or out 을 결정함
    • 각각 트리거 타입에 무의식적인 선택을 사용함
      • ex) 애저 큐 스토리지 트리거를 사용할 때 큐의 길이나 가장 오래된 큐 메시지 기간으로 결정함
    • function app이 확장되면, 다양한 애저 펑션 호스트의 인스턴스를 실행하기 위해 추가 리소스가 할당됨
    • function app 수요 감소 → scale controller 가 함수 호스트 인스턴스를 제거함scale 단위 : Azure Fuction app

  • 콜드 부팅 : 함수 앱 유휴 상태 후 앱이 실행되는 인스턴스 수를 0으로 크기 조정할 수 있으며 0에서 1로 크기를 조정하는 추가대기시간이 있는데 이 대기시간을 콜드 부팅이라고 한다.

크기 조정 동작

  • 여러가지 이유가 있을 수 있고 선택한 트리거나 언어에 따라 달라짐
  • 유의할 확장 동작
    • 최대 인스턴스 : 단일 함수 앱 은 최대 200개 인스턴스로 스케일 아웃이 가능
      • 단일 인스턴스 : 동시에 둘 이상의 메시지, 요청을 처리할 수 있으며 동시 실행 수 : 무제한
    • 새 인스턴스율
      • HTTP 트리거 : 새 인스턴스는 최대 1초당 1 번씩 할당됨,
      • HTTP 외의 트리거 : 새 인스턴스는 최대 30초마다 1 번씩 할당됨

스케일 아웃 제한

  • 앱을 스케일 아웃하는데 사용되는 최대 인스턴스 수 제한 가능
    • 다운 스트림 구성 요소의 처리량이 제한되는 경우에 가장 일반적
  • Consumption : 최대 200개 인스턴스까지 스케일 아웃
  • Premium : 최대 100개의 인스턴스로 스케일 아웃 됨

functionAppScaleLimit 값 수정 → 특정 앱에 더 낮은 최대값 지정 가능

  • 무제한으로, 0또는 null로 설정하거나 1과 앱 최댓값 사이의 값으로 설정 할 수 있음

App Service Plan 에서 Azure Fuctions 크기 조정

  • VM 인스턴스를 더 많이 추가해서 수동으로 스케일 아웃할 수 있음
  • 자동 크기 조정 사용 가능 (Premium plan 탄력 크기 조정보다는 느림)
반응형
LIST

댓글