안녕하세요! 🚀 비즈니스 프로세스 자동화의 핵심, 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 IDworkflow().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 구축
-
새 Cloud Flow 생성: ‘수동으로 흐름 트리거’를 선택하여 시작합니다. (테스트 용이)
-
‘Try’ 블록 추가:
- ‘새 단계’ -> ‘작업’ 탭 -> ‘범위’ 액션을 검색하여 추가합니다. 이름을
Try 블록
으로 변경합니다. Try 블록
내부에 실패 가능성이 있는 액션들을 추가합니다.- 예시:
HTTP
액션을 추가하고, 존재하지 않는 URL(예:http://nonexistent.url/api
)을 입력하여 강제로 실패를 유도할 수 있습니다. - API 호출이 성공했을 때의 로직(예:
Compose
액션으로 “API 호출 성공!”)도 함께 넣어줍니다.
- 예시:
✅ 트리거: 수동으로 흐름 트리거 📦 Try 블록 🌐 HTTP (실패 유도: Method: GET, URI: http://nonexistent.url/api) 📝 Compose (API 호출 성공 시: "API 호출 성공!")
- ‘새 단계’ -> ‘작업’ 탭 -> ‘범위’ 액션을 검색하여 추가합니다. 이름을
-
‘Catch’ 블록 추가:
- 새 ‘범위’ 액션을 추가하고 이름을
Catch 블록
으로 변경합니다. - 가장 중요:
Catch 블록
의 우측 상단 ‘…’ 클릭 -> ‘실행 후 구성’을 선택합니다. Try 블록
이 ‘실패한 경우’ 만 체크하고 ‘완료’를 클릭합니다.
📦 Catch 블록 (실행 후 구성: Try 블록이 실패한 경우)
- 새 ‘범위’ 액션을 추가하고 이름을
-
‘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)
```
-
‘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