여러 Power Apps 인스턴스 간의 최종 일관성

Microsoft Power Platform
Microsoft Dataverse
Azure Logic Apps

이 문서에서는 가상의 미국 기반 고객인 Contoso가 최근 유럽에 기반을 두고 있는 다른 회사를 인수해 두 회사 간의 CRM 및 ERP 시스템을 처리하는 시나리오를 간략하게 설명합니다. 이 통합의 일환으로 완전히 통합될 때까지 Dynamics 365 Dataverse 엔터티의 일부를 동기화 상태로 유지해야 합니다. Contoso 전용 LOB(기간 업무) 앱은 두 시스템 모두에서 데이터를 사용하며 데이터가 동기화를 기다리는 중이거나 누락된 경우 요청을 수락할 수 있어야 합니다. 다음 가이드에서는 Power Platform 인스턴스 간의 최종 일관성을 고려하는 방법을 보여 줍니다.

아키텍처

GUID 또는 대체 키에 따라 항상 upsert하는 플러그 인/흐름

실패한 다중 시스템 동기화에 솔루션을 제공하는 Dataverse 플러그 인을 보여 주는 다이어그램

이 아키텍처의 Visio 파일을 다운로드합니다.

워크플로

이 솔루션은 플러그 인 수명 주기 내에서 여러 플러그 인 단계를 사용하여 구축할 수 있습니다. 만드는 엔터티가 필수인 경우 PreValidation 단계를 사용합니다. PreValidation은 데이터베이스 트랜잭션이 시작되기 전에 발생합니다. 필드가 필수인 경우 기본 설정 옵션입니다. 그러나 일부 시나리오에서는 PreCreate 플러그 인 단계로 충분합니다.

  1. 미국 인스턴스는 논리 앱을 통해 새 계정을 유럽 인스턴스와 동기화하려고 시도합니다. 가동 중지 시간 또는 업그레이드로 인해 유럽 인스턴스에 연결할 수 없습니다.
  2. Contoso LOB 앱은 미국 인스턴스에서 기본 계정 엔터티를 읽습니다. 유럽 인스턴스에 복제되지 않은 계정 엔터티를 참조하는 API 호출을 제출하려고 합니다. 현재 상태로는 동기화가 작동하지 않아 레코드가 존재하지 않기 때문에 API 호출은 실패합니다.
  3. 그러나 PreValidation/PreCreate 플러그 인은 먼저 제공된 엔터티 GUID 및 제공된 참조 데이터를 기반으로 upsert를 수행합니다. 이미 있는 경우 아무것도 변경되지 않습니다. 없는 경우 대부분의 필드가 비어 있는 새 계정이 만들어집니다.
  4. 지정된 ID를 가진 계정이 시스템에 있기 때문에 API 호출이 성공합니다. 플러그 인이 작업을 가로채 누락된 레코드를 정상적으로 처리했습니다. LOB 애플리케이션의 보고서가 성공적으로 생성됩니다.

참고

Microsoft는 두 인스턴스를 참조할 때 플랫폼 중단을 처리하기 위해 이 솔루션의 일부로써 백오프하여 다시 시도하려면 사용자 지정 코드에 회로 차단기 패턴을 도입하는 것을 권장합니다. 회로 차단기를 사용하는 방법에 대한 자세한 내용은 회로 차단기 패턴을 참조하세요.

대안

위에서 설명한 시나리오에서는 사용자 지정 논리 앱을 복제 방법으로 사용합니다. 그러나 Dataverse 인스턴스 간에 데이터를 복제하는 방법에는 다음을 포함하는 여러 가지 방법이 있지만 이에 국한되지는 않습니다.

  • Logic Apps
  • Azure Functions의 함수 앱
  • Azure Data Factory
  • Azure Synapse Analytics
  • Power Automate

시나리오 정보

조직에서는 때때로 둘 이상의 Power Platform 인스턴스, 특히 일반적으로 Dataverse 엔터티의 하위 집합을 동기화된 상태로 유지해야 하는 경우가 있습니다. 이 요구 사항은 조직에서 지리적 격리를 위해 의도적으로 새 인스턴스를 추가했지만 모든 지역에서 공통 데이터 집합이 필요한 경우에 발생할 수 있습니다. 또는 Power Platform 통합이 완료되기 전에 두 조직이 병합될 때 발생할 수 있습니다.

동기화 프로세스가 설계된 대로 작동하면 두 인스턴스 모두에서 사용하는 기간 업무 애플리케이션에는 문제가 없습니다. 그러나 동기화 메커니즘은 오류 증명이 되지 않으며 중단 또는 예기치 않은 문제가 발생할 수 있습니다. 이 경우 두 인스턴스의 데이터를 모두 사용하는 기간 업무 애플리케이션은 불완전한 데이터를 처리할 수 있도록 구축되어야 합니다.

Contoso의 새로운 유럽 자회사를 Contoso의 비즈니스 구조에 통합하려면 Power Platform의 한 인스턴스에서 다른 인스턴스로 계정 및 연락처를 동기화해야 합니다. 이 시나리오에서 Power Platform의 미국 인스턴스는 사용자 지정 논리 앱을 통해 참조 데이터의 일일 일괄 처리를 유럽 인스턴스와 동기화합니다. 전용 Contoso LOB 앱은 사용자가 만든 문제 티켓에 대한 보고를 생성합니다. 이 작업을 완료하기 위해 LOB 앱은 두 Dataverse 인스턴스에서 사용자 데이터를 읽어 관련 데이터, 미국 인스턴스의 기본 참조 키, 유럽 인스턴스의 티켓 데이터를 끌어옵니다. 가동 중지 시간, 유지 관리 또는 다른 통신 문제로 인해 동기화 프로세스가 완료되지 않은 경우, 요청은 유럽 인스턴스에서 누락된 엔터티로 인해 오류를 생성하게 됩니다.

잠재적인 사용 사례

다음 상황에는 이 패턴이 유용할 수 있습니다.

  • 참조 데이터를 보내는 시스템이 다운되었습니다.
  • 데이터 동기화에 시간이 오래 걸리거나 프로세스가 지연됩니다.
  • 시스템을 사용하는 경우 생성되는 엔터티 만들기에 대한 논리가 없습니다.

이 방법을 사용하는 경우

다음 시나리오에서 이 접근 방식을 사용합니다.

  • 지정된 키가 있는 레코드가 있음을 보장하고 레코드가 완전히 하이드레이션되지 않도록 하려고 합니다.
  • 데이터가 아직 동기화되지 않은 경우에도 만들기를 수락해야 합니다.

이 패턴은 다음 시나리오에서 적합하지 않을 수 있습니다.

  • 레코드를 만들 때 논리가 적용됩니다. 데이터는 하이드레이션되지 않으므로 사용 가능한 특정 속성에 의존하는 것은 안전하지 않습니다.

예제

다음 예제에서는 잠재적인 경험 및 동기화 지연의 결과를 보여 줍니다.

예제 1 - 중단 또는 일시적인 오류가 없는 성공적인 경로

성공적인 다중 시스템 동기화를 보여 주는 다이어그램

이 아키텍처의 Visio 파일을 다운로드합니다.

  1. 미국 인스턴스는 논리 앱을 통해 새 계정을 유럽 인스턴스와 동기화합니다. 일시적인 오류나 중단이 발생하지 않았기 때문에 모두 작동하고 있습니다.
  2. Contoso LOB 앱은 미국 인스턴스에서 기본 계정 엔터티를 읽고 유럽 인스턴스에 복제된 계정 엔터티를 참조하는 API 호출을 제출하려고 합니다. 모든 것이 가동 중이고 중단이나 일시적인 오류가 발생하지 않았기 때문에 모두 작동하고 있습니다. LOB 애플리케이션의 보고서가 성공적으로 생성됩니다.

예제 2 - 동기화가 중단되거나 지연된 실패한 경로

실패한 다중 시스템 동기화를 보여 주는 다이어그램

이 아키텍처의 Visio 파일을 다운로드합니다.

  1. 미국 인스턴스는 논리 앱을 통해 새 계정을 유럽 인스턴스와 동기화하려고 시도합니다. 가동 중지 시간, 유지 관리 또는 다른 통신 문제로 인해 유럽 인스턴스에 연결할 수 없습니다.
  2. Contoso LOB 앱은 미국 인스턴스에서 기본 계정 엔터티를 읽고 유럽 인스턴스에 복제되지 않은 계정 엔터티를 참조하는 API 호출을 제출하려고 합니다. 지정된 식별자가 있는 계정이 유럽 인스턴스에서 만들어지지 않았고 보고서가 생성되지 않았기 때문에 API 호출에 실패하게 됩니다.

고려 사항

아직 하이드레이션되지 않은 엔터티에 비즈니스 논리가 미치는 영향을 고려합니다. 엔터티가 아직 완전히 하이드레이션되고 동기화되지 않은 시나리오를 고려합니다. 일부 속성은 null이므로 이 방법을 사용할 때 데이터에 대한 모든 결정을 고려해야 합니다.

다음 단계

관련 아키텍처:

웹 개발용 참고 자료: