본문 바로가기
Development/Data Engineering

ETL이란?

by _KHK 2022. 7. 8.

데이터 엔지니어가 되려고 하는 나는 가장 기본을 놓치고 있었다.

새로운 기술, 흥미로운 오픈소스를 공부하는 것 이전에 가장 중요한 ETL의 개념을 놓치고 있었다.

누군가 ETL이 뭔지 설명해달라는 물음에 제대로 답하지 못했다면 긴장해서가 아니라 잘 모르고 있는 것임을 인정해야 한다.

 

보통 데이터 엔지니어의 가장 주요한 업무는 결국 ETL이라고 생각한다.

나는 놓치고 있던 데이터 엔지니어링의 기본 중의 기본 ETL을 정리해보려고 한다.

 

여러 곳에서 ETL이란 무엇인가를 잘 설명해주고 있는데,

나는 스파크를 만들었던 개발자들이 설립한 Databricks라는 곳에서 정의되고 설명해놓은 것을 토대로 간결하게 요약해 보았다.

 

 


https://databricks.com/kr/glossary/extract-transform-load

 

ETL이란 무엇입니까? - Databricks

추출, 변환 로드(ETL)란 수많은 서로 다른 시스템에 걸쳐 데이터를 수집하고 변환하는 데 쓰이는 프로세스를 가리킵니다. ETL이 무엇이고 어떻게 작용하는지 원리를 알아보세요.

databricks.com


 

ETL이란? (Extract - Transform - Load) 

ETL -  https://databricks.com/kr/glossary/extract-transform-load

ETL이란 추출, 변환과 로드를 뜻하며 데이터 엔지니어가 다양한 소스로부터 데이터를 추출, 데이터를 사용 가능하고 믿을 수 있는 리소스로 변환, 그 데이터를 시스템에 로드하여 최종 사용자가 액세스하고 다운스트림 방식으로 사용하여 비즈니스 문제를 해결할 수 있게 처리하는 과정을 말한다.

 

ETL의 핵심은 데이터 조직이 신뢰할 수 있는 데이터를 만들어 주는 것이다.

 

비즈니스 의사 결정을 위한, 혹은 서비스 개선을 위해 필요한 데이터는 반드시 데이터 엔지니어의 손길을 꼭 거쳐야만 한다.

데이터 조직의 숨은 조력자 데이터 엔지니어의 가장 큰 역할은 바로 신뢰할 수 있는 데이터를 만들어 주는 일이 될 것이다.

 


ETL Process

추출 Extract

소스에서 데이터를 추출하는 것을 Extract라고 한다.

소스는 대개 비즈니스 시스템, API, 센서 데이터, 마케팅 툴과 트랜잭션 데이터베이스 등 여러 가지 종류로 이루어져 있다.

추출을 수행하는 방법은 크게 세 가지로 나눌 수 있다.

  1. 부분 추출 – 데이터를 얻는 가장 쉬운 방법은 레코드가 변경되면 소스 시스템이 알려주는 것.
  2. 업데이트 알림 포함을 포함한 부분 추출 - 시스템에 따라 업데이트가 발생해도 알림을 제공할 수 없는 경우가 있다. 다만 변경된 레코드를 지목하여 그러한 레코드의 추출을 제공할 수 있다.
  3. 전체 추출 - 어느 데이터가 변경되었는지 전혀 파악할 수 없는 시스템인 경우, 시스템에서 데이터를 추출할 가능성이 있는 유일한 방식은 전체 추출뿐이다. 이 방식을 취하면 마지막 추출의 사본을 같은 형식으로 추출하여 변경 사항을 확인해야 한다.

변환 Transform

소스에서 추출된 원시 데이터를 변환하여 다양한 애플리케이션에서 사용할 수 있는 형식으로 지정한다. 이 단계에서는 데이터를 정리, 매핑, 변환(대개 특정 스키마로)하여 운영 요구사항에 부합하도록 설정한다.  

보통은 데이터를 대상 데이터 소스에 바로 로드하는 것이 아니라, 준비(staging) 데이터베이스에 업로드하는 것이 보편적이다. 이 단계를 거치면 혹시나 무언가 계획에서 어긋난다 하더라도 금세 롤백할 수 있다. 이 단계를 진행하면서 규정 준수 목적으로 감사 보고서를 생성할 수도 있고, 각종 데이터 문제점을 진단하여 복구할 수도 있다.

 

원문을 퍼오면서 간략하게 요약해보려고 했는데 요약할 거리가 없다.. b

 

시스템 디자인에서 고려해야 하는 사항 중 하나인 인터페이스 디자인은 주요 객체를 파악하고, 데이터의 모양을 정하고 그에 맞는 DB를 선택하는 과정을 말한다. 이 과정이 바로 변환(Transform) 단계를 위한 설계가 될 것이다.

 

로드 Load

마지막으로, 로드 기능은 변환한 데이터를 준비 영역에서 대상 데이터베이스에 쓰는(저장) 프로세스를 말하며, 이 데이터베이스는 기존에 존재하던 것이어도 되고 아니어도 된다. 이 단계는 각각 ETL 툴을 써서, 아니면 맞춤형 코드를 써서 수행하면 된다.

 

 

 

댓글