[데이터 아키텍쳐] 아주 간단한 데이터 파이프라인 요약
데이터 파이프라인
핵심은 데이터 사이언스와 머신러닝에 쓰일 데이터를 한 곳(데이터 웨어하우스)에 모으는 작업을 수행하는 인프라 구성요소라고 할 수 있겠다.
파이프라인이 수행하는 주요 업무는 ETL
(추출-extract
, 변환-transform
, 적재-load
)라고 할 수 있겠다.
역할
수집한 데이터를 변환, 적재
서비스에서 직접 발생하는 데이터(유저 로그 등)과
써드 파티를 통해 생기는 간접 데이터(구글 애널리틱스 등)가 존재한다.
데이터 파이프라인으로써 가장 중요한 부분이 바로 이 직간접 데이터를 데이터 웨어하우스에 저장하는 부분이다.
물론, 적재 이전에 데이터가 저장하고자 하는 포맷에 맞지 않다면 이를 변환하는 과정도 필요하다.
데이터의 크기는 하루에 테라바이트, 또는 페타바이트가 쌓일 수도 있다!
대용량 데이터는 ETL의 과정에서 hadoop과 spark 등의 분산 컴퓨팅을 활용하여 효율적으로 처리할 수 있다.
ML의 흐름 자동화
서비스에 대한 유저의 로그 데이터가 쌓이면 쌓일수록 서비스 내부의 추천 시스템 등, AI 모델의 정확도를 올릴 재료가 된다.
웨어 하우스에 적재된 데이터는 배치 프로그램을 통해 자동으로 모델 학습을 진행하고,
보다 발전된 AI를 서비스 상에서 제공할 수 있다.
ELT?
ETL은 소스에서 추출
한 데이터를 변환
하여 적재
하는 순서로 프로세스가 이루어진다.
ELT는 T-L
대신 L-T
인 만큼,
데이터 웨어하우스의 내부에서 데이터를 조작하여 새로운 데이터를 만드는 프로세스로 보면 된다.
일반적으로 보다 추상화되고 요약된 데이터로 만든다.
데이터 레이크 vs 웨어하우스
레이크는 구조화, 비 구조화 데이터 모두를 아우른다.
보존 기한이 없는 모든 데이터를 원래 형태대로 보존한다.
데이터 웨어하우스보다 몇 배는 큰 스토리지!
웨어하우스는 어느정도 구조화시킨 데이터를 저장한 곳이다.
데이터 파이프라인을 만들 때 고려할 점
데이터가 작을 경우, 매번 통채로 복사해서 테이블 만들기(full refresh)
데이터 파이프라인 입력과 출력을 명확히 문서화
어느 부서에서 데이터를 입력하고, 출력하는지 반드시 체크하고 문서화하자.
이는 그 자체로 데이터가 되고, 문제 발생 시 유지보수에 도움이 된다.주기적으로 쓸모없는 데이터는 삭제
사고마다 리포트를 쓰자!
비슷한 사고가 발생하는 것을 막기 위함. 사고 원인을 이해하고 방지하기 위한 액션 아이템들의 실행이 중요하다.멱등성을 보장하는 것이 중요하다.
sql(ORM)을 사용하는 경우, 트랜잭션의 형태로 사용하자.
데이터 아키텍쳐의 이상과 현실간의 괴리
당연하지만, 현실과 이상에는 큰 괴리가 있다.
버그는 기본이고, 데이터 소스상의 이슈도 있으며,
파이프라인간의 의존도에 대한 이해도가 부족한 경우가 있다.
파이프라인 수가 늘어나면 유지보수 비용이 기하급수적으로 늘어난다.
저장소 비용이나 프로세싱에 드는 자원의 비용도 늘어난다…
클라우드 환경에서 보다 파이프라인 설계와 쿼리가 중요한 이유는,
종량제 클라우드에서는, 비효율적인 쿼리 한 줄로 수 십 달러가 날아가는 대참사가 벌어진다고 한다.
모 회사는 일주일 간 호출 된 쿼리 중 가장 비싼 쿼리로 랭킹을 발표하여 고로시를 하는 경우가 있다고 한다…