본문 바로가기
IT & 데이터 사이언스/이론 & 개념

[Cloud] Azure Data Factory에 대하여

by 바른 호랑이 2022. 5. 30.
728x90
반응형

안녕하세요. 바른 호랑이입니다.
이번 게시글에서는 Azure의 주요 서비스 중 하나인 Data Factory에 대해 알아볼 예정입니다.

출처 : Microsoft Learn

데이터 분석을 자동화하기위해서는 데이터의 이동을 정기적으로 일정에 맞춰 트리거 될 수 있도록 하는 것필요합니다. Azure에서는 이 과정을 진행시키는 방법의 일환으로 ADF(Azure Data Factory)서비스를 지원하고 있고, ADF는 다양한 데이터 저장소와 컴퓨팅 리소스 간 데이터 이동과 변환을 오케스트레이션하는 데이터 통합 서비스를 지원하는 것이 특징입니다. 이를 통해 서비스 사용자는 데이터 이동과 변환을 오케스트레이션하는 데이터 기반 워크플로를 만들어 ETL(또는 ELT)과정을 수행할 수 있으며, 이를 시각화하여 보다 쉽게 이해할 수 있는 형태로 구성할 수 있습니다.
여기서 오케스트레이션은 말 그대로 오케스트라를 생각하시면 되는데, 오케스트라의 중심 구성원인 지휘자가 악기를 연주하지 않고, 전체적인 음악을 이해한 상태에서 구성원들이 연주하도록 이끄는 역할을 하는 것처럼 ADF 또한 전체적인 데이터 ETL(또는 ELT)과정을 주도 및 지도합니다. ADF는 데이터를 수집하고 변환하는 기본 기능이 탑재되어 있다는 점에서 지휘자와 차이를 보이기는 하지만 다른 서비스(예시 : 변환 쿼리를 Databricks)가 실제 필요한 작업을 수행하도록 지시한다는 점에서 공통적인 요소를 가진다고 할 수 있습니다.
ADF는 일반적으로 알려져있는 원본 데이터 → 데이터 정리 및 변환 프로세스 또는 데이터 확대 및 준비 프로세스 → 통합된 데이터를 분석유형에 맞게 데이터 플랫폼 서비스에 저장 이라는 일정 패턴을 따라 분석을 진행하는데, 이는 추출, 변환, 로드(ETL : Extract, Transform, Load)라는 패턴으로 프로세스를 자동화하는 것이 가능합니다.

 

1. 추출(Extract) : 데이터 원본에서 데이터를 끌어오는 것

- 데이터 원본 정의 : 리소스 그룹, 구독 및 키 또는 비밀과 같은 ID정보 등의 원본 정보 식별
- 데이터 정의 : 추출할 데이터 식별, DB 쿼리, 파일세트 또는 Azure Blob Storage 이름을 이용해 데이터 정의
2. 변환(Transform) : 정보의 구조와 형식을 변경하여 목표 데이터 시스템에 통합하는 것
- 데이터 변환 정의 : 열의 분할, 결합, 파생, 추가, 제거 또는 피벗이 포함되며, 원본과 데이터사의 필드를 매핑

3. 로드(Load) : 변형한 정보를 데이터 저장 시스템에 저장하는 것

- 대상 정의 : JSON, 파일 또는 Blob 형식의 데이터를 수락
- 작업 시작 : 개발 또는 테스트 환경에서 ETL작업 테스트
- 작업 모니터링 : 문제 발생시 정보를 제공할 수 있도록 사전 및 사후 모니터링 시스템을 설정

Azure는 거의 무제한으로 비정형 데이터를 처리할 수 있는 기술들을 제공함으로써 위와 같은 ETL로 통용되던 데이터 통합 패턴에서 한 걸음 더 나아가 ELT(추출, 변환 및 로드)로 다변화할 수 있게 해주었습니다. ELT는 JSON, XML, PDF 또는 이미지 등의 원래 형식으로 데이터를 저장할 수 있다는 장점을 가지며, 데이터가 원본 형식을 유지할 수 있기 때문에 시스템에서 데이터를 로드하는 시간을 단축시킬 수 있습니다. ELT와 ETL의 특징과 각각의 장단점이 잘 정리되어 있는 사이트와 요약내용을 공유드리니 해당내용도 참고하시면 좋을 것 같습니다.

 

※ ETL과 ELT

 

ETL vs ELT: 5 Critical Differences

Wondering about the differences between ETL and ELT? Learn about these 5 critical data processes in this informative blog from Integrate.io.

www.integrate.io

1. ETL(Extract, Transform, Load)

- 관계형 데이터 분석이 기본값이기에 데이터를 저장하기 전에 SQL기반 관계형 데이터로 변환하는 과정이 필요
- 이미 구조화가 완료된 데이터가 제공되면 더 빠르고 효과적이면서 안정적인 분석이 가능
- GDPR, HIPAA, CCPA와 같은 규약들에 대한 위반사항에 해당되지 않을 확률이 비교적 높음
- 수십년의 기존 분석사례 및 기술들에 대한 설명이 잘되어 있기에 개발 시 양질의 참조자료들을 구할 수 있음

2. ELT(Extract, Load, Transform)

- Data Staging 과정이 필요 없음
(Data Staging : 준비영역 또는 랜딩영역으로 데이터 처리에 사용되는 중간 저장영역)
- 데이터를 Data Lake에 저장
(Data Lake : 모든 형식의 데이터가 저장가능하여 데이터 변환과정 없이도 데이터 저장 가능)
- 가용성 측면에서 봤을때, 데이터를 즉각적으로 저장이 가능하므로 더 빠른 옵션이 될 수 있음
- ELT는 보편적으로 클라우드 기반으로 이루어지기에, 사용자가 따로 메뉴얼을 갱신하지 않아도 자동으로 관리가 가능
- 데이터를 로드하기 전까지 변형하는 과정이 없기에 데이터를 저장하는 시간이 비교적 짧음
- 구조화된 데이터와 비구조화된 데이터가 혼재되어 있고 데이터의 양이 많으면 효과적인 해결책이 될 수 있음

 

위와 같이 Azure의 다양한 서비스들을 ADF상에서도 이용할 수 있기때문에 사용자는 각각의 상황에 맞게 ETL 또는 ELT과정을 통해 데이터 통합을 진행할 수 있으며, 일반적으로 연결 및 수집 → 변환 및 보강 → 게시 → 모니터링이라는 4단계의 워크플로를 진행하여 분석을 실시합니다. 연결 및 수집 단계에서는 DB, 파일 공유, 웹 서비스 등 모든 데이터 원본을 정의하고 연결하며, 필요에 따라 중앙 위치에 데이터를 수집하는 과정을 거친 후 Databricks 및 Machine Learning과 같은 컴퓨팅 서비스를 사용하여 유지 관리가 가능하고 정해진 일정에 따라 변환, 보강하는 단계를 진행합니다.
그 후에는 비즈니스 사용자가 비즈니스 인텔리전스 도구에서 분석 엔진으로 데이터를 로드하여 게시하고, 게시를 완료한 후에는 예약된 작업과 파이프라인들의 성공률과 실패율을 모니터링하는 것으로 ADF 구성을 진행하게 됩니다.
ADF를 보다 적절히 구성하기 위해서는 ADF를 이루고 있는 핵심요소들에 대한 이해가 필요합니다. ADF는 Linked Service, 작업, 흐름제어, 매개변수라는 4가지 핵심요소들로 구성되어 있으며, 각각의 세부적인 내용은 아래와 같습니다.

 

1. Linked Service

- 개체를 만들어 연결할 수 있는 다양한 데이터 원본을 지원 / 원본에서 데이터를 수집하여 변환, 분석을 위한 데이터 준비

- 데이터 세트 개체 생성을 통해 사용해야 하는 데이터 세트(데이터 저장소 내의 데이터 구조를 의미)를 인식

2. 작업

- 데이터 복사, 매핑 데이터 흐름, 변환을 위한 저장 프로시저, 쿼리, 스크립트 실행, 트리거 등을 포함

- 파이프라인을 구성하여 데이터를 논리, 그룹화 하는 과정을 총칭

3. 흐름제어 

- 파이프라인 작업의 조율을 의미하며, 파이프라인 수준에서의 시퀀스 ,분기, 매개변수 정의의 작업연결 등을 포함

4. 매개변수

- 데이터를 읽을 때 사용할 키-값 쌍을 의미하며, 파이프라인에서 정의됨

- 정의된 매개 변수에 대한 인수는 트리거에 의한 실행 컨텍스트 또는 수동 실행 파이프라인에서 실행하는 동안 전달됨

+ 통합 런타임(Integrated Runtime)

: 작업과 Linked Service간의 연결을 설정하는데 사용되며, 작업이 실행되거나 디스패치되는 컴퓨팅 환경을 제공함. 간단하게 말하면, Linked Service와 Azure 서비스 사이의 브릿지 역할을 한다고 이해할 수 있음

 

이상으로 Azure에서 제공하는 데이터 분석 서비스 중 하나인 Azure Data Factory에 대해 알아보았습니다. Azure Data Factory는 클라우드 서비스를 활용하여 데이터 분석 워크플로를 자동화할 수 있는 대표적이면서 기본적인 서비스라고 할 수 있습니다. 데이터 분석에 관심이 있으신 분들은 해당 부분에 대해 좀 더 공부해보시는 것도 좋을 것 같습니다.

 

P.S 더 나은 개발자가 되기위해 공부중입니다. 잘못된 부분을 댓글로 남겨주시면 학습하는데 큰 도움이 될 거 같습니다.

728x90
반응형

댓글