논리 최적화를 위한 권장 사항
이 Power Platform Well-Architected Performance Efficiency 체크리스트 권장 사항에 적용됩니다.
체육:06 | 성능이 뛰어난 로직을 사용하고, 플랫폼에 책임을 분산시키세요. 논리는 의도된 목적에만 사용하고, 필요할 때만 사용하세요. |
---|
이 가이드에서는 코드와 인프라 성능을 최적화하기 위한 권장 사항을 설명합니다. 코드와 인프라를 최적화하려면 구성 요소를 핵심 목적에만 사용하고 필요할 때만 사용해야 합니다. 코드와 인프라를 과도하게 사용하면 불필요한 리소스 소비, 병목 현상, 느린 응답 속도가 발생합니다. 이러한 비효율성을 보완하려면 동일한 작업을 완료하는 데 더 많은 리소스를 추가해야 합니다.
정의
용어 | 정의 |
---|---|
동시 실행 | 여러 작업이나 프로세스가 정확히 동시에 수행되지는 않지만 동시에 수행되는 경우. |
병행 | 여러 작업이나 프로세스가 동시에 수행되는 경우. |
주요 디자인 전략
논리와 인프라를 최적화하려면 성능 효율성을 개선하기 위해 논리와 지원 인프라를 미세하게 조정해야 합니다. 빠르게 작업을 실행하고 리소스를 낭비하지 않는 성능 좋은 로직이 필요합니다. 불필요한 복잡성을 피하기 위해 간소화된, 잘 설계된 인프라가 필요합니다. 워크로드는 플랫폼의 고유한 기능을 활용해야 합니다. 이러한 접근 방식은 논리와 인프라가 핵심 목적에 주로 사용되고 필요할 때만 사용되도록 보장하는 데 도움이 됩니다.
논리 성능 최적화
논리 성능을 최적화하려면 코드를 수정하여 리소스 사용량을 줄이고 런타임을 최소화하며 성능을 향상시킵니다. 앱이나 흐름의 효율성과 속도를 개선하기 위해 논리를 수정할 수 있습니다. 성능 문제를 무차별적인 힘으로 가리지 마세요. 무차별 대입 공격은 소스 주소를 지정하는 대신 추가 용량을 추가하는 것처럼 코드 성능을 보상하기 위해 컴퓨팅 리소스를 추가하는 것을 의미합니다. 최적화를 통해 성능 문제를 해결해야 합니다. 논리 성능을 최적화하면 시스템 리소스 활용도를 극대화하고, 응답 시간을 개선하고, 대기 시간을 줄이고, 사용자 경험을 향상하는 데 도움이 됩니다.
논리를 도구화하세요
로직 계측은 사용자 정의 이벤트 로깅을 추가하여 런타임 중에 데이터를 수집하고 로직 성능을 모니터링하는 관행을 말합니다. 논리 계측을 통해 개발자는 실행 시간 등의 주요 지표에 대한 정보를 수집할 수 있습니다. 논리를 계측함으로써 개발자는 논리 핫 패스에 대한 통찰력을 얻고, 성능 병목 현상을 파악하고, 더 나은 성능 효율성을 위해 논리를 최적화할 수 있습니다.
이상적으로는 소프트웨어 개발 라이프사이클 초기 단계에서 논리 분석을 수행하는 것이 좋습니다. 논리 문제는 일찍 발견할수록 수정 비용이 저렴해집니다. 가능한 한 많은 논리 분석을 자동화하고 싶습니다. 동적 및 정적 코드 분석 도구를 사용하여 수동 작업을 줄이세요. 예를 들어, Flow Checker 는 필터 기준을 지정하지 않은 쿼리 등 성능이 떨어질 것으로 예상되는 논리를 강조 표시할 수 있습니다. 하지만 이 테스트는 여전히 생산 시뮬레이션이라는 점을 명심하세요. 생산은 논리 최적화에 대한 가장 명확한 이해를 제공합니다.
트레이드오프: 논리 모니터링 도구는 비용을 증가시킬 가능성이 높습니다.
핫 패스 식별
논리를 계측하면 다양한 논리 경로에 대한 리소스 소비를 측정할 수 있습니다. 이러한 측정은 핫 패스를 식별하는 데 도움이 됩니다. 핫 경로는 성능과 리소스 사용에 상당한 영향을 미칩니다. 이러한 섹션은 높은 성능과 낮은 지연 시간을 요구하는 프로그램의 중요하거나 자주 실행되는 섹션입니다.
코드 핫 경로를 식별하려면 다음 단계를 고려하세요.
런타임 데이터 분석: 런타임 데이터를 수집하고 분석하여 경과 시간이 가장 많이 소요되는 로직 영역을 식별합니다. 자주 실행되거나 완료하는 데 시간이 오래 걸리는 논리 패턴이나 섹션을 찾아보세요.
성능 측정: 프로파일링 도구나 성능 테스트 프레임워크를 사용하여 다양한 논리 경로의 실행 시간과 리소스 소비를 측정합니다. 이 과정은 병목 현상과 개선 영역을 식별하는 데 도움이 됩니다. 예를 들어, Monitor 를 사용하면 Power Apps 앱의 이벤트와 수식이 어떻게 작동하는지 더 잘 이해하여 성능을 개선할 수 있습니다.
비즈니스 로직과 사용자 효과를 고려하세요: 애플리케이션의 기능이나 중요한 비즈니스 운영과의 관련성을 기준으로 다양한 로직 경로의 중요성을 평가하세요. 사용자에게 가치를 전달하거나 성능 요구 사항을 충족하는 데 어떤 논리 경로가 중요한지 결정합니다.
논리 최적화
논리를 최적화한다는 것은 더 적은 리소스로 작업을 수행하기 위해 논리의 구조와 디자인을 개선하는 것입니다. 개선된 로직으로 불필요한 작업이 줄어듭니다. 더 적은 리소스 소모로 더 빠른 실행이 가능합니다. 성능에 영향을 줄 수 있는 논리 경로 내의 불필요한 작업은 제거해야 합니다. 가장 큰 성능 효율성 향상을 보려면 핫 경로를 최적화하는 것을 우선시하세요.
논리를 최적화하려면 다음 전략을 고려하세요.
불필요한 함수 호출 제거 : 논리를 검토하여 원하는 기능에 필수적이지 않고 성능에 부정적인 영향을 미칠 수 있는 기능을 파악합니다. 예를 들어, 함수 호출이 코드 전반에서 완료된 유효성 검사를 수행하는 경우 불필요한 유효성 검사 함수 호출을 제거할 수 있습니다.
로깅 작업 최소화 : 로깅은 디버깅과 분석에 도움이 될 수 있지만, 과도한 로깅은 성능에 영향을 미칠 수 있습니다. 각 로깅 작업의 필요성을 평가하고 성능 분석에 중요하지 않은 불필요한 로깅 호출을 제거합니다. 디버깅을 돕는 동시에 프로덕션 성능 문제를 일으키지 않도록 시스템에서 로깅을 켜고 끌 수 있도록 허용하는 것이 좋습니다.
루프와 조건문 최적화 : 논리 속의 루프와 조건문을 분석하고 제거할 수 있는 불필요한 반복이나 조건을 파악합니다. 이러한 구조를 단순화하고 최적화하면 코드의 성능이 향상될 수 있습니다. 루프 내에서 함수 호출을 최소화하고, 중복된 계산을 제거하세요. 루프 밖으로 계산을 옮기는 것을 고려하세요.
불필요한 데이터 처리를 줄이세요 : 중복된 계산이나 변환 등 불필요한 데이터 처리 작업이 있는지 논리를 검토합니다. 논리의 효율성을 높이려면 불필요한 작업을 제거하세요. 예를 들어, 다음을 사용합니다. Dataverse 계산된 열, 롤업 필드 또는 Power Fx 열 코드에서 값을 계산하고 저장 작업을 통해 저장하는 대신.
데이터 구조를 최적화합니다. 데이터를 효율적으로 저장하고 검색하려면 적절한 데이터 구조와 필요한 데이터 열만 선택하세요. 특정 문제에 가장 적합한 데이터 구조를 선택하세요. 적절한 데이터 구조는 애플리케이션 성능을 향상시킵니다.
네트워크 요청 최소화: 논리에 네트워크 요청(예: 커넥터 작업 사용)이 포함된 경우 요청 수를 최소화하고 사용량을 최적화하세요. 가능하면 일괄 요청을 처리하고 불필요한 왕복을 피하면 성능이 향상됩니다.
데이터 구조 크기 줄이기: 데이터 요구 사항을 검토하고 불필요한 필드나 속성을 제거하세요. 적절한 데이터 유형을 선택하고 데이터를 효율적으로 패킹하여 메모리 사용을 최적화합니다.
비동기적으로 작업하세요: 로직에서 동기식 대신 비동기식으로 작업을 완료 수행할 수 있는지 평가하세요. 예를 들어, 인라인으로 작업을 수행하는 대신, Power Automate 흐름을 구현하여 작업을 비동기적으로 처리하는 것을 고려해보세요.
사용자 정의하기 전에 구성하세요. 가능하다면 표준 애플리케이션 구성요소를 사용하세요. 플러그인이나 자바스크립트와 같은 사용자 정의 기능은 성능에 영향을 미칠 수 있습니다.
통제를 최소화합니다. 양식에 필요한 필드만 표시하세요. 필드가 너무 많으면 사용자 인터페이스가 복잡해지고 성능에 영향을 미칠 수 있습니다. 명령 모음, 캔버스 앱 또는 사용자 지정 페이지에서 컨트롤 수를 최소화합니다. 갤러리를 중첩하거나 갤러리에 너무 많은 구성요소를 추가하지 마세요.
데이터 쿼리를 최적화합니다. 앱이나 흐름에 필요한 데이터만 로드하세요. 서버 측 뷰를 사용하여 데이터를 사전 필터링하여 쿼리와 관련된 데이터를 좁힙니다.
현재 작업 중인 제품에 대한 구체적인 성능 권장 사항을 검토하세요. Power Platform 이러한 권장 사항에 대해 논리를 평가하여 개선이 필요한 영역을 파악하세요.
트레이드오프: 논리와 핫 패스를 최적화하려면 전문 지식이 필요합니다. 논리적 비효율성을 파악하는 작업은 주관적이며, 다른 작업에서 인력을 영입해야 할 수도 있는 매우 숙련된 인력이 필요할 수도 있습니다.
동시성과 병렬성을 사용하세요
동시성과 병렬성을 사용한다는 것은 컴퓨팅 리소스를 효율적으로 사용하기 위해 여러 작업이나 프로세스를 동시에 또는 중복해서 실행하는 것을 의미합니다. 이러한 기술은 전반적인 처리량을 늘리고 작업 부하가 처리할 수 있는 작업 수도 늘려줍니다. 여러 작업을 동시 또는 병렬로 실행하면 애플리케이션의 런타임이 줄어들고 응답 시간이 늘어날 수 있습니다.
동시성과 병렬성은 컴퓨팅 리소스에 작업 부하를 효과적으로 분산시킵니다. 동시성이나 병렬성을 높일 때 다른 시스템에 미치는 영향을 고려하세요. 다른 시스템의 한계를 초과할 수 있기 때문입니다. 예를 들어, 한 번에 각 항목을 처리하는 Power Automate 흐름의 동시 루프는 루프 논리에 사용된 커넥터의 요청 제한을 초과할 수 있습니다.
병렬성을 사용하세요. 병렬성은 시스템이 여러 컴퓨팅 리소스에서 여러 작업이나 프로세스를 동시에 실행할 수 있는 능력입니다. 병렬처리는 작업 부하를 더 작은 작업으로 나누어 병렬로 실행합니다. 논리를 병렬로 실행하면 작업 부하가 여러 분기에 분산되므로 성능이 향상됩니다.
동시성을 사용하세요. 동시성은 시스템이 여러 작업이나 프로세스를 실행할 수 있는 능력을 말합니다. 동시성을 통해 작업 부하의 여러 부분이 독립적으로 진행될 수 있어 전반적인 성능이 향상될 수 있습니다.
동시 실행: 동시 실행은 동일한 논리를 동시에 실행할 수 있게 해줍니다. 동시 실행을 하나로 제한하면 논리를 직렬화하는 효과가 있어 한 번에 한 항목만 처리하게 됩니다. 작업 부하 항목의 동시 실행 양을 제어하면 처리 중에 리소스 사용량을 관리하는 데 도움이 됩니다. 예를 들어, Power Automate 흐름 루프는 Concurrent Control 속성을 사용하여 여러 작업을 병렬로 처리하도록 구성할 수 있습니다.
참고
동시성을 활성화하기 전에 이는 여러 작업이 동시에 수행된다는 것을 의미합니다. 루프의 일부로 데이터를 쓰는 경우 데이터 대상이 동시 요청을 처리할 수 있는지 확인하세요.
큐: 큐는 작업 부하를 요청하는 구성요소(생산자)와 처리하는 구성요소(소비자) 사이에 위치한 저장 버퍼입니다. 하나의 대기열에 여러 소비자가 있을 수 있습니다. 작업이 증가함에 따라 수요를 충족하기 위해 소비자의 규모를 조정해야 합니다. 생산자는 작업을 큐에 넣습니다. 대기열은 소비자가 용량을 확보할 때까지 작업을 저장합니다. 대기열은 수요가 급증하는 처리 서비스에 작업을 넘기는 가장 좋은 방법입니다. 자세한 내용은 큐 기반 로드 레벨링 패턴 과 스토리지 큐 및 Service Bus 큐를 참조하세요.
백그라운드 작업 최적화
많은 애플리케이션에는 사용자 인터페이스와 독립적으로 실행되는 백그라운드 작업이 필요합니다. 애플리케이션은 작업을 시작하고 사용자의 대화형 요청을 계속 처리할 수 있습니다. 백그라운드 작업의 예로는 일괄 작업, 프로세서 집약적 작업, 워크플로와 같은 장기 실행 프로세스 등이 있습니다. 시스템에 부하가 걸릴 때 백그라운드 작업이 지연되어 애플리케이션을 차단하거나 불일치가 발생해서는 안 됩니다. 백그라운드 작업 최적화에 대한 자세한 내용은 다음을 참조하세요. 백그라운드 작업 개발을 위한 권장 사항.
Power Platform 간편 사용
계측 코드 : 캔버스 앱을 만들 때는 앱 효율성을 높이기 위해 성능이 좋은 패턴을 사용해야 하며, 안티패턴은 피해야 합니다. 자세한 내용은 다음을 참조하세요. 성능 향상을 위한 개요 Power Apps. 사용 감시 장치 ~에 Power Apps 개발 과정에서 성능 문제를 진단하고 해결합니다.
참여도와 결과 측정 : 조종사를 구축할 때 추적 대화 참여 그리고 결과 조종사 성과 지표를 측정하고 개선 영역을 발견하는 데 필수적입니다.
코드 로직 최적화: 솔루션 검사기 기능을 사용하면 일련의 모범 사례 규칙에 대해 솔루션에 대한 풍부한 정적 분석 검사를 수행하고 문제가 있는 패턴을 빠르게 식별할 수 있습니다. Flow Checker를 사용하면 흐름 구현의 어느 영역이 성능 위험을 초래하는지에 대한 통찰력을 얻을 수 있습니다.
동시성과 병렬성 사용: Power Automate 클라우드 흐름은 루프와 트리거에서 동시성을 지원합니다. 동시성, 루핑 및 배치 해제 제한 이 적용되며 이는 성과 프로필에 따라 달라집니다. Power Apps Concurrent 함수를 사용하여 동시성을 지원합니다.
성능 최적화 Dataverse :개발자가 고도로 개인화되고 맞춤화된 경험을 구축할 수 있는 확장 가능한 프레임워크를 제공합니다. Microsoft Dataverse Dataverse을(를) 사용자 지정, 확장 또는 통합할 때는 확립된 지침과 모범 사례를 숙지하세요. Microsoft Dataverse 사용 시 모범 사례 및 지침을 참조하세요.
관련 정보
- 동시성, 루핑 및 배치 해제 제한 Power Automate
- Dynamics 365 성능 최적화를 위한 제품별 지침
- 고객 참여 앱을 위한 성능 튜닝 및 최적화
- 성능 생성 개요 Power Apps
- 모니터 개요
- 솔루션 검사기를 사용하여 구성 요소 성능, 안정성 및 안정성을 개선하세요
성능 효율성 체크리스트
전체 권장 사항 세트를 참조하세요.