Azure Functions에 대한 Azure Well-Architected Framework 관점
Azure Functions는 인프라를 명시적으로 관리할 필요 없이 이벤트 기반 코드를 실행할 수 있는 서버리스 컴퓨팅 서비스입니다. FaaS(Functions as a Service) 제품으로 Azure Functions는 기본 인프라를 추상화하여 코드에 집중할 수 있도록 합니다. 이 서비스는 수요에 따라 자동으로 확장되며, 실행 중에 사용된 리소스에 대해서만 요금이 부과됩니다.
이 문서에서는 설계자로서 컴퓨팅 의사 결정 트리 검토하고 워크로드에 대한 컴퓨팅 솔루션으로 Azure Functions를 선택했다고 가정합니다. 여기에 제공된 지침은 Azure Well-Architected 프레임워크의원칙에 부합합니다.
중요하다
이 가이드를 사용하는 방법
각 섹션에는 Azure Functions와 관련된 특정 디자인 전략과 관련된 아키텍처 영역을 강조 표시하는 디자인 검사 목록 포함되어 있습니다.
권장 사항은 이러한 전략을 구현하는 데 도움이 되는 기술 기능을 제공할 있습니다. 이 목록은 완전하지는 않지만 Azure Functions를 사용하여 워크로드를 빌드하거나 최적화하는 데 도움이 되는 주요 권장 사항을 포함합니다.
주요 권장 사항을 보여주는 기본 아키텍처: 서버리스 함수 아키텍처 디자인
기술 범위
이 검토는 다음 Azure 리소스에 대한 상호 연결된 결정에 중점을 둡니다.
- 함수 앱
메모
이 서비스 가이드는 App Service(Web Apps) 서비스 가이드에 있는 지침을 기반으로 합니다. Azure Functions는 서버리스 컴퓨팅 서비스입니다. 함수는 워크로드에 대한 기본 컴퓨팅 인프라를 제공하는 App Service 계획에 배포됩니다. 여러 호스팅 계획 중에서 선택할 수 있습니다. 소비 계획은 완전히 관리되며 연결된 App Service 인스턴스에 대한 액세스를 지원하지 않지만 Dedicated 및 Premium은 App Service 인스턴스를 구성하고 관리하는 기능을 제공합니다. 전용 또는 프리미엄 호스팅 계획을 선택할 때 권장 사항 및 고려 사항은 App Service 서비스 가이드를 참조하세요.
신뢰도
안정성 기둥은 복원력을 구축하고 오류로부터 빠르게 복구할 수 있도록지속적인 기능을 보장합니다.
안정성 설계 원칙은 개별 구성 요소, 시스템 흐름, 그리고 전체 시스템에 적용되는 고수준의 설계 전략을 제공합니다.
디자인 검사 목록
안정성 디자인 원칙에 따라 디자인 전략을 시작합니다. Azure Functions의 특정 기능 및 구성을 고려하면서 비즈니스 요구 사항과 관련성을 평가합니다.
트리거이해: Azure Functions가 트리거되는 방식을 완전히 이해해야 합니다. 트리거에는 HTTP 요청, 타이머, 큐 등이 포함됩니다. 애플리케이션의 안정성 요구 사항과 일치하는 트리거를 선택합니다.
예를 들어 함수가 큐에서 메시지를 처리하는 경우 큐 자체가 복원력이 있고 오류가 발생할 경우 메시지를 다시 처리할 수 있는지 확인합니다.
재시도 및 지속성 패턴구현: 일시적인 오류에 대해 기본 제공 재시도 정책을 사용합니다. 더 복잡한 워크플로의 경우 여러 함수 실행에서 상태 관리 및 조정을 제공하는 Durable Functions를 사용하는 것이 좋습니다.
Durable Functions는 장기 실행 워크플로에서 안정성이 필요한 시나리오에 특히 유용합니다. 자동 재시도 및 지속성 작업 관리를 지원합니다.
적절한 예외 처리확인: 함수가 정상적으로 실패하도록 강력한 예외 처리를 구현합니다. 오류를 기록하고 중요한 오류에 대한 경고 메커니즘을 구현하는 것이 좋습니다.
확장성계획: Azure Functions는 수요에 따라 자동으로 확장됩니다. 애플리케이션이 부하 상태에서 성능을 테스트하여 급증을 처리하도록 설계되었는지 확인합니다.
Application Insights를 사용하여 성능을 모니터링하고 함수의 크기를 실시간으로 추적하는 것이 좋습니다.
idempotency를 위한 설계: 의도하지 않은 부작용 없이 함수를 안전하게 다시 시도할 수 있도록 보장해야 합니다. Idempotency는 외부 시스템과 상호 작용하거나 데이터를 수정하는 함수에 매우 중요합니다.
장기 실행 작업에 지속성 함수 사용: 오케스트레이션 또는 장기 실행 프로세스가 필요한 작업의 경우 Durable Functions를 사용하여 상태를 유지하고 여러 단계에서 안정성을 보장합니다.
솔루션상태 모니터링: Azure Functions 솔루션을 전체 워크로드 상태 모니터링 및 경고 시스템에 통합합니다.
권장 사항
추천 | 이익 |
---|---|
일시적인 오류에 대한 자동 재시도을 설정하세요. Azure Functions의 오류 처리 및 다시 시도에 대해 자세히 알아봅니다. | 실패한 실행을 자동으로 다시 시도하여 안정성을 향상시켜 데이터 손실 또는 중단 가능성을 줄입니다. |
복잡한 워크플로 및 장기 실행 프로세스를 오케스트레이션하는 데 Durable Functions 사용합니다. 지속성 함수대해 자세히 알아봅니다. | 기본 제공 상태 관리 및 자동 재시도를 통해 장기 실행 워크플로의 안정적인 실행을 제공합니다. |
Application Insights를 사용하여 모니터링과 중앙 집중식 로깅 을 구현하십시오. Application Insights설정하기. | 함수 실행 및 종속성에 대한 자세한 인사이트를 제공하여 모니터링 및 문제 해결을 향상시킵니다. |
함수 호스팅 계획, 트리거 유형 및 수요에 따라 자동으로 스케일 아웃합니다. 크기 조정에 대해 알아봅니다. | 애플리케이션이 수동 개입 없이 트래픽 증가를 처리하여 안정성과 성능을 향상시킬 수 있도록 합니다. |
안전
보안 핵심 요소는 데이터 및 서비스의 기밀성, 무결성 및 가용성을 보장하는 데 중점을 두고 있습니다.
보안 디자인 원칙은 인증, 권한 부여 및 데이터 보호에 대한 모범 사례를 포함하여 Azure Functions를 보호하기 위한 높은 수준의 전략을 제공할 있습니다.
디자인 검사 목록
보안대한디자인 검토 검사 목록을 사용하여 디자인 전략을 시작하고 잠재적인 취약성을 식별합니다. 필요에 따라 추가 보안 조치를 통합하여 전략을 확장합니다.
관리 ID사용: 자격 증명을 관리할 필요 없이 함수 앱이 다른 Azure 서비스에 안전하게 액세스할 수 있도록 관리 ID를 사용하도록 설정합니다. 관리 ID대해 알아봅니다.
Microsoft Entra ID사용하여 함수 앱 보호: Microsoft Entra ID 인증을 요구하도록 Azure Functions를 구성하여 함수에 대한 액세스를 제한합니다. Microsoft Entra 인증을 설정하십시오.
네트워크 보안 컨트롤적용: 호스팅 모델에 사용 가능한 옵션을 이해하여 Functions 네트워킹 구성을 보호합니다. 요구 사항을 충족하도록 네트워킹을 보호합니다.
권장 사항
추천 | 이익 |
---|---|
Azure 리소스에 대한 보안 액세스를 위해 관리 ID 사용하도록 설정합니다. 관리 ID 사용 설정 | 비밀을 저장하고 회전할 필요가 없도록 하여 자격 증명 관리를 간소화하고 보안을 강화합니다. |
비밀 관리 및 정기적인 순환을 위해 Azure Key Vault 사용합니다. Key Vault를 Azure Functions와 통합하십시오. | API 키 및 연결 문자열과 같은 중요한 정보를 안전하게 저장하고 관리 ID를 사용할 수 없는 경우 비밀 회전을 자동화하여 보호합니다. |
가상 네트워크 통합하고 프라이빗 엔드포인트사용합니다. | 내부 네트워크에 대한 액세스를 제한하고 공용 인터넷에 노출되지 않도록 하여 함수 앱을 보호합니다.
가상 네트워크 통합 및 프라이빗 엔드포인트는 소비 호스팅 계획에서 사용할 수 없습니다. |
비용 최적화
비용 최적화 핵심 요소는 필요한 성능 수준을 유지하면서 비용을 절감하는 방법을 식별하는 데 중점을 둡니다.
비용 최적화 디자인 원칙은 비용 및 성능의 균형을 맞추기 위한 전략을 제공하는 있으므로 Azure Functions 배포가 효율적이고 경제적이도록 합니다.
디자인 검사 목록
비용 최적화 대한디자인 검토 검사 목록을 사용하여 비용 최적화 전략을 시작하고 예산 요구 사항에 맞게 디자인을 조정합니다.
올바른 가격 책정 계획선택: Azure Functions는 소비 계획, 프리미엄 플랜 및 전용(App Service) 계획을 포함하여 여러 가격 책정 계획을 제공합니다. 워크로드 및 비용 고려 사항에 맞는 계획을 선택합니다. 가격 책정 계획을비교합니다.
소비 계획은 자주 실행되지 않는 예측할 수 없는 워크로드에 적합하며, 사용된 실행 시간 및 리소스에 대해서만 비용을 지불합니다. 앱이 유휴 상태이면 요금이 청구되지 않습니다.
실행 시간 최적화: 함수 코드를 최적화하여 실행 시간을 줄입니다. 외부 종속성의 사용을 최소화하고 코드 논리를 최적화하여 각 실행 기간을 줄입니다.
비용 모니터링 및 분석: Azure Cost Management를 사용하여 함수 앱 사용량 및 비용을 정기적으로 모니터링하고 경고를 설정하여 비용 변칙을 검색합니다. 비용 관리 및 최적화대해 알아봅니다.
권장 사항
추천 | 이익 |
---|---|
예측할 수 없는 트래픽이 있는 워크로드에 소비 계획 사용합니다. 소비 계획을 이해하세요. | 함수 실행 중에 사용되는 리소스에 대해서만 요금을 청구하여 유휴 리소스와 관련된 비용을 방지하여 비용을 절감합니다. |
워크로드가 예측 가능한 경우 Elastic Premium 요금제 또는 전용 App Service 계획 대한 용량을 예약합니다. | 안정적인 실행 패턴을 사용하여 예측 가능한 워크로드에 대한 할인된 가격 책정을 통해 비용을 절감합니다. |
정기적으로 비용 모니터링하고 변칙에 대한 경고를 설정합니다. 비용 알림을 설정하세요. | 비용 급증을 조기에 식별하여 사전 관리 및 최적화를 지원합니다. |
운영 우수성
운영 우수성은 Azure Functions 애플리케이션의 배포, 관찰 가능성 및 관리를 위한 프로세스 및 절차에 중점을 둡니다.
운영 우수성 디자인 원칙은 함수 앱이 효율적으로 배포, 관리 및 모니터링될 수 있도록 전략을 제공합니다.
디자인 검사 목록
디자인 원칙을 기반으로 디자인 전략을 시작하고, Azure Functions의 운영 품질을 유지하기 위한 운영 우수성 제공 전략을 수립하십시오.
배포 자동화: CI/CD 파이프라인을 사용하여 함수 앱을 배포 자동화합니다. 원활한 배포 워크플로를 위해 Azure DevOps 또는 GitHub Actions와 통합합니다.
상태 모니터링구현: Azure Monitor 및 Application Insights를 사용하여 함수의 상태 및 성능을 추적합니다. 중요한 메트릭에 대한 경고를 설정하고 실시간 인사이트를 위해 사용자 지정 대시보드를 사용합니다. Azure Function을 모니터링합니다.
솔루션 안전하게배포: Azure Functions에 사용할 수 배포 모델을 이해하고 안전한 배포 사례를 가장 잘 충족하는 모델을 채택합니다.
재해 복구계획: 지역 간 재해 복구 및 중요한 기능에 가용성 영역을 사용하여 재해 복구 전략을 구현합니다. DR를 위한 계획.
권장 사항
추천 | 이익 |
---|---|
Azure DevOps 또는 GitHub Actions를 사용하여 CI/CD 파이프라인을 사용하여 배포를 자동화합니다. CI/CD 설정 | 배포 일관성을 향상시키고, 수동 오류를 줄이며, 새로운 기능에 대한 출시 시간을 단축합니다. |
프로덕션 릴리스 전에 배포 슬롯 사용하여 변경 내용을 준비합니다. 슬롯사용하여 배포합니다. | 프로덕션에 오류가 발생할 위험을 줄이고 문제가 감지되면 안전한 롤백을 사용하도록 설정합니다. |
Application Insights 및 Azure Monitor를 통해 사용 가능한 메트릭을 활용하여 중앙 집중식 모니터링을 구현합니다. | 함수 성능에 대한 가시성을 향상시켜 문제를 신속하게 식별하고 해결하는 데 도움이 됩니다. |
성능 효율성
성능 효율성은 용량을 효과적으로 관리하여 부하 증가하더라도 최적의 사용자 환경을 보장합니다.
성능 효율성 디자인 원칙은 수요가 증가하는 경우에도 성능 요구 사항을 충족하는 함수 앱을 디자인하는 데 도움이 되는 전략을 제공합니다.
디자인 검사 목록
성능 효율성 및디자인 원칙을 기반으로 성능 전략을 시작하고, 함수 앱을 최적 크기와 성능으로 설계하십시오.
콜드 시작최적화: 미리 준비된 인스턴스와 함께 Premium Flex 계획을 사용하거나 Azure Functions 준비 트리거와 같은 전략으로 함수가 따뜻하게 유지되도록 하여 콜드 시작의 영향을 최소화합니다.
함수 코드최적화: 효율적인 코드를 작성하여 실행 시간과 리소스 소비를 줄입니다. 장기 실행 작업을 방지하고 외부 서비스 호출을 최적화합니다.
자동 크기 조정사용: Azure Functions의 자동 크기 조정 기능을 활용하여 수요에 따라 자동으로 스케일 아웃합니다. 크기 조정 규칙이 잘 정의되고 테스트되었는지 확인합니다.
성능 메트릭모니터링: Application Insights를 사용하여 실행 시간, CPU 및 메모리 사용량과 같은 주요 성능 메트릭을 모니터링합니다. 성능 저하에 대한 경고를 설정합니다. 성능모니터링합니다.
권장 사항
추천 | 이익 |
---|---|
사전 준비된 인스턴스 와 Elastic Premium 계획을 사용하여 콜드 스타트 지연 시간을 최소화합니다. 콜드 스타트를 이해합니다. | 콜드 시작과 관련된 대기 시간을 줄여 시간이 중요한 애플리케이션의 응답 시간을 개선합니다. |
함수 코드 최적화하여 실행 시간을 줄입니다. Azure Functions 에 대한 모범 사례. | 각 함수 실행에 필요한 시간과 리소스를 줄여 성능을 향상시킵니다. |
자동 크기 조정 사용하도록 설정하여 수요에 따라 용량을 자동으로 조정합니다. 자동 크기 조정을 구성하십시오. | 함수 앱이 수동 개입 없이 다양한 부하를 처리하여 압력을 받고 성능을 유지할 수 있는지 확인합니다. |
Azure 정책
Azure는 Azure Functions 및 해당 종속성에 대한 구성을 감사하고 적용하는 포괄적인 기본 제공 정책 집합을 제공합니다. Azure Policy를 사용하여 함수 앱이 보안, 비용 최적화 및 성능에 대한 조직 표준을 준수하도록 할 수 있습니다.
예를 들어 다음이 필요한 정책을 적용할 수 있습니다.
- 모든 함수 앱에 관리 ID를 활성화합니다.
- 네트워크 보안을 위해 프라이빗 엔드포인트만 사용하는 함수 앱입니다.
- 모든 함수 앱에 진단 로깅을 활성화해야 합니다.
Azure Policy 기본 제공 정의 검토하여 조직 요구 사항에 맞는 정책을 찾습니다.
Azure Advisor 권장 사항
Azure Advisor는 모범 사례를 따라 Azure 배포를 최적화하는 데 도움이 되는 개인 설정된 클라우드 컨설턴트입니다. Advisor 권장 사항은 Well-Architected Framework 핵심 요소와 일치합니다.
자세한 내용은 Azure Advisor권장 사항을 참조하세요.
다음 단계
이 문서에서 강조 표시된 권장 사항을 자세히 살펴보려면 다음 리소스를 고려하세요.
- 참조 아키텍처:
- 서버리스 웹 애플리케이션 아키텍처
- 서버리스 이벤트 처리