M365Con 2027 – 무료 온라인 컨퍼런스 · 11–22 Jan 2027 · 120 sessions→ m365con.net

블로그 · Mirko Peters

깔끔한 데이터 가져오기: Dataverse의 대체 키(Alternate Key) 활용법

By ·

팟캐스트와 동반 블로그에 다시 오신 것을 환영합니다! Power Platform 환경에서 수천 건의 중복 레코드, 누락된 상위 참조, 그리고 정기 데이터 마이그레이션 직후 발생하는 까다로운 조회 오류 때문에 애를 먹어 본 적이 있다면, 여러분만 그런 것이 아닙니다. 많은 엔터프라이즈 구현이 Microsoft Dataverse를 아무렇게나 데이터를 넣어도 되는 고급 데이터베이스 테이블처럼 여기는 단순한 스프레드시트식 사고방식에서 출발합니다. 그러다 운영 데이터 규모가 커지는 순간 전체 아키텍처가 무너지는 것을 보게 됩니다.

Automatically translated with AI from the original post. Read the English original

▶ BLOGClean Data Imports: ThePower of Alternate Keys…M365.FM
Titelbild: Clean Data Imports: The Power of Alternate Keys in Dataverse

팟캐스트와 동반 블로그에 다시 오신 것을 환영합니다! Power Platform 환경에서 수천 건의 중복 레코드, 누락된 상위 참조, 그리고 정기 데이터 마이그레이션 직후 발생하는 까다로운 조회 오류 때문에 애를 먹어 본 적이 있다면, 여러분만 그런 것이 아닙니다. 많은 엔터프라이즈 구현이 Microsoft Dataverse를 아무렇게나 데이터를 넣어도 되는 고급 데이터베이스 테이블처럼 여기는 단순한 스프레드시트식 사고방식에서 출발합니다. 그러다 운영 데이터 규모가 커지는 순간 전체 아키텍처가 무너지는 것을 보게 됩니다.

이번 글에서는 논의했던 내용을 더 깊이 다룹니다. "내 폼에서는 잘 동작합니다" 수준의 취약한 프로토타입에서 출발해, 10만 건 이상의 레코드에서도 안정적으로 동작하는 견고한 엔터프라이즈급 아키텍처로 나아가는 방법을 살펴보겠습니다. 고유한 대체 키, 효율적인 업serts 전략, 그리고 일급 비즈니스 로직을 활용해 Dataverse 환경을 깨끗하게 유지하는 방법을 자세히 알아보겠습니다.

단순한 구조가 무너지는 이유

새로운 비즈니스 애플리케이션을 시작할 때는 빠르게 움직이고 과감하게 시도하고 싶은 유혹이 늘 따릅니다. 하지만 안타깝게도 무언가를 깨뜨리는 것은 곧 데이터 무결성을 깨뜨리는 것으로 이어지기 쉽습니다. 스프레드시트식 사고방식은 곧바로 임시방편 필드, 관리되지 않는 캔버스 앱 수식, 그리고 시스템 곳곳에 숨은 종속성을 만드는 흩어진 Power Automate 흐름으로 이어집니다. 비즈니스 로직이 핵심 데이터 모델 바깥에 존재하면, 일관성 없는 트리거와 사용자 작업이 유효성 검사 규칙을 완전히 우회하는 복잡한 예외 상황을 피할 수 없게 됩니다.

게다가 적절한 데이터 계보(lineage)가 없으면 대시보드는 결국 실제와 어긋나게 됩니다. 어떤 원본 시스템이나 자동화 흐름이 해당 핵심 수치를 마지막으로 변경했는지 아무도 모르기 때문에 지표를 신뢰할 수 없게 됩니다. 무엇보다 시스템이 생성한 GUID에만 의존하고 의미 있는 비즈니스 식별자를 사용하지 않는 데이터 가져오기는 언제 터질지 모르는 시한폭탄입니다. 자연 키가 없으면 모든 데이터 로드가 중복 레코드, 고아 레코드, 끊어진 조회를 만들어 번거로운 수작업 정리를 요구할 위험이 있습니다.

아키텍처 한눈에 보기

확장 가능한 솔루션을 만들려면 체계적인 프레임워크가 필요합니다. 아키텍처를 다섯 개의 뚜렷한 계층으로 구성된 파이프라인이라고 생각해 보십시오.

  1. 모델: 코드 한 줄을 작성하기 전에 핵심 엔터티를 정규화하고 1:N, N:N, 계층 구조 테이블을 명확하게 설계하십시오.
  2. 로직: 절대 우회되어서는 안 되는 불변 규칙에는 비즈니스 규칙, 동기 플러그인, 실시간 워크플로와 같은 서버 측 실행을 우선하십시오. 클라우드 흐름은 오케스트레이션과 알림에 사용하십시오.
  3. 자동화: 관계가 확실한 곳에서는 계산 필드와 롤업 필드를 활용하여, 진짜 원본(source of truth)을 불필요하게 중복 저장하지 않도록 하십시오.
  4. 통합: 외부 경계를 넘어 안전하게 upsert하고 엄격한 고유성을 보장하려면 항상 대체 키(의미 있는 비즈니스 ID)를 사용하십시오.
  5. 관찰 가능성: 규칙 적중, 흐름 결정, 롤업 새로 고침을 기록하십시오. 시스템 상태를 사전에 모니터링할 수 있도록 전용 사용량 및 SLA 대시보드를 구축하십시오.

관계 설계 패턴(바로 적용 가능)

데이터 모델을 올바르게 설계하려면 처음부터 적절한 관계 패턴을 선택해야 합니다. 검증된 다음 패턴들을 구현하시기 바랍니다.

  • 계층 구조: 지역(1) → 매장(N) → 거래(N). 롤업은 자연스럽게 상위로 전달되며, 예를 들어 Region.Sum(Store.Sum(Transaction.Amount))처럼 계산할 수 있습니다.
  • 소유권 및 보안: 비즈니스 단위(1) → 계정(N). 세분화된 공유와 보안 역할 범위 지정을 위해 팀 소유권 모델과 함께 사용하십시오.
  • 참조: 제품(1) → 가격 목록 항목(N), 그리고 통화(1) → 모든 통화 필드.
  • 이벤트 소싱: 주문(1) → 주문 줄(N)을 구성하고, 견고한 감사 추적을 유지하기 위해 주문 상태 기록 테이블을 함께 사용하십시오.
  • 다대다: 특정 역할이나 상호작용 날짜처럼 관계 자체에 속성을 저장해야 할 때는 사용자 지정 연결 테이블을 통해 연락처와 캠페인을 연결하십시오.

가드레일: 롤업 계산에서 순환 종속성은 항상 피하십시오. 조회는 단일 목적으로 유지해 하나의 명확한 비즈니스 의미만 나타내도록 하고, 비즈니스 규칙상 자식 레코드가 부모 없이 존재할 수 없다면 필수 관계를 강제하십시오.

일급 비즈니스 로직(적절한 위치에 두기)

비즈니스 로직을 어디에 배치하느냐에 따라 애플리케이션의 전반적인 유지 관리성이 결정됩니다. 잘못된 데이터가 시스템에 들어오는 것을 반드시 막아야 한다면 커스텀 플러그인이나 실시간 워크플로와 같은 동기 서버 측 로직에 의존하십시오. 저장 이벤트 이후에 안전하게 처리할 수 있는 프로세스라면 비동기 서버 측 로직으로 넘기십시오. Power Automate는 앱 간 메시징, 사용자 알림, 복잡한 외부 통합에만 사용하십시오.

동일한 검증 규칙을 네 개의 캔버스 앱과 세 개의 클라우드 흐름에 중복해서 구현하는 흔한 안티패턴은 피하십시오. 대신 모든 테이블, 트리거 조건, 작업, 비즈니스 담당자를 문서화한 중앙 집중식 규칙 카탈로그를 관리하십시오.

오류 없는 계산 및 롤업 필드

계산 필드와 롤업 필드는 데이터 모델을 깔끔하게 유지하는 강력한 도구이지만 신중하게 다뤄야 합니다. 수식은 비어 있을 수 있는 선택적 관계가 아니라 항상 안정적인 관계에 연결하십시오. 하위 레코드를 요약할 때는 사용자 지정 흐름보다 기본 제공 롤업 필드를 우선 사용하고, 대량의 데이터를 다룬다면 재계산 작업을 사용량이 적은 시간대에 예약하십시오.

사용자와 관리자가 이 값을 신뢰할 수 있도록, 기본 레코드에 항상 "마지막 재계산 날짜"와 "롤업 상태" 필드를 포함하십시오. 이 간단한 항목 하나로 모호함이 사라지고, 지원 팀이 데이터 최신성을 즉시 확인할 수 있습니다.

대체 키: 깨끗한 가져오기 유지

이는 견고한 데이터 통합의 핵심입니다. 레거시 시스템, ERP 또는 외부 API에서 데이터를 가져올 때는 환경마다 바뀌는 내부 GUID 대신 VendorCode, EmployeeID, SKU, ExternalCaseId, Email과 같은 신뢰할 수 있는 비즈니스 식별자를 사용해야 합니다.

이러한 열에 고유 대체 키를 만들고 사전에 데이터 품질을 검증하면 Dataverse API의 진정한 힘인 Upsert 작업을 활용할 수 있습니다. Upsert는 대체 키를 확인하여 레코드가 있으면 업데이트하고, 없으면 새로 만듭니다. 이를 통해 가져오기 중 중복 레코드가 완전히 제거됩니다. 여러 자회사에 걸쳐 직원을 매칭하는 것과 같은 복합 시나리오에서는 CompanyCode와 EmployeeNumber처럼 여러 열을 사용해 복합 키를 정의할 수 있습니다. 이러한 키는 항상 변경 불가능하게 유지하십시오. 비즈니스 요구로 변경이 불가피하다면 ValidFrom 및 ValidTo 날짜 범위와 짝을 이루는 대리 안정 키를 도입하십시오.

성능 체크리스트(빠른 개선 방법)

사용자 채택이 늘어나면 성능이 성공을 판단하는 핵심 지표가 됩니다. 다음의 빠른 개선 방법을 따라 환경을 빠르게 유지하십시오.

  • 필터에서 자주 사용되는 조회 열에는 인덱스를 생성하고, 모델 기반 앱의 뷰에는 사용자가 실제로 봐야 하는 열만 포함해 간결하게 유지하십시오.
  • 캔버스 앱에서 갤러리 전체를 대상으로 하는 수식은 위임 가능한 쿼리로 바꾸고, 항상 서버 측 필터링과 정렬을 우선하십시오.
  • 동기 플러그인의 긴 체인을 제한하십시오. 실행 시간을 꼼꼼하게 기록하고, 무거운 로직은 비동기 작업으로 나누십시오.
  • 클라우드 흐름에서는 ExecuteMultiple이나 일괄 처리 작업을 사용해 데이터 작업을 일괄 처리하십시오.
  • 대규모 분석 작업이 필요할 때는 무거운 데이터 변환을 Dataflows Gen2 또는 Microsoft Fabric으로 옮기십시오.

거버넌스 및 복원력

엔터프라이즈 애플리케이션은 거버넌스 모델만큼만 좋습니다. 관리되는 솔루션을 사용해 개발, 테스트, 프로덕션으로 이어지는 엄격한 배포 파이프라인을 유지하십시오. Power Platform CLI(PAC CLI)를 통해 솔루션 아티팩트를 소스 管理하고, 모든 커스텀 플러그인과 클라우드 흐름에는 동료 검토를 필수로 적용하십시오.

규칙 적중, 예외 로그, 롤업 지연, 흐름 실패를 수집하는 중앙 텔레메트리 테이블을 구축하십시오. 여기에 대체 키 충돌 알림, 고아 레코드 탐지 작업과 같은 자동 안전장치를 더해 장기적으로 데이터가 건강하게 유지되도록 하십시오.

12단계 구현 계획(1~2일 파일럿)

이러한 원칙을 실제로 적용할 준비가 되었다면, 다음 파일럿 프로젝트에서 이 12단계 신속 구현 계획을 따르십시오.

  1. 엔터티, 키, 관계, 소유 모델을 포함한 엔터티 관계 다이어그램(ERD)을 화이트보드에 그려 보십시오.
  2. 핵심 비즈니스 ID를 식별하고 필요한 대체 키를 만드십시오.
  3. 핵심 테이블을 구축하고 필수 관계를 설정하며, 초기 참조 데이터를 입력하십시오.
  4. 주요 핵심 성과 지표(KPI)에 대한 계산 및 롤업 필드를 추가하십시오.
  5. 반드시 통과해야 하는 핵심 비즈니스 규칙에 대해 서버 측 검증을 구현하십시오.
  6. 위임 가능한 필터가 포함된 모델 기반 뷰를 만들고, 자주 쓰는 조건자에 인덱스를 생성하십시오.
  7. 오케스트레이션과 알림 작업에만 Power Automate를 엄격하게 활용하세요.
  8. 대체 키를 활용한 upsert 작업으로 통제된 데이터 범위를 가져오세요.
  9. 텔레메트리 로깅 테이블을 연결하고 간단한 상태 모니터링 페이지를 만드세요.
  10. 예상 볼륨의 5~10배 규모로 확장 테스트를 실행하고, 그에 맞춰 인덱스와 롤업 주기를 조정하세요.
  11. 작업 결과를 관리형 솔루션으로 패키징하고 Test 환경으로 승격하세요.
  12. 가져오기 절차, 키 교체 정책, 재해 복구 단계를 포함한 포괄적인 런북을 작성하세요.

자주 발생하는 문제와 해결 방법

아무리 계획을 잘 세워도 팀이 문제에 부딪히는 경우가 있습니다. 가장 흔한 문제의 해결 방법은 다음과 같습니다.

  • 가져오기 후 중복 데이터: 대체 키가 없거나 약하게 정의되어 있을 때 대개 발생합니다. 적절한 키를 정의하고, upsert 작업을 다시 실행하며, 기존 중복 데이터를 병합하여 해결하세요.
  • 롤업 값이 잘못되었거나 오래됨: 선택적 관계, 순환 논리, 또는 제한된 재계산 때문에 발생하는 경우가 많습니다. 관계 구조를 단순화하고, 정기적으로 재계산을 예약하며, 데이터 최신성 KPI를 추가하세요.
  • 규칙 불일치: 동일한 논리가 여러 클라우드 흐름에 실수로 분산되어 있을 때 발생합니다. 해당 논리를 단일 서버 측 규칙으로 통합하고, 흐름을 순수한 오케스트레이터 역할만 하도록 리팩터링하세요.
  • 갤러리 로딩이 느림: 위임할 수 없는(non-delegable) 캔버스 앱 수식이 원인입니다. 위임 가능한 조건자로 바꾸고, 표시되는 열 수를 줄이며, 필요한 경우 값을 미리 계산하세요.

Dataverse에서 복잡한 비즈니스 애플리케이션을 구축하는 일이 더러운 데이터와 끊어진 관계와의 힘든 싸움일 필요는 없습니다. 견고한 데이터 모델을 수립하고, 깨끗한 가져오기를 위해 대체 키를 적극 활용하며, 비즈니스 로직을 중앙에서 관리하면 오랫동안 견딜 수 있는 확장 가능한 솔루션을 만들 수 있습니다.

Microsoft Cloud에서 견고한 솔루션을 구축하는 데 필요한 더 많은 전문가 팁, 아키텍처 분석, 심층 설명을 원하신다면 관련 팟캐스트 에피소드 Customize Dataverse for Complex Business Apps를 꼭 확인해 보세요. 다음 에피소드에서 뵙겠습니다!

Entities in this article

Dataverse Canvas app Dashboards Power Automate Power Platform environment Data lineage Observability Power Platform CLI Telemetry

Related articles

RSS