ETL 이란 ?
Extract, Transform, Load 의 약자로 데이터 웨어하우스 밖에 있는 즉, 외부에 존재하는 데이터를 가져다가 내부의 데이터 웨어 하우스에 로드하는 작업.
- Extract ( 추출 ) : 외부 데이터 소스에서 데이터를 추출.
- 데이터를 수집하는 작업.
- 데이터는 정형 데이터와 비정형 데이터가 존재하며 데이터를 수집하는 과정을 추출이라고 한다.
- 정형 데이터는 엑셀의 형태로 저장할 수 있는 데이터를 말한다.
- 비정형 데이터는 파일,웹사이트의 HTML, API 등 다양한 형태가 될 수 있다.
- Transform( 변환 ) : 데이터의 포맷을 원하는 형태로 변환
- 추출한 데이터는 다양한 구조로 구성되어 있다. 이를 분석하기 위해 일관된 데이터 형식으로 변경 시켜주는 과정.
- 변환을 통해 데이터를 효율적으로 관리하고, 검색하는 기능을 제공함으로써 데이터의 활용을 높일 수 있다.
- Load ( 적재 ) : 변환된 데이터를 최종적으로 데이터 웨어하우스로 적재
- 앞서 추출하고 변환한 데이터를 저장소에 적재.
- 여기서 저장소는 주로 MySql, Bigquery와 같은 데이터베이스이며 사무 업무를 위해 자주 사용하는 엑셀도 데이터 베이스 일종이라고 볼 수 있다.
- 로드를 통해 저장된 데이터는 분석이나 보고서 작성 등 다양한 목적으로 활용될 수 있다.
데이터 파이프라인 이라고도 부르기도 한다.
ETL은 단순히 데이터를 이동시키는 것 이상의 중요한 역할을 한다. 예를들어 데이터 정제 및 품질 관리 과정을 통해 데이터의 신뢰성을 확보하며, BI 및 데이터 분석을 위한 기반을 마련하는 중요한 작업이라고 할 수 있다.
Airflow
ETL과 관련하여 가장 많이 사용되는 오픈소스 프레임워크로 데이터 파이프라인을 구성하는 도구이다.
Directed Acyclic Graph 를 사용하여 작업의 순서와 의존성을 명확하게 정의할 수 있으며, 이를 통해 복잡한 데이터 파이프라인도 쉽게 관리할 수 있다. 또한 Airflow는 동적 파이프라인 생성, 스케줄링, 모니터링 등의 기닝을 제공하여 데이터 엔지니어링 작업의 자동화와 효울성을 크게 향상시켜준다.
Airflow의 구성요소
- 웹 서버 ( Web Server ) :
- WebServer는 사용자가 워크플로우를 시각적으로 관리하고 모니터링 할 수 있는 웹 인터페이스를 제공한다.
- Flask를 기반으로 구축되어 있으며, 워크플로우의 생성, 스케줄링, 모니터링 등 다양한 작업을 웹UI를 통해 수행할 수 있다.
- 스케줄러 ( Scheduler ) :
- 정의된 워크플로우에 따라 작업을 언제 실행할 지 결정.
- 주기적으로 데이터베이스를 플링하여 실행할 작업을 확인하고,실행 조건을 충족하는 작업을 워커에게 할당한다.
- 메타데이터 데이터베이스 ( Metadata Database ) :
- Airflow의 상태,워크플로우 구성, 작업 이력 등 모든 메타데이터를 저장한다.
- Airflow는 MySQL,SQLite, PostgreSQL 등 여러유형의 데이터 베이스를 지원한다.
- 이 데이터 베이스는 Airflow 의 중추적인 역할을 하고, 워크플로우의 실행상태, 스케줄정보, 로그 등을 저장한다.
- 실행기 ( Executor )
- 스케줄러부터 할당받은 작업을 실제로 실행하는 컴포넌트.
- 여러 종류의 실행기가 있으며, 각각 다른 환경과 요구사항에 맞게 설계되어 있다.
- 워커 ( Worker )
- 실행기에 의해 할당된 작업을 실제로 실행하는 프로세스
- DAG ( Directed Acyclic Graph ) :
- Airflow에서 워크플로우를 정의하는 핵심요소
- 작업들의 의존성과 순서를 그래프 형태로 정의한다.
- 사용자는 Python 으로 DAG를 정의하며 이를 통해 복잡한 워크플로우를 쉽게 관리하고 자동화 할 수 있다.
이처럼 다양한 구성요소들은 서로,함께 동작하여 Airflow가 효율적으로 데이터 파이프라인을 스케줄링하고, 실행하며, 모니터링을 하는데 필요한 기능을 제공하는 유용한 프레임워크 이다.
'DevCourse > 데이터 웨어하우스 관리 & BI 대시보드' 카테고리의 다른 글
Snowflake 학습환경세팅 (0) | 2024.05.11 |
---|---|
Snowflake는 무엇인가 ? (0) | 2024.05.09 |