Azure Functions(Python)를 사용한 EL 파이프라인 자동화

발행: (2025년 12월 9일 오후 10:45 GMT+9)
6 min read
원문: Dev.to

Source: Dev.to

문제 및 배경

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

한눈에 보는 아키텍처

Architecture diagram

  1. 새 파일이 소스 Storage Account에 업로드됩니다.
  2. Event Grid가 BlobCreated 이벤트를 발생시킵니다.
  3. Azure Function (Python, Event Grid 트리거)이 이벤트를 수신합니다.
  4. 함수는:
    • 이벤트 페이로드를 파싱하여 컨테이너/블롭을 식별합니다.
    • 환경 변수를 사용해 데이터 원본과 다음 단계를 결정합니다.
    • 적절한 파이프라인을 트리거합니다.
  5. 파이프라인이 실행되어 파일을 대상 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 트래픽을 허용하는 방화벽 규칙

이러한 네트워킹 고려 사항이 “내 환경에서는 작동한다”는 문제의 주요 원인인 경우가 많으니, 단계별로 연결성을 테스트하세요.

배포 방법

  1. 원하는 지역에 Azure Function App(Python 런타임)을 생성합니다.
  2. VS Code 또는 Azure DevOps/GitHub Actions를 통해 함수 코드를 배포합니다.
  3. Application Settings(환경 변수)를 구성합니다:
    • 소스/대상 스토리지 세부 정보
    • 파이프라인 이름 / 리소스 ID
  4. 앱 등록을 만들고 필요한 역할을 할당합니다.
  5. 스토리지 계정에 BlobCreated 이벤트에 대한 Event Grid 구독을 생성하고, Function 엔드포인트를 지정합니다.
  6. 테스트 파일을 업로드하고 파이프라인이 실행되어 데이터가 기대한 위치에 도착하는지 확인합니다.

교훈

이 프로젝트를 통해 Azure Functions를 활용하면 최소한의 코드로 EL 파이프라인을 구현하고, 높은 재사용성 및 완전 자동화를 달성할 수 있음을 보여주었습니다. 솔루션은 환경, 테넌트, 추가 대상에 걸쳐 이식성이 뛰어납니다. Azure Functions, Event Grid, ADF를 사용하고 아이디어를 교환하고 싶다면 언제든지 연락 주세요.

Full code: My Github
Connect with me on LinkedIn: Nafisah Badmos

Back to Blog

관련 글

더 보기 »