2025-07-06-재난문자 API 활용 데이터 파이프라인 미니 프로젝트
[Projects] 재난문자 API 활용 실시간 알림 시스템 구축
이 프로젝트는 Azure 클라우드 서비스의 다양한 구성 요소를 활용하여 유연하고 확장 가능한 실시간 데이터 파이프라인을 구축했다.
requests
: 외부 API 호출을 위한 라이브러리azure-storage-blob
: Blob Storage 연동을 위한 라이브러리이 미니 프로젝트는 재난문자 API라는 외부 서비스와 다양한 Azure 클라우스 서비스를 통합하는 과정에서 여러가지 기술적 어려움을 겪게 되었다. 해결하는 과정은 Functions, Event Hubs, Blob Storage등 Azure 서비스에 대한 깊이 있는 이해와 문제 해결 능력을 향상시키는 중요한 학습 경험이 되었다.
난관: 행정안전부 재난문자 API는 때때로 응답 지연이나 일시적인 오류를 발생시켰다. 또한, 예상치 못한 JSON 응답 구조 변화가 있을 경우 파싱 오류가 발생할 수 있었다.
해결:
requests
라이브러리의 timeout
옵션을 사용하여 API 호출 지연을 방지했다.
try-except
구문을 활용하여 API 호출 실패, JSON 파싱 오류 등 발생 가능한 모든 예외를 포괄적으로 처리했다.
API 응답의 ‘body’ 필드 존재 여부 및 데이터 타입(리스트 여부)을 사전에 검사하여 안정성을 높였다.
API 호출 실패 시 Teams 웹훅을 통해 즉시 알림을 보내도록 구현하여 시스템의 이상 상태를 신속하게 파악할 수 있도록 했다.
난관: 재난문자 중복 알림을 방지하기 위해 Blob Storage에 마지막 처리 ID를 저장하는 방식은 파일이 없거나, 읽기/쓰기 중 오류가 발생할 경우 시스템이 멈출 수 있는 위험이 있었다. 또한, ID가 숫자가 아닌 경우 비교 로직에서 문제가 발생할 수 있었다.
해결:
Blob Storage 연결 문자열(BlobStorageConnectionString
)이 환경 변수에 설정되지 않았을 경우를 감지하여 함수 실행을 중단하고 알림을 보내도록 했다.
컨테이너가 존재하지 않을 경우 자동으로 생성하는 로직을 추가하여 초기 설정의 편의성을 높였다.
Blob 파일이 존재하지 않거나, ID 로드 중 오류 발생 시에도 함수가 비정상 종료되지 않고 초기값으로 진행되도록 예외 처리했다.
메시지 ID(SN)를 비교하기 전에 int()
로 변환하여 숫자 비교의 안정성을 확보하고, 변환 실패 시 해당 메시지를 건너뛰도록 처리했다.
난관: local.settings.json
에 정의된 환경 변수들이 Azure Functions App의 ‘애플리케이션 설정’으로 정확하게 업로드되지 않거나, EventHubName
, EventHubConnectionString
, AzureWebHookUrl
등의 이름이 코드와 function.json
(Python V2 앱 모델에서는 데코레이터 매개변수) 간에 불일치하여 발생하는 문제가 있었다.
해결:
VS Code의 Azure Functions 확장 기능을 활용하여 local.settings.json
의 설정을 Azure에 정확하게 업로드했다.
환경 변수 이름을 os.environ.get("변수명")
으로 가져올 때, 해당 변수가 설정되지 않았을 경우를 대비하여 오류 로깅 및 Teams 알림을 추가했다.
Event Hubs 이름(EventHubName
)과 연결 문자열(EventHubConnection
), 웹훅 URL(AzureWebHookUrl
)을 local.settings.json
에 명확히 정의하고, 코드의 데코레이터 및 환경 변수 호출 부분에서 이 이름들을 정확히 일치시켰다.
이 프로젝트는 현재 실시간 재난문자 알림이라는 핵심 기능을 성공적으로 구현했다. 하지만 수집된 데이터를 더욱 깊이 있게 분석하고 활용하며, 시스템의 유연성을 높이기 위한 다양한 발전 방향을 계획하고 있다.
Azure Stream Analytics 연동: Event Hubs로 수집된 재난문자 데이터를 Azure Stream Analytics로 전달하여, 실시간으로 특정 키워드 출현 빈도, 지역별 재난문자 발생량, 유형별 트렌드 등을 분석하고 집계할 계획이다.
Power BI 대시보드 구축: Stream Analytics의 분석 결과를 Power BI 대시보드와 연동하여, 재난문자 발생 현황, 유형별 분포, 시간대별 트렌드 등을 실시간으로 시각화할 예정이다. 이는 운영팀이 한눈에 재난 상황을 파악하는 데 큰 도움이 될 것이다.
사용자 맞춤 알림: 특정 지역이나 재난 유형에 대한 맞춤 알림을 받을 수 있도록 사용자 설정 기능을 추가할 계획이다.
다양한 알림 채널 연동: Teams 외에 SMS, 이메일, 모바일 푸시 알림 등 다양한 채널로 알림을 확장한다.
AI/ML 기반 분석: 재난문자 텍스트의 감성 분석, 이상 징후 패턴 예측 등 머신러닝 기반의 고급 분석 기능을 도입하여 알림의 정확성과 통찰력을 높이는 방안을 검토한다.
[Projects] 재난문자 API 활용 실시간 알림 시스템 구축
1. 서론 : 왜 Azure Stream Analytics인가 ?
Azure Event Hubs: 대규모 실시간 데이터 스트리밍의 핵심 허브
### [MicroSoft Data School] Azure Functions : 서버리스 기반의 효율적인데이터 수집 및 파이프라인 트리거
1. 프로젝트 개요 : 데이터로 이해하는 서울시 열섬 현상 지구 온난화와 도시화가 가속화되면서, ‘열섬 현상’(Urban Heat Island)은 서울시를 비롯한 대도시의 주요 환경 문제로 부상하고 있다. 나는는 Microsoft Data School 과정에서 팀원들과 함께 서울...
Power BI란?
111
#블로그
1. 목표 Azure에서 가상 머신을 생성하고, WordPress를 설치하여 간단한 웹사이트를 띄우는 실습을 진행
##1. 실습 개요