코딩못하는사람

데이터 파이프라인 및 데이터 flow 본문

데이터 엔지니어링

데이터 파이프라인 및 데이터 flow

공부절대안함 2022. 2. 9. 22:07

서비스 기업에서는 데이터 기반 의사결정(Data-Driven)이 중요하게 자리 잡았다.

데이터가 부족했을 때는 리더의 경험과 감에 의해 의사결정을 했다면, Data-Driven은 데이터를 기반으로 핵심 의사결정을 하는 것을 말한다.

 

하드웨어가 발달하고 클라우드(AWS,Azure 등)가 발달하면서 데이터를 저장할 수 있는 공간을 손쉽게 제공해준다.

따라서 서비스에서 유저가 일으키는 이벤트(클릭, 스크롤 등) 뿐만 아니라 서버가 남기는 로그 데이터같은 많은 데이터를 저장할 수 있게 된다. 또한 데이터 분석 툴도 많이 나와있기 때문에 Data-Driven에 큰 도움을 준다.

 

데이터 파이프라인이란?

서비스를 운영하며 생기는 많은 데이터를 무사히 저장소에 저장하기 위해 여러 서버 컴퓨터가 작업을 한다.

데이터를 생성해서 무사히 저장하기 까지 일련의 과정, 데이터를 필요한 곳으로 옮기는 과정을 데이터 파이프라인이라고 한다.

 

언제 필요할까?

  • 다양한 데이터 소스들로부터 많은 데이터를 생성하고 저장하는 서비스
  • 데이터 사일로: 각 영역의 데이터가 서로 고립되어 있는 경우
  • 실시간 혹은 높은 수준의 데이터 분석이 필요한 비즈니스 모델일 경우
  • 클라우드 환경으로 데이터를 저장할 경우

 

https://maily.so/grabnews/posts/ecaebe

데이터 파이프라인은 크게 이러한 과정으로 나눌 수 있다.

 

1. 데이터 생성

기업에서 관리하는 데이터는 서비스 운영에 필요한 데이터+ 로그 데이터로 구성된다.

서비스 데이터

보통 서비스 데이터는 DB에 논리적으로 저장되고 파이프라인을 따로 거치지 않는다.

생성 속도가 빠르지 않으며 오히려 데이터의 보안과 성능에 신경을 써야 한다.

 

로그 데이터

로그 데이터는 서비스를 운영하면서 생기는 모든 행위를 기록으로 남긴 데이터이다. 스크롤,클릭,머무르기 등등 여러 이벤트가 포함된다. 한명의 유저가 잠깐 서비스를 사용해도 수십개의 로그가 쌓이기 때문에 트래픽에 유연해야 한다.

데이터 파이프라인은 주로 로그 데이터를 다룬다고 보면 된다.

 

데이터를 생성한다는 것은 각 도메인을 맡은 개발자가 데이터를 생성해서 서버로 전송하는 코드를 짠다는 것이다.

데이터는 저장되는 서비스에 따라 데이터의 형식이 다라진다.

https://maily.so/grabnews/posts/117cec

Google Analytics나 Amplitude 같이 SAAS 형태로 제공되는 분석 툴의 경우 그곳에서 요구하는 데이터 형식에 맞게 코드를 새롭게 짜는 과정이 필요하다. 서드 파티 툴과 함께 자체적으로 데이터를 관리하기 어렵기 때문에 데이터를 생성할때도 아키텍처를 잘 설계해서 관리해야 한다고 한다.

 

참고) CDP(Customer Data Platform): 한 번의 데이터 생성만으로 다양한 데이터 저장소에 맞는 형식으로 저장

 

2. 데이터 수집

SAAS는 트래픽에 관계없이 안전하게 데이터를 저장해주는 장점이 있지만, 커스터마이징이 불편하고 원하는 형태로 데이터를 가공하고 분석하는데에 한계가 있다. 또한 ad block같은 프로그램을 사용하게 되면 데이터 손실이 발생하게 된다. 따라서 규모가 있는 IT 회사는 자체적으로 데이터 인프라를 구축한다.

https://maily.so/grabnews/posts/6fc6eb

서비스에서 발생하는 데이터는 바로 DB에 저장되는 것이 아니라 수집 서버를 거치게 된다.

수집서버는 데이터가 흐르는 미들웨어라고 생각하면 된다. 이 수집 서버를 거쳐서 데이터베이스에 저장시키는 경우가 있고 아니면 데이터를 가공하는 서버로 전달하기도 한다. 보통 데이터의 가공된 정도(비정형, 정형)에 따라 달라진다.

 

수집 서버는 트래픽을 견딜 수 있도록 설계되어야 하고 목적지로 데이터를 전송할때까지 잘 보관해야 하기 때문에 데이터 엔지니어가 가장 신경써야 하는 부분이다.

 

개발자가 대표적으로 많이 쓰는 수집 서버 솔루션으로 AWS의 Kinesis, Apache의 Kafka 등이 있다. 혹은 개발자들이 더 손쉽게 데이터를 관리할 수 있도록 도와주는 Segment 이벤트 콜렉터가 있다.


3. 데이터 가공 후 저장(ETL)

https://maily.so/grabnews/posts/57a0a8

 

Extract, Transform, Load 약자로 데이터 소스들을 관리하기 쉽게 한 군데로 취합하는 프로세스.

ETL 프로세스를 자동화 할 수 있도록 

대표적으로 FiveTran, Panoply 등이 있으며 더 로우 레벨로 개발하는 대신 확장성이 높은 Airflow가 업계의 표준이 되고 있다.

Extract

산발적으로 흩어져 있는 데이터 소스로부터 데이터를 추출하는 과정. 보통 클라우드 서비스에서 손쉽게 데이터를 추출하도록 자동화 되어 있다.

 

Transform

데이터의 가공 단계. 데이터는 각각의 데이터베이스에 다르게 저장되어 있으므로 한 군데 모으기 위해서는 데이터를 변형해주어야 한다.데이터의 목적성에 맞게 필터링하는 과정이다.

보통 비정형 데이터-> 정형 데이터로 가공하는 작업이 있다.

 

Load

최종적으로 데이터 변형이 완료되면 데이터 웨어하우스(DW)에 적재(Load)하는 과정

데이터 웨어하우스는 규칙적(Relational)으로 데이터를 저장하도록 돕는 일종의 데이터베이스로 대용량의 데이터를 관리하기에 최적화된 데이터베이스이다.

최종적으로 데이터 분석가, 사이언티스트, 머신러닝 엔지니어 등이 데이터 웨어하우스에 저장된 데이터를 사용한다고 보면 된다. 데이터 웨어하우스에 데이터를 안전하게 적재하는 작업은 데이터 엔지니어가 맡는다.

 

+ELT?

https://maily.so/grabnews/posts/57a0a8

최근에는 ELT 프로세스가 주목받고 있다고 한다.

Transform 과정은 비용이 큰 작업이기 때문에 데이터를 우선 적재한 후에 필요에 따라서 Transform을 하는 ELT 과정이 인기를 끌고 있다. 이렇게 데이터를 한 곳에 Transform 과정 전에 저장하는 공간을 Data Lake 라고 한다.


4. 데이터 시각화(BI)

데이터가 중요해지면서 데이터 시각화를 편리하게 지원해주는 도구들이 많이 늘어났다. 이때 데이터 시각화 템플릿과 분석할 수 있는 환경을 제공해주는 도구를 Business Intelligence(BI)이라고 한다.

보통 BI를 기존 데이터 소스와 연동하는 것까지 데이터 엔지니어가 책임지게 된다.

 

 

고려해야 할 것

데이터를 저장하는 과정이 복잡한 이유는 데이터가 누수되지 않고 안전하게 저장되어야 하기 때문이다.

많은 사용자가 있는 서비스는 매 초마다 수천,수만의 데이터가 생성되는데 이 데이터들이 저장소(data lake,data warehouse)등에 안전하게 저장되기 위해서는 여러 컴퓨터가 협력해야 한다.

 

트래픽이 높은 서비스는 내부적으로 MSA 형태로 설계되어 있기 때문에 각각 다른 데이터 소스를 사용하는 경우가 있다. 따라서 데이터 소스에 따라서 어떻게 효율적으로 데이터를 가져올 지 고민해야 한다.

예를 들어

  • 1) 데이터 소스가 어떤 형태(RDB? NoSQL? 혹은 파일?)고 어떻게 가져오는게 가장 최적화된 방법일까?
  • 2) 한 번에 가져오는 데이터양이 너무 많아서 처리 속도 혹은 메모리에 문제는 없나? 있다면 어떻게 해결해야 할까?
  • 3) 데이터 소스가 서비스 DB인 경우, 부하를 주지 않으면서 빠르게 데이터를 가져오려면 어떻게 해야 할까?
  • 4) 서비스 DB에서 UPDATE, DELETE가 수행되어도 일관성 있게 데이터를 가져오려면 어떻게 해야 할까?
  • 5) 파이프라인을 재 실행해도 데이터를 멱등하게 수집하려면 어떻게 해야 할까?

데이터 파이프라인을 구축하는 데이터 엔지니어는 역할별로 데이터를 처리하는 서버 컴퓨터를 관리하고 데이터를 분석할 수 있는 형태로 가공하고 시각화하는 작업을 한다.

소규모의 서비스에서는 SAAS 형태의 분석 툴로 충분하지만 규모가 크다면 직접 데이터 환경을 구축하는 것이 경제성,데이터 정합성 측면에서 좋다고 한다.

 

공부한 곳

https://maily.so/grabnews/posts/ecaebe

https://tech.socarcorp.kr/data/2021/03/24/what-socar-data-engineering-team-does.html

Comments