Azure Functions(Python)를 사용한 EL 파이프라인 자동화
Source: Dev.to
문제 및 배경
데이터 엔지니어로서 저는 스토리지 간 데이터 이동을 담당했습니다. 기존 방식은 각 ADF 파이프라인에 트리거를 두어 새 블롭이 생성될 때마다 복사를 시작하도록 했습니다. 이 설정은 효율적이지도 않고, 확장성도 없으며, 유지 관리도 어려웠습니다. 재현 가능하고, 간단하며, 빠르고, 확장 가능한 아키텍처가 필요했고, 그 결과 Azure Functions 솔루션을 선택하게 되었습니다.
한눈에 보는 아키텍처

- 새 파일이 소스 Storage Account에 업로드됩니다.
- Event Grid가 BlobCreated 이벤트를 발생시킵니다.
- Azure Function (Python, Event Grid 트리거)이 이벤트를 수신합니다.
- 함수는:
- 이벤트 페이로드를 파싱하여 컨테이너/블롭을 식별합니다.
- 환경 변수를 사용해 데이터 원본과 다음 단계를 결정합니다.
- 적절한 파이프라인을 트리거합니다.
- 파이프라인이 실행되어 파일을 대상 Storage Account의 올바른 폴더로 복사하거나 ADF 파이프라인을 호출합니다.
단일 Azure Function App에 여러 함수(총 4개)가 호스팅됩니다:
- CSV 파일 복사를 위한 2개 함수
- Apache Parquet 파일 전송을 위한 1개 함수
- SQL Bak 파일을 처리하는 ADF 파이프라인을 트리거하는 1개 함수
각 함수는 기대하는 파일 유형을 받는 스토리지 컨테이너와 연결되어 있어 올바른 파이프라인이 실행됩니다.
구성 및 환경 변수
스토리지 경로와 파이프라인 이름을 하드코딩하는 대신, 대부분의 설정을 Function App의 Application Settings(환경 변수)로 관리합니다. 예:
- 소스 컨테이너
- 대상 폴더(예:
latest,archive) - 특정 “origin”에 대해 호출할 ADF 파이프라인
이 접근 방식으로 다음을 쉽게 할 수 있습니다:
- 여러 데이터 소스 지원
- 환경(dev / test / prod) 간 솔루션 전파
- 코드를 재배포하지 않고 대상 업데이트
예시: CSV 소스 Alderhey의 경우 변수 이름은 Alderhey_1_destination_folder, Alderhey_1_destination_storage_account 등으로 지정했으며, 다른 대상에도 유사한 패턴을 사용했습니다.
인증 및 네트워킹
인증은 Azure AD 앱 등록을 통해 처리되며, 해당 자격 증명은 환경 변수에 저장됩니다. 앱에는 다음 역할이 부여됩니다:
- 관련 스토리지 계정에 대한 Storage Blob Data Contributor
- ADF 인스턴스에 대한 Data Factory Contributor
환경에 따라 다음 설정도 필요할 수 있습니다:
- Function App에 대한 VNet 통합
- 스토리지와 Data Factory에 대한 프라이빗 엔드포인트
- Event Grid → Function 및 Function → Storage/ADF 트래픽을 허용하는 방화벽 규칙
이러한 네트워킹 고려 사항이 “내 환경에서는 작동한다”는 문제의 주요 원인인 경우가 많으니, 단계별로 연결성을 테스트하세요.
배포 방법
- 원하는 지역에 Azure Function App(Python 런타임)을 생성합니다.
- VS Code 또는 Azure DevOps/GitHub Actions를 통해 함수 코드를 배포합니다.
- Application Settings(환경 변수)를 구성합니다:
- 소스/대상 스토리지 세부 정보
- 파이프라인 이름 / 리소스 ID
- 앱 등록을 만들고 필요한 역할을 할당합니다.
- 스토리지 계정에 BlobCreated 이벤트에 대한 Event Grid 구독을 생성하고, Function 엔드포인트를 지정합니다.
- 테스트 파일을 업로드하고 파이프라인이 실행되어 데이터가 기대한 위치에 도착하는지 확인합니다.
교훈
이 프로젝트를 통해 Azure Functions를 활용하면 최소한의 코드로 EL 파이프라인을 구현하고, 높은 재사용성 및 완전 자동화를 달성할 수 있음을 보여주었습니다. 솔루션은 환경, 테넌트, 추가 대상에 걸쳐 이식성이 뛰어납니다. Azure Functions, Event Grid, ADF를 사용하고 아이디어를 교환하고 싶다면 언제든지 연락 주세요.
Full code: My Github
Connect with me on LinkedIn: Nafisah Badmos