금. 8월 15th, 2025

안녕하세요! 🚀 비즈니스 프로세스 자동화의 핵심, Power Automate Cloud를 효율적으로 활용하고 계신가요? 자동화된 프로세스는 생산성을 극대화하지만, 그 과정에서 발생하는 ‘오류’는 예상치 못한 문제를 야기하고 시스템의 안정성을 위협할 수 있습니다.

“오류는 피할 수 없다”는 말이 있듯이, 중요한 것은 오류가 발생했을 때 이를 얼마나 신속하고 체계적으로 인지하고 대응하느냐입니다. Power Automate Cloud는 단순한 자동화를 넘어, 강력한 오류 처리 및 로깅 기능을 제공하여 여러분의 시스템을 더욱 견고하게 만들어 줄 수 있습니다.

오늘은 Power Automate Cloud Flow에서 발생하는 오류를 자동으로 알리고, 체계적으로 기록하여 관리하는 방법에 대해 자세히 알아보겠습니다. 💡


1. 왜 오류 알림 및 로깅을 자동화해야 할까요?

수동으로 Flow 실행 기록을 확인하며 오류를 찾아내는 것은 비효율적이며, 치명적인 오류를 놓칠 수도 있습니다. 오류 알림 및 로깅 자동화는 다음과 같은 강력한 이점을 제공합니다.

  • ⚡️ 신속한 문제 해결 (Faster Resolution): 오류 발생 즉시 담당자에게 알림이 전송되어, 문제 해결 시간을 단축하고 비즈니스 중단을 최소화합니다.
  • 📈 운영 효율성 증대 (Increased Operational Efficiency): 수동 모니터링에 드는 시간과 노력을 절감하고, 담당자는 더욱 중요한 업무에 집중할 수 있습니다.
  • 🛡️ 시스템 안정성 향상 (Improved System Stability): 잠재적인 문제를 조기에 파악하고 대응하여, 시스템의 전반적인 안정성과 신뢰성을 높입니다.
  • 📊 감사 및 분석 용이 (Easier Auditing & Analysis): 오류 기록이 중앙 집중화되어 관리되므로, 주기적인 오류 분석을 통해 반복되는 문제를 파악하고 프로세스를 개선할 수 있습니다.
  • 📝 책임 및 추적성 확보 (Accountability & Traceability): 어떤 Flow에서, 언제, 어떤 오류가 발생했는지 명확하게 기록되어 책임 소재를 분명히 하고 사후 분석에 용이합니다.

2. Power Automate 오류 처리의 핵심 개념

Power Automate Cloud Flow에서 오류를 처리하고 알림을 보내는 데 사용되는 주요 개념들을 살펴보겠습니다.

2.1. ‘실행 후 구성’ (Configure Run After) ⚙️

이 기능은 Power Automate 오류 처리의 심장부와 같습니다. 각 액션(Action)의 우측 상단 ‘점 세 개(…)’ 메뉴를 클릭하면 ‘실행 후 구성’ 옵션을 설정할 수 있습니다. 이를 통해 이전 액션의 결과에 따라 다음 액션이 실행될지 여부를 제어할 수 있습니다.

  • 성공한 경우 (is successful): 이전 액션이 성공적으로 완료되었을 때 다음 액션이 실행됩니다. (기본 설정)
  • 실패한 경우 (has failed): 이전 액션이 실패했을 때 다음 액션이 실행됩니다. (오류 처리의 핵심!)
  • 건너뛴 경우 (is skipped): 이전 액션이 건너뛰어졌을 때 다음 액션이 실행됩니다. (예: 조건문에서 특정 분기가 실행되지 않은 경우)
  • 시간이 초과된 경우 (has timed out): 이전 액션이 시간 초과되었을 때 다음 액션이 실행됩니다.

활용 예시: 특정 HTTP 요청 액션이 실패했을 때만 오류 알림을 보내는 액션을 실행하도록 설정할 수 있습니다.

2.2. ‘범위’ 액션 (Scope Action) 📦

‘범위’ 액션은 여러 액션을 논리적으로 그룹화하는 데 사용됩니다. 이는 프로그래밍의 ‘Try-Catch-Finally’ 블록과 유사한 개념을 Power Automate에서 구현하는 데 매우 유용합니다.

  • Try (시도): 정상적으로 실행되어야 할 액션들을 ‘범위’ 내에 넣습니다.
  • Catch (포착): ‘Try’ 범위가 실패했을 때 실행될 오류 처리 및 알림 액션들을 다른 ‘범위’ 내에 넣고, 이 ‘Catch’ 범위의 ‘실행 후 구성’을 ‘Try’ 범위가 ‘실패한 경우’로 설정합니다.
  • Finally (최종): ‘Try’ 범위의 성공 여부와 관계없이 항상 실행되어야 할 액션들을 또 다른 ‘범위’ 내에 넣고, 이 ‘Finally’ 범위의 ‘실행 후 구성’을 ‘Try’ 범위가 ‘성공한 경우’ 또는 ‘실패한 경우’ (둘 다 선택)로 설정합니다.

2.3. ‘표현식’ (Expressions)을 이용한 오류 상세 정보 추출 📝

오류 발생 시, Flow의 내장 함수와 표현식을 사용하여 오류에 대한 상세 정보를 추출할 수 있습니다.

  • error(): 가장 최근에 실패한 액션에 대한 정보를 반환합니다.
    • error().message: 오류 메시지
    • error().code: 오류 코드
  • result('액션이름'): 특정 액션의 결과를 배열 형태로 반환합니다. 이 결과 배열을 필터링하여 실패한 액션의 출력 정보를 얻을 수 있습니다.
  • workflow(): 현재 실행 중인 Flow 자체에 대한 정보를 반환합니다.
    • workflow().name: Flow 이름
    • workflow().id: Flow ID
    • workflow().run.id: 현재 Flow 실행 ID
  • triggerOutputs(): Flow를 트리거한 이벤트에 대한 정보를 반환합니다.

예시: error().message를 사용하여 “The requested resource was not found.”와 같은 오류 메시지를 가져올 수 있습니다.


3. Power Automate를 이용한 오류 알림 및 로깅 실전 구현 (Try-Catch-Finally 패턴)

이제 실제 Flow를 구성하여 오류 알림 및 로깅을 자동화하는 방법을 살펴보겠습니다.

시나리오: 특정 웹 API를 호출하여 데이터를 가져오는 Flow가 있다고 가정해 봅시다. 이 API 호출이 실패하면 (예: 네트워크 문제, 잘못된 URL, 인증 오류 등) 담당자에게 이메일 알림을 보내고, SharePoint 목록에 오류 기록을 남깁니다.

3.1. Flow 구성 개요

[트리거] (예: 수동 트리거)
  └─ [Scope - Try 블록]
       └─ [HTTP 요청] (실패 가능성이 있는 핵심 액션)
       └─ [Compose] (성공 시 처리 로직)
  └─ [Scope - Catch 블록] (Try 블록이 실패했을 때 실행)
       └─ [오류 메시지 추출] (Compose 액션)
       └─ [이메일 알림 보내기] (Outlook 365)
       └─ [SharePoint 목록에 로깅] (SharePoint)
  └─ [Scope - Finally 블록] (Try 또는 Catch 블록의 성공/실패 여부와 관계없이 항상 실행)
       └─ [Flow 종료 메시지] (Compose 액션)

3.2. 단계별 Flow 구축

  1. 새 Cloud Flow 생성: ‘수동으로 흐름 트리거’를 선택하여 시작합니다. (테스트 용이)

  2. ‘Try’ 블록 추가:

    • ‘새 단계’ -> ‘작업’ 탭 -> ‘범위’ 액션을 검색하여 추가합니다. 이름을 Try 블록으로 변경합니다.
    • Try 블록 내부에 실패 가능성이 있는 액션들을 추가합니다.
      • 예시: HTTP 액션을 추가하고, 존재하지 않는 URL(예: http://nonexistent.url/api)을 입력하여 강제로 실패를 유도할 수 있습니다.
      • API 호출이 성공했을 때의 로직(예: Compose 액션으로 “API 호출 성공!”)도 함께 넣어줍니다.
    ✅ 트리거: 수동으로 흐름 트리거
    
    📦 Try 블록
      🌐 HTTP (실패 유도: Method: GET, URI: http://nonexistent.url/api)
      📝 Compose (API 호출 성공 시: "API 호출 성공!")
  3. ‘Catch’ 블록 추가:

    • 새 ‘범위’ 액션을 추가하고 이름을 Catch 블록으로 변경합니다.
    • 가장 중요: Catch 블록의 우측 상단 ‘…’ 클릭 -> ‘실행 후 구성’을 선택합니다.
    • Try 블록‘실패한 경우’ 만 체크하고 ‘완료’를 클릭합니다.
    📦 Catch 블록 (실행 후 구성: Try 블록이 실패한 경우)
  4. ‘Catch’ 블록 내부 구성 (오류 알림 및 로깅):

    • 오류 정보 추출 (Compose):

      • Catch 블록 내부에 Compose 액션을 추가하고, 이름을 오류 메시지 추출로 변경합니다.
      • Inputs에 다음 표현식들을 활용하여 오류 정보를 구성합니다.
        Flow 이름: @{workflow().name}
        Flow 실행 ID: @{workflow().run.id}
        오류 코드: @{error().code}
        오류 메시지: @{error().message}
        실패 액션 이름: @{result('HTTP').name} (또는 실제 HTTP 액션 이름)
        실패 액션 입력: @{result('HTTP').inputs}

        > 💡 result('HTTP')에서 ‘HTTP’는 Try 블록 내에 있는 HTTP 액션의 정확한 이름이어야 합니다. 이름을 변경했다면 해당 이름으로 수정하세요. result() 함수는 실패한 액션의 자세한 입출력 정보를 제공하여 디버깅에 큰 도움이 됩니다.

    • 이메일 알림 보내기 (Outlook 365):

      • Catch 블록 내부에 ‘메일 보내기 (V2)’ 액션을 추가합니다.
      • 받는 사람: 담당자 이메일 주소 (예: admin@yourcompany.com)
      • 제목: [Power Automate 오류 발생] @{workflow().name} Flow 실행 실패
      • 본문: HTML 형식으로 더 읽기 쉽게 구성할 수 있습니다.

🚨 Power Automate 오류 알림 🚨

안녕하세요,

아래 Flow에서 오류가 발생했습니다. 확인해 주세요.


Flow 이름: @{workflow().name}

Flow 실행 ID: @{workflow().run.id}

실패 시간: @{convertTimeZone(utcNow(), ‘UTC’, ‘Korea Standard Time’, ‘yyyy-MM-dd HH:mm:ss’)}

오류 메시지: @{error().message}

오류 코드: @{error().code}

실패 액션: @{result(‘HTTP’).name}

자세한 실행 기록 확인: 여기 클릭


감사합니다.

        ```
        > 💡 `workflow().run.webLink`는 해당 Flow 실행의 상세 기록 URL을 제공하여 바로 이동할 수 있게 해줍니다. `convertTimeZone`을 사용하여 시간대를 한국 시간으로 변환하는 것도 유용합니다.

*   **SharePoint 목록에 로깅 (SharePoint):**
    *   **사전 준비:** SharePoint 사이트에 오류 로그를 저장할 새 사용자 지정 목록을 만듭니다.
        *   **목록 이름:** `Power Automate 오류 로그`
        *   **컬럼:**
            *   `제목` (기본값, Flow 이름 또는 오류 요약)
            *   `ErrorMessage` (여러 줄 텍스트)
            *   `FlowName` (한 줄 텍스트)
            *   `FlowRunID` (한 줄 텍스트)
            *   `ErrorTime` (날짜 및 시간)
            *   `FailedAction` (한 줄 텍스트)
    *   `Catch 블록` 내부에 'SharePoint' -> '항목 만들기' 액션을 추가합니다.
    *   **사이트 주소:** 해당 SharePoint 사이트 주소 선택
    *   **목록 이름:** `Power Automate 오류 로그` 선택
    *   각 컬럼에 위에서 추출한 오류 정보를 매핑합니다.
        *   `제목`: `@{workflow().name} - 오류 발생`
        *   `ErrorMessage`: `@{error().message}`
        *   `FlowName`: `@{workflow().name}`
        *   `FlowRunID`: `@{workflow().run.id}`
        *   `ErrorTime`: `@{utcNow()}` (또는 `convertTimeZone` 적용)
        *   `FailedAction`: `@{result('HTTP').name}`

```
📦 Catch 블록 (실행 후 구성: Try 블록이 실패한 경우)
  📝 오류 메시지 추출 (Compose)
  📧 메일 보내기 (V2)
  📝 항목 만들기 (SharePoint)
```
  1. ‘Finally’ 블록 추가 (선택 사항):

    • 새 ‘범위’ 액션을 추가하고 이름을 Finally 블록으로 변경합니다.
    • Finally 블록의 ‘실행 후 구성’을 Try 블록‘성공한 경우’ 또는 ‘실패한 경우’ (둘 다 체크)로 설정합니다.
    • Finally 블록 내부에 Flow의 성공/실패 여부와 관계없이 항상 실행되어야 하는 액션(예: 리소스 정리, 최종 상태 업데이트)을 추가합니다.
      • 예시: Compose 액션으로 “Flow 실행 완료 (성공 또는 실패)” 메시지를 추가합니다.
    📦 Finally 블록 (실행 후 구성: Try 블록이 성공한 경우 OR Try 블록이 실패한 경우)
      📝 Compose (Flow 실행 완료 (성공 또는 실패))

4. 다양한 오류 알림 및 로깅 채널 📡

위 예시에서는 이메일과 SharePoint를 사용했지만, Power Automate는 다양한 커넥터를 통해 유연한 알림 및 로깅 채널을 제공합니다.

  • ✉️ Microsoft Teams: 특정 채널에 오류 메시지를 게시하여 팀 전체가 공유하고 빠르게 대응할 수 있도록 합니다. (예: 메시지 게시 액션)
  • 📱 모바일 푸시 알림: Power Automate 모바일 앱을 통해 담당자에게 즉시 푸시 알림을 보냅니다. (예: 알림 보내기 (v2) 액션)
  • ☁️ Azure Log Analytics / Application Insights: 대규모 시스템이나 복잡한 환경에서는 Azure의 전문 로깅 서비스를 사용하여 중앙 집중식으로 오류를 수집하고 분석할 수 있습니다. (HTTP 액션을 통해 REST API 호출)
  • 🗒️ Excel Online (Business): 간단한 오류 로그를 스프레드시트에 기록할 때 유용합니다. (예: 테이블에 행 추가 액션)
  • 🤖 Slack / Jira: 필요한 경우 타사 협업 도구와 연동하여 오류 티켓을 자동 생성하거나 알림을 보낼 수도 있습니다.

5. 오류 처리 모범 사례 ✨

성공적인 오류 처리 자동화를 위해 몇 가지 모범 사례를 따르는 것이 좋습니다.

  • 1. 세분화된 오류 처리: 모든 오류를 한꺼번에 처리하기보다는, 특정 섹션이나 중요한 액션별로 Try-Catch 블록을 구성하여 오류의 원인을 더 명확하게 파악할 수 있도록 합니다.
  • 2. 재시도 정책 (Retry Policy): 네트워크 일시적인 오류나 API 가용성 문제와 같은 ‘일시적 오류(Transient Error)’에 대해서는 재시도 정책을 설정하여 Flow가 자동으로 다시 시도하도록 합니다. 각 액션의 ‘설정’ -> ‘재시도 정책’에서 구성할 수 있습니다.
  • 3. 중앙 집중식 로깅: 가능한 한 모든 Flow의 오류 로그를 한 곳(예: SharePoint 목록, Azure Log Analytics)에 모아 관리하여 추후 분석 및 모니터링을 용이하게 합니다.
  • 4. 적절한 알림 채널 선택: 오류의 심각도와 담당자의 업무 환경에 따라 이메일, Teams, 푸시 알림 등 가장 적합한 알림 채널을 선택합니다. 치명적인 오류는 즉시 알림이 가도록 하고, 경미한 오류는 일별/주별 요약 보고서로 대체할 수 있습니다.
  • 5. 테스트, 테스트, 또 테스트!: 실제 운영에 배포하기 전에 다양한 시나리오(성공, 실패, 예외 상황)에 대해 철저히 테스트하여 오류 처리 로직이 예상대로 작동하는지 확인합니다.

결론 🏆

Power Automate Cloud를 이용한 오류 알림 및 로깅 자동화는 단순한 편의 기능을 넘어, 여러분의 비즈니스 프로세스 자동화 시스템의 안정성과 신뢰성을 크게 향상시키는 필수적인 전략입니다. 오늘 다룬 Try-Catch-Finally 패턴과 다양한 알림/로깅 채널을 활용하여, 이제 더 이상 예상치 못한 오류에 당황하지 않고, 능동적으로 문제를 해결하며 더욱 강력한 자동화 환경을 구축하시길 바랍니다!

궁금한 점이 있다면 언제든지 댓글로 문의해주세요. 다음에도 유익한 Power Automate 팁으로 찾아오겠습니다! Happy Automating! 😊 D

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다