SQL Server는 기업 데이터를 저장하는 데 널리 사용되는 솔루션입니다. 이 문서에서는 SQL Server를 사용하여 엔터프라이즈급 캔버스 앱을 빌드하고 게시하는 데 도움이 되는 모범 사례를 제공합니다.
팁
이 문서에서는 캔버스 앱으로 SQL Server를 사용하는 방법에 대한 예제 시나리오와 시각적 표현을 제공합니다. 이 솔루션은 다양한 시나리오와 산업에 사용할 수 있는 일반화된 예시 아키텍처입니다. SQL Server 및 Power Apps는 다양한 레거시 인증 방식을 지원합니다. 이 문서는 모범 사례에 국한되어 있습니다.
아키텍처 다이어그램
Workflow
이전의 많은 SQL Server의 Power Apps 구현에서는 게이트웨이를 사용했지만, 이 예제 아키텍처는 SQL Server의 가상 사설망(VNET) 아키텍처를 강조합니다. SQL Server 인스턴스는 Azure SQL이거나 Azure Arc를 통해 클라우드에 노출된 온프레미스 SQL 데이터베이스일 수 있습니다. 두 경우 모두 통신은 비공개이며 안전하게 이루어집니다.
- Contoso VNET은 테넌트에서 만드는 가상 사설망입니다.
- Azure 리소스/Contoso 리소스는 테넌트 내의 가상 네트워크에서 사용할 수 있는 리소스입니다. 이러한 리소스에는 Azure Arc를 통해 제공되는 Azure SQL 데이터베이스나 온-프레미스 SQL Server 데이터베이스와 같은 서비스가 포함됩니다.
- 위임된 서브넷은 가상 네트워크 내에 위치하며 SQL 커넥터나 Dataverse 플러그인과 같은 서비스가 리소스와 함께 작동할 수 있는 Power Platform용 컨테이너를 제공합니다.
구성 요소
이 섹션에서는 이 아키텍처에서 캔버스 앱과 SQL Server의 통합을 지원하는 구성 요소를 설명합니다.
캔버스 앱 및 SQL 테이블
SQL Server 테이블과 뷰는 Power Apps에 테이블 형식 데이터 소스로 나타납니다. Power Fx 표현식을 사용하여 테이블 형식 데이터 소스를 테이블이나 갤러리 Items 속성에 바인딩할 수 있습니다. 테이블 형식 데이터 소스의 경우 Power Fx 표현식은 OData 표현식으로 변환되고, 그 후 OData 표현식은 SQL 표현식으로 변환됩니다. 하지만 Power Fx OData는 SQL 표현식의 모든 기능을 완벽하게 표현하지는 못합니다.
팁
기본적이고 간단한 쿼리에는 Power Fx를 사용하고, 더 복잡한 SQL 표현식에는 저장 프로시저를 사용합니다.
캔버스 앱 및 SQL 저장 프로시저
SQL Server 저장 프로시저는 Power Apps에 작업 데이터 소스로 나타납니다. 일반적으로 작업 데이터 원본은 잠재적인 부작용 때문에 테이블이나 갤러리에 바인딩할 수 없습니다. 하지만 select stored procedure as Safe for Tables and Galleries를 표시하여 표나 갤러리와 함께 사용할 수 있습니다. 이 방법은 저장 프로시저가 반환하는 모든 데이터를 검색하지만, 너무 많은 데이터를 검색하면 클라이언트의 메모리가 초과될 수 있으므로 주의해야 합니다. 검색되는 데이터 양을 제어하려면 일반적으로 이러한 유형의 저장 프로시저에 있는 매개변수 페이징 인수를 사용합니다.
또한 결과를 Power Fx 변수로 설정하고 이 변수를 Items 속성에 사용하여 테이블이나 갤러리를 채웁니다. 생성, 업데이트, 삭제(CUD) 작업 시 Power Fx 변수를 새로 고치는 것을 잊지 마십시오. 임시 테이블을 사용하는 것과 같은 보다 복잡한 저장 프로시저는 dynamic schema를 반환할 수 있습니다. 예상 결과를 Power Fx User defined type로 설정하여 이러한 저장 프로시저의 결과를 사용할 수 있습니다.
SQL Sever 커넥터
Power Apps 애플리케이션은 SQL Server 커넥터를 사용하여 SQL Server의 데이터에 액세스합니다. 사용 가능한 SQL 인증 유형은 다양하지만, Microsoft Entra ID와 공유 가능한 SPN(서비스 주체 이름)이 더 나은 선택 두 가지입니다.
Microsoft Entra ID를 사용하려면 먼저 SQL Server 데이터베이스를 구성하여 Microsoft Entra ID를 통해 보안을 제공해야 합니다. 공유 가능 SPN은 관리자가 활성화한 액세스 방법이며 모든 사용자가 동일한 데이터베이스 액세스 권한을 가지므로 신중하게 부여해야 합니다. 애플리케이션에서 사용되는 테이블과 작업(즉, Get, Post, Put, Delete)에 대한 액세스를 제한하는 안전한 암묵적 연결을 통해 보호됩니다.
VNET(가상 사설망)
SQL Server에 대한 호출을 라우팅하는 방법에는 여러 가지가 있습니다. 가상 네트워크는 모든 엔드포인트를 비공개로 만드는 Azure 클라우드 솔루션입니다. 구현하려면 테넌트 내에 가상 네트워크를 프로비저닝하고, 엔터프라이즈 정책을 설정하고, 이를 지원하도록 Power Platform 환경을 구성합니다. 이 설정을 사용하면 SQL 트래픽이 네트워크를 통해 공개적으로 노출되지 않습니다.
ALM(응용 프로그램 수명 주기 관리)
Power Platform 개발, 테스트 및 프로덕션 환경 간에 SQL을 통해 Power Apps 앱의 원활한 전환을 지원합니다. 연결 참조는 환경 간 연결 문자열 변경을 지원하며, 이는 기본 SQL 인증에 중요합니다. 환경 변수는 환경 간에 서버와 데이터베이스를 변경하여 Microsoft Entra ID 시나리오를 지원합니다.
사용 사례
Power Apps는 조직이 맞춤형 사용자 경험을 구축할 수 있는 유연하고 직관적인 방법을 제공합니다.
- 새로운 앱과 저장소를 구축하는 경우 Dataverse 사용을 고려하십시오. 이 기능은 엔터프라이즈급 앱을 보다 쉽게 만들 수 있도록 설계되었습니다.
- 이동할 수 없는 SQL Server에 데이터가 있거나 조직에 SQL Server가 필요한 경우 SQL Server 대신 Power Apps SQL Server를 사용하는 것을 고려하십시오.
- 데이터를 이동할 수 없는 경우, Power Apps SQL Server를 사용합니다. 기존 앱은 여전히 해당 데이터에 의존하므로 앱을 클라우드로 옮겨 현대화해야 합니다.
고려 사항
이러한 고려 사항은 워크로드의 품질을 개선하는 일련의 기본 원칙인 Power Platform Well-Architected의 핵심 요소를 구현합니다. Microsoft Power Platform Well-Architected에서 자세히 알아보십시오.
안정성
불필요한 복잡성을 피하도록 작업 부하를 설계: Power Apps 서버에 위임할 수 있는 간단한 쿼리에 적합합니다. 복잡한 작업은 뷰와 저장 프로시저에 위임합니다. 그런 다음, 동기 작업에 해당 저장 프로시저를 직접 사용합니다. 장기 실행 저장 프로시저에 대한 호출을 포함한 모든 비동기 작업에 Power Automate를 사용합니다.
보안
보안된 암시적 연결 사용: 모든 공유 연결에 보안된 암시적 연결을 사용합니다. 필요에 따라 이전 애플리케이션을 안전한 암묵적 연결을 사용하도록 변환합니다. 안전한 암묵적 연결을 사용하면 커넥터가 Power Apps 클라우드 서비스 내부에 머무르며 클라이언트에 상주하지 않습니다. 앱은 Power Apps 클라우드 서비스에 있는 프록시 커넥터에만 연결됩니다. 앱과 프록시 커넥터는 서로를 알고 있지만, 앱은 커넥터에 대해 알지 못합니다. 프록시 커넥터에는 앱의 쿼리에 대한 쿼리 유형을 제한하는 정책이 있습니다.
의도적인 세분화 및 경계 생성: 애플리케이션 수명 주기 단계에 대해 별도의 Power Platform 환경을 사용하고 세분화 정책을 지원하기 위해 각 단계에 적합한 사용자만 액세스할 수 있도록 보장합니다.
운영 효율성
안전한 배포 관행 채택: 파이프라인과 같은 자동화된 배포 프로세스를 사용하여 Power Apps 애플리케이션의 모든 변경 사항을 배포하는 것을 표준화합니다. 변경 사항을 테스트한 후에만 애플리케이션을 프로덕션으로 승격합니다.
성능 효율성
성능 요구 사항을 충족하도록 설계: SQL Server 테이블, 뷰 및 저장 프로시저 디자인이 적절한지 확인하기 위해 솔루션 성능과 데이터 볼륨 요구 사항을 평가합니다. 평가에는 데이터에 액세스하는 방법과 Power Apps에서 SQL Server에 작업을 위임하는 방법을 포함합니다. SQL Server에서 제공하는 위임 지원으로 인해 데이터를 검색하고 필터링할 때 제한 사항이 있다는 점을 알아두십시오. 위임 이해에서 캔버스 앱에 대해 문서화된 제한 사항을 검토하십시오. 특히 앱에 적합한 데이터 소스나 백엔드를 선택할 때 주의하십시오.
최적화 논리: 캔버스 애플리케이션은 Power Fx 작업을 실행하는 데 사용합니다. 각 Power Fx 작업은 독립적이며 원자적 트랜잭션으로 처리되지 않습니다. 예를 들어, 애플리케이션에서 판매 주문 세부 정보 행을 생성했지만 판매 주문 헤더 레코드를 생성하지 않은 경우 판매 주문 세부 정보 행은 그대로 유지됩니다. Power Fx에서 이러한 필수 절차 단계를 미루지 마십시오. 트랜잭션 지원이 있는 SQL Server 저장 프로시저를 사용합니다.
경험 최적화
효율성을 위한 디자인: 사용자가 여러 개별 애플리케이션과 상호 작용하지 않고도 단일 Power Apps 애플리케이션에서 SQL Server 테이블과 함께 다른 데이터 소스에 액세스할 수 있도록 하는 애플리케이션은 효율성을 개선하고 더 나은 사용자 지정 시각적 환경을 제공합니다. 애플리케이션을 구축하기 위해 애플리케이션을 구축하지 마십시오. 애플리케이션은 모델 기반 Power Apps 경험을 사용하는 것보다 사용자에게 효율성을 제공하거나 다른 아키텍처 이점을 제공해야 합니다.
관련 리소스
Power Apps:
커넥터:
ALM(응용 프로그램 수명 주기 관리):