본문 바로가기
Big Data/데이터 기초

ETL과 ELT (데이터 프로세싱 아키텍처/가공 처리 과정)

by Azure Racoon 2022. 8. 3.

오늘도 Azure로운 Power Platform :D

 

데이터 엔지니어링이나 데이터 사이언티스트 직업을 가지고 계신 분들은 ETL과 ELT라는 용어에 익숙하실겁니다.

주로 데이터 프로세싱 아키텍처를 짤때 많이 등장합니다.

 

데이터 프로세싱 아키텍처는 종류도 복잡도도 다양합니다만, 핵심 패턴은 존재합니다. 그게 바로 ETLELT입니다.

 


1. ETL / ELT 란?

 

ETL : Extract - Transform - Load  |  추출 - 가공 - 로드
ELT : Extract - Load - Transform  |  추출 - 로드 - 가공

 

과거에는 ETL 방법만이 존재했습니다. 로드할 데이터 저장소에서 비정형/반정형 데이터를 처리할 수 없었기 때문이죠. 모든 데이터는 데이터 저장소에 로드 되기전 해당 데이터 저장소에 적합한 형태로 가공 및 처리된 뒤에야 로드 되어야 했습니다. Data warehouse 라고 불리는 저장소가 이 경우에 해당됩니다.

 

이후 나온 것이 ELT 방법이죠. 데이터 저장소에서 비정형/반정형 데이터 또한 다룰 수 있게 되면서 더이상 데이터를 가공/처리 한 후 저장해야할 필요가 없어졌습니다. Data lake 라 불리는 저장소가 이 경우에 해당됩니다.

 

이미지 출처: https://big2smart.com

 

어느 것이 더 나은 패턴이냐 라고 했을 때, 둘다 각자 적합한 시나리오가 있다는 것이 정답입니다.(케바케라는 것이죠.)

다만, 두 패턴을 비교했을 때 ELT가 앞서는 대표적인 카테고리가 두개 있습니다. 바로 속도비용입니다

 

속도

데이터를 가져오면서 일일히 가공한 후 로드한 뒤 로드 된 데이터를 사용하는 것보단,

데이터를 일단 전부 쌓아놓고 필요한 데이터만 끌어가 원하는 형태로 데이터를 가공해 사용하는 방법이 전체적인 데이터 프로세스 처리 시간을 월등하게 단축합니다.

 

비용

비용은 두가지 측면을 고려해 볼 수 있는데, 스토리지 비용과 트랜잭션 비용입니다.

스토리지 비용: 보통 lake가 warehouse보다 저렴합니다.

트랜잭션 비용: 데이터 프로젝트를 진행하다보면 비용의 상당한 부분을 차지하는 것이 트랜잭션 비용입니다. 즉, 얼마나 많은 데이터 이동이 발생했는지가 비용에 많은 영향을 미치죠. 이때, 일단 한번 쌓아놓고 필요할 때 필요한 만큼만 가공해서 가져가는 방법이 훨씬 저렴합니다(ELT). 그렇지 않으면 필요할 때마다 원본에서 부터 게속 끌어와야 하고, 그 때마다 비용은 계속 발생하겠죠.

 


2. 사례를 통한 설명

 

가령 ERP 시스템의 고객사별 매출 데이터를 BI보고서로 만들고자 할 때, 다음과 같은 아키텍처를 그려볼 수 있습니다.

(설명을 위해 단순화한 아키텍처이니 양해부탁드립니다.)

 

 

각 솔루션들은 모르셔도 괜찮습니다. 그저 이러한 로고를 가진 솔루션들이 로드/가공을 위해 쓰이는구나, 시각화를 위해 쓰이는구나 정도로만 받아들여주시면 됩니다.

 

고객사별 매출데이터로 시각화 보고서를 만들고자 할 때, ETL과 ELT 중 어느 방법을 선택하는 것이 더 나을까요?

물론 정답은 없습니다. 둘다 사용할 수 있죠. 다만, 저라면 ELT를 사용할 것 같습니다.

 

우선 ETL을 선택했다고 가정해보겠습니다. 다음과 같은 흐름으로 진행되겠죠.

 

1. 시각화 보고서를 개발하기 위한 데이터 모델을 설계
2. 고객 및 매출 관련 데이터를 가져와 설계한 모델에 맞춰 가공한 뒤 로드
3. 로드한 데이터로 실제 모델링 진행 후 시각화 보고서 개발

 

이때 세가지 고려사항이 생깁니다.

 

(1) 보고서 내용이 바뀌거나 추가되면 데이터를 그에 맞춰 다시 가공하고 로드해야 합니다. 가공 단계부터 다시 시작해야하는 상황이 생기는 것이죠.

원본 - [가공] - 로드 - 모델링 - 시각화

 

(2) 실제 보고서를 만들 때, 가공해서 로드한 모든 데이터를 사용하지 않게 될 수도 있습니다. 이 경우, 필요없는 데이터를 가공하고 로드한 것이 되겠죠. 즉, 낭비된 비용이 발생한 겁니다.

 

(3) 가공 전 데이터에 접근하여 다른 가공을 해봐야 하는 상황이 생길 수 있습니다. 이 경우, 가공 전 데이터를 원한다면 원본에서 부터 다시 끌어와야 합니다. 원본 데이터를 가공 한 후 로드했기 때문입니다.

[원본] - 가공 - 로드 - 모델링 - 시각화

 


 

그렇다면 ELT 방법을 선택했다고 가정해보겠습니다.

 

1. 시각화 보고서를 개발하기 위한 데이터 모델 설계

2. 고객 및 매출 관련 데이터를 가져와 우선 전부 로드

3. 1에서 설계한 모델에 맞춰 로드 된 데이터 중 필요한 데이터만 가져와 가공

4. 가공한 데이터로 실제 모델링 및 시각화 보고서 개발 진행

 

이 경우 위 같은 고려사항 발생시 시간과 비용을 단축할 수 있습니다.

 

(1) 보고서 내용이 바뀌거나 추가되면 데이터 그에 맞춰 다시 가공해야 할 경우, 위의 경우와 비교했을 때 한단계 뒤에서 시작하는 것을 볼 수 있습니다.

원본 - 로드 - [가공] - 모델링 - 시각화

 

(2) 실제 보고서를 만들 때, 일단 로드되어 있는 데이터 중 필요한 데이터만 가져와 모델링 및 시각화를 진행합니다. 낭비되는 비용이 발생하지 않습니다.

 

(3) 가공 전 데이터에 접근하여 다른 가공을 해봐야 하는 상황이 생길 수 있습니다. 이때 로드되어 있는 데이터를 확인하면 됩니다.

원본 - [로드] - 가공 - 모델링 - 시각화

 


3. 정리 및 데이터 재사용

 

"2. 사례를 통한 설명"의 두 경우를 비교했을 때 단계 하나 많고 적은 것이 무슨 큰 의미가 있을 지 감이 안오실 수도 있습니다. 

그러나 단순히 단계하나 많고 적은 것이 아닙니다. 원본 데이터를 가져와 보관하고 있다는 것은 데이터의 재사용성이 높다는 것을 의미합니다.

 

매번 원본에서 데이터를 가져와 목적에 맞게 가공한 뒤 로드해서 사용하는 경우, 그 형태로 가공된 데이터를 쓸 수 있는 상황이 아니라면 원본에 접근하여 데이터를 다시 가져와야합니다. 로드된 데이터를 재사용할 수 없죠.

또한 원본이 과거 데이터를 저장하지 않는 경우도 있습니다. 이 경우엔 데이터를 아예 가져오지 못하게 됩니다.

 

반면 한번 가져다 놓은 데이터를 필요한 때에 필요한 만큼만 가져가 가공하여 사용할 수 있다는 것은 한번 로드해놓은 데이터를 재사용 할 수 있는 것입니다.

 

재사용이 가능하다는 것은, 데이터를 다시 가져와야하는 시간과 비용이 그만큼 줄어든다는 의미입니다.

 

데이터 트랜잭션 비용은 위에서 잠시 언급했듯, 데이터 처리 시간보다는 데이터 처리량에 달려있습니다. 데이터 프로젝트 시 다루게 되는 데이터는 KB, GB 단위가 아닙니다. MG에서 TB단위입니다. 이 정도 되는 데이터가 최소 하루에 두세번씩 처리됩니다.(30분 단위마다 도는 경우도 적지 않습니다.) 그리고 그 하루가 쌓여 한달이 되고 일년이 되고 n년이 되었을 때 지출되어온 누적비용은 무시할 수 없는 액수가 됩니다. 

 

이번 포스팅에서는 속도와 비용에 초점을 맞췄지만 이외에도 ELT 방식이 갖고 있는 장점은 많습니다. 다만 실사례에서는 무조건 제안하기 무리가 있을 수 있죠. 이미 구축되어 있는 아키텍처 위에서 프로젝트가 시작하는 경우 기존 아키텍처를 무시할 수 없습니다. 때문에 실제로는 보통 greenfield 프로젝트 시 ELT 방식을 많이 추천해드리고 있고, 다른 경우엔 최대한의 시간 및 비용 절약이 가능한 아키텍처를 추천해 드리고 있습니다.

댓글