다음을 통해 공유


백그라운드 작업 개발을 위한 권장 사항

이 Power Platform Well-Architected Reliability 체크리스트 권장 사항에 적용:

제목:05 오류 처리 및 일시적인 오류 처리를 구현하여 워크로드의 복원력을 강화하세요. 구성 요소 오류 및 일시적인 오류를 처리할 수 있는 기능을 솔루션에 구축합니다.

이 가이드에서는 백그라운드 작업 개발에 대한 권장 사항을 설명합니다. 백그라운드 작업은 사용자 상호 작용 없이 자동으로 실행됩니다. 많은 애플리케이션에는 사용자 인터페이스(UI)와 독립적으로 실행되는 백그라운드 작업이 필요합니다.

백그라운드 작업의 몇 가지 예로는 일괄 작업, 집약적인 처리 작업, 워크플로와 같은 장기 실행 프로세스가 있습니다. 애플리케이션은 작업을 시작하고 사용자의 대화형 요청을 처리합니다.

예를 들어 애플리케이션은 요약을 생성하고 사용자가 업로드하는 문서에서 감정과 핵심 사항을 추출해야 할 수 있습니다. AI 작업을 실행하고 요약 및 핵심 사항을 데이터베이스에 저장하기 위해 백그라운드 작업을 수행할 수 있습니다. 사용자는 프로세스가 완료될 때까지 기다릴 필요가 없습니다. 또 다른 예로, 사용자는 비용 청구를 처리하고 승인을 위해 제출하는 백그라운드 워크플로를 시작하는 비용 청구를 제출할 수 있습니다. 사용자는 백그라운드 작업이 실행되는 동안 계속해서 다른 비용 청구를 제출하거나 애플리케이션을 종료할 수 있습니다. 백그라운드 작업이 완료되면 사용자에게 이메일을 보내 승인을 위해 비용 청구가 제출되었음을 확인합니다.

백그라운드 작업을 통해 애플리케이션 UI의 부하를 최소화할 수 있어 가용성이 향상되고 대화형 응답 시간이 단축됩니다.

주요 디자인 전략

백그라운드 작업으로 지정할 작업을 선택하려면 사용자 상호 작용 없이 작업이 실행되는지 여부와 작업이 완료될 때까지 UI가 기다려야 하는지 여부를 고려하세요. 사용자나 UI가 실행되는 동안 기다려야 하는 작업은 일반적으로 적절한 백그라운드 작업이 아닙니다.

백그라운드 작업의 유형

백그라운드 작업의 몇 가지 예는 다음과 같습니다.

  • 일련의 트랜잭션 실행과 같이 완료하는 데 오랜 시간이 걸리는 리소스 집약적 작업입니다.

  • 야간 데이터 업데이트 또는 예약된 처리와 같은 일괄 작업입니다.

  • 주문 이행 또는 프로비저닝 서비스 및 시스템과 같은 장기 실행 워크플로입니다.

  • 승인과 같은 비동기식 협업이 필요한 워크플로입니다.

  • 처리를 위해 작업을 보다 안전한 위치로 전송하는 민감한 데이터 처리입니다. 예를 들어 웹 앱 내에서 중요한 데이터를 처리하고 싶지 않을 수 있습니다. 대신 Gatekeeper 패턴과 같은 패턴을 사용하여 보호된 저장소에 액세스할 수 있는 격리된 백그라운드 프로세스로 데이터를 전송할 수 있습니다.

트리거

다음을 사용하여 백그라운드 작업을 시작합니다.

  • 이벤트 기반 트리거: 애플리케이션 내의 사용자 작업이나 데이터 원본에 대해 발생하는 이벤트는 작업를 트리거합니다.

  • 일정 기반 트리거: 타이머 기반 일정은 작업를 호출합니다. 작업은 반복적으로 또는 단일 실행으로 예약될 수 있습니다.

이벤트 기반 트리거

작업은 백그라운드 작업을 시작하는 이벤트 기반 호출을 트리거합니다. 이벤트 기반 트리거의 예는 다음과 같습니다.

  • UI 또는 다른 작업은 백그라운드 작업을 트리거하고 수행된 작업의 데이터를 백그라운드 작업으로 전달합니다. 예를 들어 사용자가 양식을 통해 비용 청구서를 제출하면 양식 세부 정보가 처리를 위해 백그라운드 작업으로 전달됩니다.

  • UI 또는 다른 작업은 스토리지에 있는 값을 저장하거나 업데이트합니다. 백그라운드 작업은 스토리지를 모니터링하고 새 값이 추가되거나 기존 값이 수정되는 등의 변경 사항을 감지하고 해당 변경 사항을 기반으로 백그라운드 작업을 트리거합니다.

  • UI 또는 다른 작업은 웹 서비스로 노출되는 HTTPS URI 또는 API와 같은 끝점에 요청합니다. 요청의 일부로 UI 또는 작업은 백그라운드 작업에 필요한 데이터를 전송합니다. 끝점 또는 웹 서비스는 데이터를 입력으로 사용하는 백그라운드 작업을 호출합니다.

이벤트 구동 트리거의 다른 예로는 애플리케이션에서 양식이 제출되는 것, 데이터 저장소에 새 행이 추가되는 것, copilot에서 트리거 문구가 흐름을 호출하는 토픽를 시작하는 것, 데이터 저장소에서 필드 값이 변경되는 것, 특정 제목이나 특정 발신자가 쓴 이메일이 받은 편지함에 도착하는 것, 파일이 파일 저장 위치에 업로드되는 것 등이 있습니다.

트리거 조건을 사용하여 워크플로를 간소화하고 불필요한 실행 수를 줄이세요. 트리거 조건은 워크플로가 트리거되기 전에 충족해야 하는 여러 조건을 설정합니다.

참고

워크플로의 일부로 워크플로를 시작하는 데이터 원본을 변경하는 경우 무한 루프를 방지하기 위해 트리거 조건을 사용해야 합니다. 예를 들어 애플리케이션은 Microsoft Dataverse 테이블 행의 필드를 변경할 수 있으며 워크플로는 변경된 필드를 기반으로 추가 쿼리를 수행하여 동일한 행을 추가로 수정합니다. 트리거 조건을 사용하면 애플리케이션에서 변경된 필드가 업데이트되는 경우에만 워크플로가 시작되고 다른 필드는 업데이트되지 않습니다.

일정 기반 트리거

타이머는 백그라운드 작업을 시작하는 일정 기반 호출을 트리거합니다. 일정 기반 트리거의 예는 다음과 같습니다.

  • 백그라운드 작업은 매일 또는 매주 실행되며 일련의 작업을 수행합니다.

  • 별도의 프로세스 또는 애플리케이션은 시간 지연 후 또는 특정 시간에 백그라운드 작업을 호출하는 타이머를 시작합니다.

일정 기반 호출에 적합한 다른 작업 예로는 배치 처리 루틴(예: 고객의 최근 행동을 기반으로 관련 제품 목록 업데이트), 루틴 데이터 처리 태스크(예: 누적 결과 생성), 일일 보고서에 대한 데이터 분석, 데이터 보존 정리 및 데이터 일관성 검사가 있습니다.

결과 반환

백그라운드 작업은 UI 또는 백그라운드 작업을 호출한 프로세스와 별도의 프로세스에서 비동기식으로 실행됩니다. 이상적으로 백그라운드 작업은 실행 후 잊기 작업입니다. 런타임 진행 상황은 UI나 호출 프로세스에 영향을 주지 않습니다. 즉, 호출 프로세스는 작업이 완료될 때까지 기다리지 않습니다. UI와 호출 프로세스는 작업이 끝나는 시점을 감지할 수 없습니다.

진행률이나 완료를 나타내기 위해 호출 작업과 통신하기 위해 백그라운드 작업이 필요한 경우 다음과 같은 메커니즘을 구현해야 합니다.

  • 이 값을 모니터링하거나 확인할 수 있는 UI 또는 호출자 작업에 액세스할 수 있는 저장소에 상태 표시기 값을 씁니다. 백그라운드 작업이 호출자에게 반환하는 다른 데이터는 동일한 스토리지에 배치될 수 있습니다.

  • UI 또는 호출자가 상태 정보를 얻기 위해 액세스할 수 있는 백그라운드 작업에서 API 또는 끝점을 노출합니다. 응답에는 백그라운드 작업이 호출자에게 반환하는 데이터가 포함될 수 있습니다.

  • UI로 다시 처리된 상태 또는 데이터로 응답하도록 백그라운드 작업을 구성합니다.

좌표

백그라운드 작업은 복잡할 수 있으며 실행하려면 여러 작업이 필요할 수 있습니다. 이러한 시나리오에서는 작업을 여러 소비자가 실행할 수 있는 더 작은 개별 단계 또는 하위 작업으로 나누는 것이 일반적입니다. 다단계 작업은 개별 단계를 여러 작업에서 재사용할 수 있는 경우가 많기 때문에 더 효율적이고 유연합니다. 단계의 순서를 추가, 제거 또는 수정하는 것도 쉽습니다.

여러 작업과 단계를 조정하는 것은 어려울 수 있지만 솔루션을 안내하는 세 가지 일반적인 패턴이 있습니다.

  • 작업를 여러 개의 재사용 가능한 단계로 분해합니다. 애플리케이션은 처리하는 정보에 대해 다양한 복잡성의 다양한 작업을 수행해야 할 수도 있습니다. 이러한 애플리케이션을 구현하는 간단하지만 융통성이 없는 접근 방식은 이 처리를 모놀리식 모듈로 수행하는 것입니다. 그러나 이 접근 방식은 애플리케이션이 다른 곳에서 동일한 처리의 일부를 요구하는 경우 코드를 리팩터링하거나 최적화하거나 재사용할 기회를 줄일 가능성이 높습니다.

  • 작업의 단계 오케스트레이션을 관리합니다. 애플리케이션은 여러 단계로 구성된 작업을 수행할 수 있으며, 그중 일부는 원격 서비스를 호출하거나 원격 리소스에 액세스할 수 있습니다. 개별 단계가 서로 독립적인 경우도 있지만 작업을 구현하는 애플리케이션 논리에 의해 조정됩니다.

  • 실패한 작업 단계에 대한 복구를 관리합니다. 하나 이상의 단계가 실패하면 애플리케이션은 최종적으로 일관된 작업을 함께 정의하는 일련의 단계가 수행하는 작업을 실행 취소해야 할 수도 있습니다.

복원력 고려사항

애플리케이션에 안정적인 서비스를 제공하기 위해 탄력적인 백그라운드 작업을 만듭니다. 백그라운드 작업을 계획하고 디자인할 때 다음 사항을 고려하세요.

  • 백그라운드 작업은 데이터를 손상시키거나 애플리케이션에 불일치를 초래하지 않고 다시 시작을 원활하게 처리해야 합니다. 장기 실행 또는 다단계 작업의 경우 체크포인트 사용을 고려하세요. 체크포인트를 사용하여 작업 상태를 영구 저장소에 저장하거나 대기열에 메시지로 저장하고 예기치 않은 작업 실패 시 재시도 논리를 구성합니다.

  • 대기열을 사용하여 백그라운드 작업과 통신하는 경우 대기열은 애플리케이션의 로드가 평소보다 높은 동안 작업으로 전송된 요청을 저장하는 버퍼 역할을 할 수 있습니다. 사용량이 적은 기간에는 작업이 UI를 따라잡을 수 있으며 다시 시작해도 UI가 차단되지 않습니다.

확장 및 성능 고려 사항

백그라운드 작업은 시스템이 로드될 때 애플리케이션을 차단하거나 작업을 지연시키지 않도록 충분한 성능을 제공해야 합니다. 일반적으로 백그라운드 작업을 호스팅하는 컴퓨팅 인스턴스를 확장하면 성능이 향상됩니다. 백그라운드 작업을 계획하고 디자인할 때 확장성 및 성능과 관련된 다음 사항을 고려하세요.

  • 백그라운드 작업의 결과가 사용자에게 표시되는 경우 백그라운드 작업이 사용자 경험에 영향을 미칠 수 있습니다. 예를 들어 백그라운드 작업에서는 사용자가 알림을 기다리거나, 페이지를 새로 고치거나, 작업 상태를 수동으로 확인해야 할 수 있습니다. 이러한 동작은 사용자 상호 작용의 복잡성을 증가시키고 사용자 경험에 부정적인 영향을 미칠 수 있습니다. 이메일이나 Microsoft Teams을 통해 알림을 보내거나 UI에서 상태 업데이트를 확인하는 기능을 포함하는 등 데이터를 UI에 다시 응답하는 대신 대안을 고려해 보세요. 비용 양식을 제출하는 예에서는 UI에 상태를 다시 응답하는 대신 제출된 모든 비용 양식을 해당 상태 및 새로 고침을 트리거하는 기능과 함께 나열하는 페이지를 애플리케이션에 포함할 수 있습니다.

  • 백그라운드 작업은 특히 백그라운드 작업이 서로 의존하거나 다른 데이터 소스에 의존하는 경우 데이터 동기화 및 프로세스 조정에 문제를 일으킬 수 있습니다. 예를 들어 백그라운드 작업은 데이터 일관성 문제, 경합 상태, 교착 상태 또는 시간 초과를 처리할 수 있습니다.

  • 로드 시 성능 손실을 방지하려면 처리 체인의 단일 지점이 병목 현상을 일으키지 않도록 논리를 구현할 수 있습니다. 워크플로 작업, 스토리지, 애플리케이션과 백그라운드 작업이 의존하는 기타 서비스의 최대 처리량 등 기타 제한 사항을 고려하세요.

트레이드오프: 백그라운드 작업은 시스템에 더 많은 구성 요소와 종속성을 도입하여 솔루션의 복잡성과 유지 관리 비용을 증가시킬 수 있습니다. 예를 들어 백그라운드 작업에는 별도의 모니터링 서비스와 재시도 메커니즘이 필요할 수 있습니다.

Power Platform 간편 사용

다음 섹션에서는 백그라운드 작업을 호스팅, 실행, 구성 및 관리하는 데 사용할 수 있는 서비스에 대해 설명합니다.

Power Automate

Power Automate 클라우드 흐름 은 클라우드에서 실행되는 워크플로입니다. 특정 사람의 이메일 도착과 같은 이벤트에 의해 트리거되는 자동화된 흐름일 수 있습니다. 모바일 디바이스에서 팀에 보내는 알림과 같이 버튼 클릭만으로 시작되는 즉각적인 흐름이 될 수 있습니다. SharePoint 또는 데이터베이스에 대한 일일 데이터 업로드와 같이 특정 시간에 실행되는 예약된 흐름일 수 있습니다. 데스크톱 또는 모바일 디바이스에서 반복적인 작업을 자동화할 수도 있습니다.

처리량, 요청, 동시성, 루핑 및 디배칭과 관련하여 자동화, 예약 및 인스턴트 흐름의 한계 를 숙지하세요. 워크플로를 설계할 때 이러한 제한을 고려해야 합니다.

오류 처리를 계획하여 위험을 줄이세요.

백그라운드 작업을 실행하기 위해 흐름을 사용할 수 있는 몇 가지 예는 다음과 같습니다. Power Automate

Microsoft Dataverse

Microsoft Dataverse 계산된 열 및 롤업:

  • 수식 열은 표에 계산된 값을 표시하는 열입니다. Microsoft Dataverse

  • 계산 열은 업무 프로세스에 사용되는 수동 계산을 자동화합니다. 예를 들어, 영업 직원은 가능성을 곱한 영업 기회에서 예측된 매출을 기반으로 하는 영업 기회에 대한 가중 수익을 알고 싶어할 수 있습니다. 또는 주문이 특정 금액보다 큰 경우 자동으로 할인을 적용하려고 합니다. 계산 열에는 단순한 산술 연산의 결과와 같은 값이 포함될 수 있으며, 다른 경우보다 크거나 다른 경우와 같은 조건부 연산이 포함될 수 있습니다.

  • 롤업 열은 사용자가 주요 비즈니스 메트릭을 모니터링하여 데이터에 대한 통찰력을 얻을 수 있도록 지원합니다. 롤업 열은 지정된 행과 관련된 행을 통해 계산되는 누적 값을 포함합니다. 여기에는 이메일 및 약속과 같은 일반 테이블과 활동 테이블이 포함됩니다. 더 복잡한 시나리오에서는 행의 계층 구조를 통해 데이터를 집계할 수 있습니다. 관리자나 사용자 지정자는 코드를 작성할 개발자 필요 없이 Power Apps의 사용자 지정 도구를 사용하여 롤업 열을 정의할 수 있습니다.

백그라운드 작업은 비동기적으로 처리하는 요청을 보낼 수 있습니다. Dataverse 백그라운드 작업은 요청이 실행되는 동안 연결을 유지하고 싶지 않을 때 유용합니다.

플러그인 은 데이터 작업 처리 중 발생하는 특정 이벤트에 대해 응답에서 실행되는 사용자 정의 이벤트 핸들러입니다. Microsoft Dataverse

Microsoft Dataverse는 또한 로우코드 플러그 인을 통해 보다 효율적인 데이터 아키텍처를 달성하고 클라이언트 측 작업량을 줄이기 위한 강력한 솔루션을 제공합니다. 이러한 플러그 인은 재사용 가능한 실시간 워크플로로, Dataverse 내에서 특정 명령 세트를 실행하고 서버 측을 실행하며 개인화된 이벤트 처리기에 의해 트리거됩니다.

안정성 체크리스트

전체 권장 사항 세트를 참조하세요.