본문 바로가기
데이터엔지니어링 기초

데이터 엔지니어링의 파이프라인 과정 (데이터 수집부터 시각화까지)

by goemgoem-i 2024. 12. 9.
반응형

데이터엔지니어링의 이것저것 여러 개념을 배우면서

어떤 순서로 작동하는 건지 헷갈리는 부분이 있어서

지금가지 경험해온 걸 바탕으로 확실하게 정리를 하고 넘어갈까 한다

 

 

 

데이터 파이프라인 프로세스

 

 

 

 

1. 데이터 수집

  • 키워드: API, 데이터 추출, Open API, Kiwoom API
  • 데이터를 다양한 소스에서 추출하는 단계
  • 파일 기반 : CSV, Excel, JSON, XML 등의 정형 데이터 파일
  • 데이터베이스 : MySQL, PostgreSQL, MongoDB 기존에 저장된 데이터베이스에서 쿼리를 통해 데이터를 가져옴

=> 3번의 데이터베이스가 따로 있지만 이미 저장 된 시스템에 저장된 데이터를 가져와야하는 경우

데이터 수집 소스로 사용하는 경우도 있음 -> docker나 airflow는 데이터 수집 단계에서 계속 유지

  • 웹 스크래핑 : HTML 페이지에서 BeautifulSoup, Selenium 등을 사용하여 데이터 추출
  • API 기반 : REST API, GraphQL API, Open API 등을 이용해 실시간 데이터를 가져옴
  • 스트리밍 데이터 : 실시간으로 데이터를 처리하는 경우 Kafka, Spark Streaming 등을 사용.

 

 

 

 

2. Docker (환경 설정)

  • 데이터 파이프라인을 실행하기 위한 환경을 설정
  • Docker를 사용해 Airflow 등 필요한 애플리케이션을 컨테이너화하여 효율적인 배포 및 관리를 수행

 

 

3.  Airflow (워크플로 자동화)

  • Airflow안에 DAG를 통해 ETL 또는 ELT 수행 가능함
  • Airflow는 데이터 파이프라인을 자동화하고 워크플로우의 모든 단계를 체계적으로 정의하며 실행하는데 사용됨

 

 

1) DAG (Directed Acyclic Graph)

  • Airflow에서 DAG은 작업(Task)들의 순서를 정의하는 구조
  • 각 Task는 데이터를 추출, 변환, 또는 적재하는 역할

 

2) ETL (Extract, Transform, Load)

  • 데이터를 소스에서 추출한 후, 변환을 수행한 다음 최종 데이터베이스로 적재합니다.
  • Airflow의 각 Task는 ETL의 단계 중 하나를 처리:
    • Extract Task: API 호출, 데이터베이스 쿼리 등을 통해 원본 데이터를 가져옴.
    • Transform Task: 데이터를 변환(예: 정제, 집계)하는 PythonOperator 또는 BashOperator 사용.
    • Load Task: 데이터를 최종 데이터 웨어하우스 또는 클라우드에 적재하는 작업.

 

3) ELT (Extract, Load, Transform)

 

  • 데이터를 먼저 적재한 후, 변환 작업을 데이터 웨어하우스에서 수행.
    • ELT 워크플로도 DAG에서 정의 가능:
      • Extract Task: 데이터를 추출하여 로컬이나 클라우드에 저장.
      • Load Task: 데이터를 변환 없이 데이터 웨어하우스에 적재(COPY 명령 등 사용)
      • Transform Task: SQL 쿼리로 변환 작업 수행 (Redshift, Snowflake 등에서 실행)

-> ETL과 ELT의 순서는 초반에 적용한다고 볼 수도 있음

-> 예를 들어 API처럼 실시간으로 가져와 바로 대시보드에 적용한 경우 변환Transform과 로드Load는 필요없음

-> 이미 구축된 데이터 파이프라인을 airflow로 옮기거나 자동화하려는 경우 필요없음

 

 

 

데이터베이스 (저장 및 관리)

  •  Redshift, 데이터 웨어하우스, Django DB, MySQL 등 데이터 수집의 작업 순서를 정의하고 자동화하는 역할 
  • 수집한 데이터를 관계형 데이터베이스 또는 데이터 웨어하우스에 저장하여 관리

 

클라우드 (데이터 저장소 및 연산)

  • GCP,  AWS 등의 클라우드 환경을 활용하여 데이터를 저장하거나 연산 작업을 수행
  • 예를 들어, AWS S3에 데이터를 저장하고, Redshift를 통해 분석을 진행

AWS의 EC2 = GCP 는 비슷한 가상서버 서비스 제공함

AWS의 S3는 스토리지 즉 데이터레이크 역할이며 , Redshift는 데이터 분석용 데이터 웨어하우스

 

 

데이터 웨어하우스 & 데이터 레이크와 ETL & ELT

데이터웨어하우스는 기본적으로 클라우드가 대세임고정비용 옵션과 가변비용 옵션 데이터 레이크  - 구조화된 데이터 + 비구조화된 레이크- 원본 그대로 저장하는 스토리지 - 데이터 웨어하

toonovel.tistory.com

 

 

 

 

시각화 (결과 표현)

  • 데이터 분석 결과를 시각화함
  • Superset이나 테블로 등 BI 도구를 활용해 대시보드 형태로 표현

 

 

반응형