다음을 통해 공유


Azure Functions에 대한 아키텍처 모범 사례

Azure Functions는 인프라를 직접 관리할 필요 없이 이벤트 기반 코드를 실행하는 데 사용할 수 있는 서버리스 컴퓨팅 서비스입니다. Azure Functions는 기본 인프라를 추상화하는 서비스 제공 함수입니다. 이 추상화에서는 코드에 집중할 수 있습니다. Azure Functions는 수요에 따라 자동으로 크기를 조정하며, 작업 중에 소비되는 리소스에 대해서만 요금이 부과됩니다.

이 문서에서는 설계자로서 컴퓨팅 의사 결정 트리 를 검토하고 워크로드에 대한 컴퓨팅 솔루션으로 Azure Functions를 선택했다고 가정합니다. 이 문서의 지침은 Well-Architected Framework 핵심 요소의 원칙에 매핑되는 아키텍처 권장 사항을 제공합니다.

기술 범위

이 검토는 다음 Azure 리소스에 대한 상호 연결된 결정에 중점을 둡니다.

  • 함수 앱

Note

이 서비스 가이드는 Azure App Service(Web Apps) 서비스 가이드의 지침을 기반으로 합니다. Azure Functions는 서버리스 컴퓨팅 서비스입니다. 함수는 워크로드에 대한 기본 컴퓨팅 인프라를 제공하는 App Service 계획에 배포됩니다. 여러 호스팅 계획 중에서 선택할 수 있습니다.

소비 계획은 완전히 관리되며 연결된 App Service 인스턴스에 대한 액세스를 지원하지 않습니다. 전용 및 프리미엄 호스팅 계획은 App Service 인스턴스를 구성하고 관리하는 기능을 제공합니다. 전용 또는 프리미엄 호스팅 계획을 선택할 때 권장 사항 및 고려 사항은 App Service 서비스 가이드를 참조하세요.

Reliability

안정성 핵심 요소의 목적은 충분한 복원력을 구축하고 오류로부터 빠르게 복구할 수 있는 능력을 개발하여 지속적인 운영을 제공하는 것입니다.

안정성 디자인 원칙은 개별 구성 요소, 시스템 흐름 및 시스템 전체에 적용되는 고급 디자인 전략을 제공합니다.

워크로드 디자인 검사 목록

안정성에 대한 디자인 검토 검사 목록을 기반으로 디자인 전략을 시작합니다. Azure Functions의 특정 기능 및 구성을 염두에 두고 비즈니스 요구 사항과 관련성을 확인합니다. 필요에 따라 더 많은 접근 방식을 포함하도록 전략을 확장합니다.

  • 트리거 이해: Azure Functions가 트리거되는 방법을 완전히 이해해야 합니다. 트리거에는 HTTP 요청, 타이머, 큐 등이 포함됩니다. 애플리케이션의 안정성 요구 사항과 일치하는 트리거를 선택합니다.

    예를 들어 함수가 큐에서 메시지를 처리하는 경우 큐 자체가 복원력이 있고 오류가 발생할 경우 메시지를 다시 처리할 수 있는지 확인합니다.

  • 재시도 및 지속성 패턴을 구현합니다. 일시적인 오류에 대한 기본 제공 재시도 정책을 사용합니다. 더 복잡한 워크플로의 경우 Azure Functions의 Durable Functions 확장을 사용하는 것이 좋습니다. 여러 함수 작업에서 상태 관리 및 조정을 제공합니다.

    Durable Functions는 장기 실행 워크플로에서 안정성이 필요한 시나리오에 특히 유용합니다. 자동 재시도 및 지속성 작업 관리를 지원합니다.

  • 적절한 예외 처리를 확인합니다. 함수가 정상적으로 실패하도록 강력한 예외 처리를 구현합니다. 오류를 기록하고 중요한 오류에 대한 경고 메커니즘을 구현하는 것이 좋습니다.

  • 확장성 계획: Azure Functions는 수요에 따라 자동으로 확장됩니다. 애플리케이션이 부하 상태에서 성능을 테스트하여 급증을 처리하도록 설계되었는지 확인합니다.

    Application Insights를 사용하여 성능을 모니터링하고 함수의 크기를 실시간으로 추적하는 것이 좋습니다.

  • 멱등성을 위한 디자인: 의도하지 않은 부작용을 일으키지 않고 함수를 안전하게 재시도할 수 있는지 확인합니다. Idempotency는 외부 시스템과 상호 작용하거나 데이터를 수정하는 함수에 매우 중요합니다.

  • 장기 실행 작업에 Durable Functions를 사용합니다. 오케스트레이션 또는 장기 실행 프로세스가 필요한 작업의 경우 Durable Functions를 사용하여 상태를 유지하고 여러 단계에서 안정성을 보장합니다.

  • 솔루션의 상태를 모니터링합니다 . Azure Functions 솔루션을 전체 워크로드 상태 모니터링 및 경고 시스템에 통합합니다.

구성 권장 사항

Recommendation Benefit
일시적인 오류 에 대한 자동 재시도 를 구성합니다. Azure Functions 오류 처리 및 다시 시도에 대해 자세히 알아봅니다. 실패한 실행을 자동으로 다시 시도하여 안정성을 향상시켜 데이터 손실 또는 중단 가능성을 줄입니다.
복잡한 워크플로 및 장기 실행 프로세스를 오케스트레이션하는 데 Durable Functions 를 사용합니다. 지속성 함수대해 자세히 알아봅니다. 기본 제공 상태 관리 및 자동 재시도를 통해 장기 실행 워크플로의 안정적인 작업을 제공합니다.
Application Insights 를 사용하여 모니터링중앙 집중식 로깅 을 구현합니다. Application Insights설정하기. 함수 작업 및 종속성에 대한 자세한 인사이트를 제공하여 모니터링 및 문제 해결을 향상시킵니다.
Functions 호스팅 계획, 트리거 유형 및 수요에 따라 자동으로 스케일 아웃합니다. 크기 조정에 대해 자세히 알아봅니다. 애플리케이션이 수동 개입 없이 트래픽 증가를 처리하여 안정성과 성능을 향상시킬 수 있도록 합니다.

Security

보안 핵심 요소의 목적은 워크로드에 기밀성, 무결성 및 가용성 보장을 제공하는 것입니다.

보안 디자인 원칙은 Azure Functions를 중심으로 기술 디자인에 접근 방식을 적용하여 이러한 목표를 달성하기 위한 높은 수준의 디자인 전략을 제공합니다.

워크로드 디자인 검사 목록

보안에 대한 디자인 검토 검사 목록을 기반으로 디자인 전략을 시작하고 취약성 및 컨트롤을 식별하여 보안 상태를 개선합니다. 필요에 따라 더 많은 접근 방식을 포함하도록 전략을 확장합니다.

  • 관리 ID 사용: 자격 증명을 관리할 필요 없이 함수 앱에서 다른 Azure 서비스에 안전하게 액세스할 수 있도록 관리 ID 를 사용하도록 설정합니다.

  • Microsoft Entra ID를 사용하여 함수 앱 보호:Microsoft Entra ID 인증을 요구하도록 Azure Functions를 구성하여 함수에 대한 액세스를 제한합니다.

  • 네트워크 보안 컨트롤 적용:Azure Functions 네트워킹 구성을 보호하는 데 도움이 되는 호스팅 모델에 사용할 수 있는 Azure Functions 네트워킹 옵션을 이해합니다. 요구 사항을 충족하도록 네트워킹을 보호합니다.

구성 권장 사항

Recommendation Benefit
Azure 리소스에 대한 보안 액세스를 위해 관리 ID를 사용하도록 설정합니다. 관리 ID 사용 설정 비밀을 저장하고 회전할 필요가 없도록 하여 자격 증명 관리를 간소화합니다. 이 방법은 보안을 강화합니다.
비밀 관리 및 정기적인 순환을 위해 Azure Key Vault 사용합니다. Key Vault를 Azure Functions와 통합하십시오. API 키 및 연결 문자열과 같은 중요한 정보를 안전하게 저장하고 관리 ID를 사용할 수 없을 때 비밀 회전을 자동화하여 보호할 수 있습니다.
가상 네트워크 통합하고 프라이빗 엔드포인트사용합니다. 내부 네트워크에 대한 액세스를 제한하고 공용 인터넷에 노출되지 않도록 하여 함수 앱을 보호합니다.

가상 네트워크 통합 및 프라이빗 엔드포인트는 소비 호스팅 계획에서 사용할 수 없습니다.

비용 최적화

비용 최적화는 비즈니스 요구 사항을 충족 하면서 지출 패턴을 감지하고, 중요한 영역에 대한 투자의 우선 순위를 지정하고, 조직의 예산을 충족하도록 다른 영역에서 최적화하는 데 중점을 둡니다.

비용 최적화 디자인 원칙은 Azure Functions 및 해당 환경과 관련된 기술 설계에서 필요에 따라 이러한 목표를 달성하고 절충하기 위한 높은 수준의 디자인 전략을 제공합니다.

워크로드 디자인 검사 목록

투자 비용 최적화 을 위한 디자인 검토 체크리스트를 기반으로 디자인 전략을 시작하세요. 워크로드가 워크로드에 할당된 예산에 맞게 조정되도록 디자인을 미세 조정합니다. 디자인은 적절한 Azure 기능을 사용하고, 투자를 모니터링하고, 시간이 지남에 따라 최적화할 기회를 찾아야 합니다.

  • 올바른 가격 책정 계획을 선택합니다 . Azure Functions에는 소비 계획, 프리미엄 플랜 및 전용(App Service) 계획을 비롯한 여러 가격 책정 계획이 있습니다. 워크로드 및 비용 고려 사항에 맞는 가격 책정 계획을 선택합니다.

    소비 계획은 사용 중인 작업 시간 및 리소스에 대해서만 비용을 지불하기 때문에 자주 작업하지 않는 예측할 수 없는 워크로드에 적합합니다. 앱이 유휴 상태이면 요금이 청구되지 않습니다.

  • 작업 시간 최적화: 함수 코드를 최적화하여 작업 시간을 줄입니다. 외부 종속성의 사용을 최소화하고 코드 논리를 최적화하여 각 작업의 기간을 줄입니다.

  • 비용 모니터링 및 분석:Microsoft Cost Management 를 사용하여 함수 앱 사용량 및 비용을 정기적으로 모니터링하고 비용 변칙을 검색하도록 경고를 설정합니다.

구성 권장 사항

Recommendation Benefit
예측할 수 없는 트래픽이 있는 워크로드에 소비 계획을 사용합니다. 소비 계획을 이해하세요. 함수가 수행될 때 사용되는 리소스에 대해서만 요금을 청구하여 비용을 줄여 유휴 리소스와 관련된 비용을 방지합니다.
워크로드가 예측 가능한 경우 Elastic Premium 계획 또는 전용 App Service 계획에 대한 용량을 예약합니다. 안정적인 사용 패턴을 사용하여 예측 가능한 워크로드에 대한 할인된 가격 책정을 통해 비용을 절감합니다.
정기적으로 비용을 모니터링하고 변칙에 대한 경고를 설정합니다. 경고를 사용하여 비용을 모니터링합니다. 비용 급증을 조기에 식별하여 사전 관리 및 최적화를 지원합니다.

운영 효율성

운영 우수성은 주로 개발 관행, 관찰성 및 릴리스 관리를 위한 절차에 중점을 둡니다.

운영 우수성 디자인 원칙은 워크로드의 운영 요구 사항에 대한 이러한 목표를 달성하기 위한 높은 수준의 디자인 전략을 제공합니다.

워크로드 디자인 검사 목록

Azure Functions와 관련된 준수성, 테스트 및 배포에 대한 프로세스를 정의하기 위한 운영 우수성에 대한 디자인 검토 검사 목록을 기반으로 디자인 전략을 시작합니다.

  • 배포 자동화: CI/CD(지속적인 통합 및 지속적인 업데이트) 파이프라인을 사용하여 함수 앱의 배포를 자동화합니다. 원활한 배포 워크플로를 위해 Azure DevOps 또는 GitHub Actions와 통합합니다.

  • 상태 모니터링 구현: Azure Monitor 및 Application Insights를 사용하여 함수의 상태 및 성능을 추적합니다. 중요한 메트릭에 대한 경고를 설정하고 실시간 인사이트를 위해 사용자 지정 대시보드를 사용합니다. 자세한 내용은 Azure Functions 모니터링을 참조하세요.

  • 솔루션을 안전하게 배포합니다. Azure Functions에 사용할 수 있는 배포 모델을 이해하고 안전한 배포 사례를 가장 잘 충족하는 모델을 채택합니다.

  • DR(재해 복구 계획): 중요한 함수에 지역 간 DR 및 가용성 영역을 사용하여 DR 전략을 구현합니다.

구성 권장 사항

Recommendation Benefit
Azure DevOps 또는 GitHub Actions CI/CD 파이프라인을 활용하여 배포를 자동화합니다. CI/CD를 설정합니다. 배포 일관성을 향상시키고, 수동 오류를 줄이며, 새로운 기능에 대한 출시 시간을 단축합니다.
운영 릴리스 전에 변경 사항을 스테이징하기 위해 배포 슬롯을 사용합니다. 프로덕션에 오류가 발생할 위험을 줄이고 문제가 감지되면 안전한 롤백을 사용하도록 설정합니다.
사용 가능한 메트릭을 사용하여 Application Insights 및 Azure Monitor를 사용하여 중앙 집중식 모니터링을 구현합니다. 함수 성능에 대한 가시성을 향상시켜 문제를 신속하게 식별하고 해결하는 데 도움이 됩니다.

성능 효율성

성능 효율성은 용량 을 관리하여 부하가 증가하는 경우에도 사용자 환경을 유지하는 것입니다. 이 전략에는 리소스 크기 조정, 잠재적인 병목 현상 식별 및 최적화, 최고 성능 최적화가 포함됩니다.

성능 효율성 디자인 원칙은 예상된 사용량에 대해 이러한 용량 목표를 달성하기 위한 높은 수준의 디자인 전략을 제공합니다.

워크로드 디자인 검사 목록

성능 효율성 대한디자인 검토 검사 목록을 기반으로 디자인 전략을 시작합니다. Azure Functions의 주요 성능 지표를 기반으로 하는 기준을 정의합니다.

  • 콜드 시작 최적화: 미리 생성된 인스턴스를 제공하는 Premium Flex 계획을 사용하여 콜드 시작의 영향을 최소화하거나 Azure Functions 준비 트리거와 같은 전략을 사용하여 함수가 따뜻하게 유지되도록 합니다.

  • 함수 코드 최적화: 효율적인 코드를 작성하여 작업 시간과 리소스 사용량을 줄입니다. 장기 실행 작업을 방지하고 외부 서비스 호출을 최적화합니다.

  • 자동 크기 조정 사용: Azure Functions의 자동 크기 조정 기능을 활용하여 수요에 따라 자동으로 스케일 아웃합니다. 크기 조정 규칙이 잘 정의되고 테스트되었는지 확인합니다.

  • 성능 메트릭 모니터링: Application Insights를 사용하여 작업 시간, CPU 및 메모리 사용량과 같은 주요 성능 메트릭을 모니터링합니다. 성능 저하에 대한 경고를 설정합니다.

구성 권장 사항

Recommendation Benefit
미리 준비된 인스턴스와 함께 Elastic Premium 계획을 사용하여 콜드 시작 대기 시간을 최소화합니다. 콜드 스타트 이해하기. 콜드 시작과 관련된 대기 시간을 줄여 시간이 중요한 애플리케이션의 응답 시간을 향상시킵니다.
함수 코드를 최적화 하여 작업 시간을 줄입니다. Azure Functions에 대한 모범 사례를 이해합니다. 각 함수를 실행하는 데 필요한 시간과 리소스를 줄여 성능을 향상시킵니다.
자동 크기 조정을 사용하도록 설정 하여 수요에 따라 용량을 자동으로 조정합니다. 자동 크기 조정을 구성합니다. 함수 앱이 수동 개입 없이 다양한 부하를 처리할 수 있는지 확인합니다. 이 방법은 압력을 받고 성능을 유지하는 데 도움이 됩니다.

Azure 정책

Azure는 Azure Functions 및 해당 종속성과 관련된 광범위한 기본 제공 정책 집합을 제공합니다. Azure 정책 집합은 이전 권장 사항 중 일부를 감사할 수 있습니다. 예를 들어 다음을 확인할 수 있습니다.

  • 모든 함수 앱에는 관리 ID가 활성화되어 있습니다.
  • 함수 앱은 네트워크 보안을 위해 프라이빗 엔드포인트만 사용합니다.
  • 진단 로깅은 모든 함수 앱에 대해 사용하도록 설정됩니다.

포괄적인 거버넌스를 위해 Azure Policy 기본 제공 정의 및 네트워크 계층의 보안에 영향을 줄 수 있는 기타 정책을 검토합니다.

Azure Advisor 권장 사항

Azure Advisor는 모범 사례를 따라 Azure 배포를 최적화하는 데 도움이 되는 개인 설정된 클라우드 컨설턴트입니다.

자세한 내용은 Azure Advisor를 참조하세요.

예제 아키텍처

주요 권장 사항을 보여 주는 기본 아키텍처: 웹 애플리케이션 아키텍처 디자인

다음 단계

이 문서에서 강조 표시된 권장 사항을 자세히 살펴보려면 다음 리소스를 고려하세요.