데이터 파이프라인 핵심 가이드(1) - 데이터 인프라

Michael Kim·2022년 5월 31일
0

책을 읽기 전

대중 교통을 타거나 또는 오랜 시간 기다려야할 때, 시간이 아깝다는 생각을 많이 한다. 그래서 책을 사서 공부해보기로 하였다.

어떤 책을 읽는 게 좋을까? 어느 회사 면접에서 '~~데이터를 위한 파이프라인은 어떻게 설계해야할까요?' 라는 질문을 받았었다. 지금까지는 기술적인 부분을 공부했었지만, 동시에 파이프라인 전체을 볼 필요가 있겠다는 생각을 했다.

데이터 파이프라인 핵심 가이드 - 책이 나름 얉고 저자의 파이프라인 설계 노하우가 담긴 책이다. 딱 목표에 맞는 책이다.

1. 데이터 소스

먼저, 수집하고자 하는 데이터 소스를 분석해볼 필요가 있겠다.

  • 소스 시스템 소유권
    • 소스 시스템이 위치하는 곳이 어디인지를 이해하는 것은 중요하다.
    • 대부분 REST API를 통한 데이터 접근을 제공한다. 하지만, 원하는 범위의 데이터에 모두 접근 가능한지, 사이즈나 기간 제한이 있는지, 액세스 방법에 제한이 있는지 확인해야만 한다.
    • 리소스 시스템의 지연 시간 및 대역폭을 알아 보는 것 또한 필요할 수 있다. 잦은 데이터 추출의 경우, 소스 시스템에 무리한 부하(API 속도, 연결 시간)를 주지는 않는지 체크해야한다.
  • 수집 인터페이스 및 데이터 구조
    • 일반적인 데이터 수집 인터페이스
      • RDBMS 형태의 어플리케이션
        • REST API 같은 추상화 계층
        • Kafka 같은 스트림 처리 플랫폼
        • 공유 네트워크 파일 시스템(NFS)이나 S3 같은 클라우드 스토리지 버킷
        • 데이터 웨어하우스 또는 데이터 레이크
        • HDFS 또는 HBase
    • 일반적인 데이터 구조
      • REST API의 JSON
        • RDBMS의 데이터 테이블
        • RDBMS 테이블 열의 JSON
        • 반정형화된 로그 데이터
        • CSV 및 기타 플랫 파일 형식
        • kafka의 스트림 출력
        • 텍스트 및 이미지(비디오) 형태의 비정형 데이터
        • XML, HTML 마크업 같은 반정형 데이터
  • 데이터 크기
  • 데이터 클렌징 작업과 유효성 검사
    • 데이터 클렌징 작업: 소스 데이터의 품질을 개선하는 것을 의미한다.
    • 유효성 검사: 데이터가 요구하는 규격에 맞는 지 검사하는 것을 의미한다.
      • 정리는 Transform에 해당하는 과정으로, ETL의 경우 Load되기 전에 수행되지만, ELT의 경우 그대로 데이터를 로드하고 사용하기 전에 수행되는 경우도 존재한다.
      • 자주 검증하면서 어디에서 문제가 발생했는지 파악할 필요가 있다.
    • '지저분한 데이터':
      • 중복되거나 모호한 레코드
      • 고립된 레코드
      • 불완전하거나 누락된 레코드
      • 텍스트 인코딩 오류
      • 일치하지 않는 형식(ex. 대시(-)가 없는 전화번호)
      • 레이블이 잘못되었거나 지정되지 않은 데이터

2. 클라우드 데이터 웨어하우스 및 데이터 레이크

  • 클라우드가 들어서면서 웨어하우스 및 레이크를 구축하고 배포하는 것이 한층 더 쉬워졌다.
  • 데이터 웨어하우스: 데이터 분석을 위해 모아두는 데이터 저장소로, 데이터가 모델링되어있다.
  • 데이터 레이크: 웨어하우스와는 다르게 모델링되어 있지 않고, 데이터가 다양한 유형으로 저장되어 있다.

3. 데이터 수집 도구

  • 상용화된 데이터 수집 툴을 사용할 수도 있고, 코드를 구축하여 자체 프레임워크를 직접 개발하기도 한다.
  • 툴을 고르거나, 직접 개발을 할 때는 비용, 법적 사항, 보안 등을 고려해야한다.
    • 비용에는 구축하는 데에 드는 돈 뿐만 아니라, 프레임워크 또는 툴의 운영 비용, 인력, 러닝 커브 또한 고려해야한다.
    • 법적 사항 같은 경우에는 라이선스를 고려해야한다.
    • 보안의 경우에는 해당 툴에서 어떤 데이터를 수집해가는 지, 수집한 데이터를 어디에 사용하는 지 조사할 필요가 있다.

4. 데이터 변환 및 모델링 도구

  • 데이터 변환: ETL, ELT에서 T(Transform)에 해당하는 용어다. 복잡하게 새로운 속성을 만들거나, 간단하게 값의 단위를 바꾸는 작업까지 용어의 범위가 넓다.
  • 데이터 모델링: 데이터 변환의 유형으로, 어떻게 정형화시킬 것인지 정의하는 작업이다.
  • 분석용 데이터 모델은 일반적으로 SQL 또는 GUI 인터페이스를 통해 정의 및 작성된다.
  • 데이터 수집 도구처럼 비용, 법적 사항, 보안 등을 고려해야한다.

5. 워크플로 오케스트레이션 플랫폼

  • 파이프라인의 복잡성과 수가 증가한다면 워크플로 오케스트레이션 플랫폼을 도입하는 것이 좋다. 해당 플랫폼은 파이프라인에서의 스케쥴링 및 흐름을 관리해준다.
  • Apache Airflow, Luigi, AWS Glue, Kubeflow 등이 있다.
  • 파이프라인의 워크플로는 항상 방향성을 가진다. 모든 종속 작업이 완료되어야만 그 다음 작업이 실행되면서, 실행 경로와 순서가 보장되어야 한다.
  • 파이프라인의 워크플로는 비순환(Acyclic) 그래프여야 한다. 이전 작업으로 다시 돌아갈 수 없기 때문에 순환할 수 없는 형태여야 한다.
  • 이렇게 비순환 방향성을 가진 그래프를 DAG(Directed Acyclic Graph)라고 한다.
profile
정리하고 복습하고 일기도 쓰고

0개의 댓글