현대 데이터 처리 환경에는 데이터를 수집하고, 처리하는 다양한 방법이 존재한다.
다양한 방법 중 이번에 batch작업과 ETL 작업에 대해 알아보려 한다.
이들은 데이터 관리의 핵심적인 역할을 한다. 두가지 방식 모두 대량의 데이터를 효율적으로 처리하지만, 어떠한 점에서 다른부분이 있는지 알아보고자 한다.
배치란 프로세싱 작업을 매 건 마다 하는 것이 아니라 일정 시간 또는 요청 건수 처럼 특정 조건에 맞을 때 까지 요청을 쌓아놨다가 한번에 처리하는 것을 말한다.
즉, 데이터 처리 주기를 일정조건에 따라 모았다가 한번에 처리하는 방식을 배치방법의 데이터 처리라고 한다. ( 주로 시간을 기준으로 처리하는 경우가 흔한 것 같다.)
요즘은 ETL 라는 말을 많이 봐왔을 텐데 이는 Extract(추출), Transform(변환), Load(적재) 처럼 말 그대로 데이터를 추출하고, 목적에 따라 변환, 적재하는 작업을 의미한다.
간략하게 ETL 이 무엇을 의미하고, 어떤 작업을 하는지 알아보자.
각 단어들이 의미하는바는 위와 같지만 간단하게 말해 ETL 이란 원본 데이터소스로 부터 필요에 따른 데이터를 추출하여 목적에 맞게 데이터를 변환하여 데이터를 저장 또는 전송하는 흐름을 말한다.
보통 ETL 은 여러 맥락에서 사용되는 용어인데 다음과 같은상황에서 ETL 이란 용어가 사용될 수 있다.
- 주기적으로 데이터를 변환하는 작업.
- 반복적/주기적으로 데이터를 처리하는 작업.
- ETL 프레임워크 또는 소프트웨어를 말하는 경우도 있다.
- 데이터 파이프라인
ETL 작업을 위해 가장 많이 사용되는 프레임워크로는 Airbnb 에서 시작된 오픈소스 프로젝트로 Airflow이 가장 많이 사용된다.
가장 많이 사용되는 만큼 다양한 클라우드 서비스에서 해당 프레임워크를 지원하고 ( AWS,GCP ..)
ETL작업이 현대 데이터처리에서 핵심적인 역할을 하기때문에 ETL 과 관련된 SaaS ( Software as a Service) 형태로 서비스하는 경우도 많다 ( FiveTran, Stitch Data ..)
정의
Batch : 대량의 데이터를 한번에 처리하기에 적합한 방식으로, 실시간 데이터 처리를 하기엔 적합하지 않은 처리방식
ETL : ETL 과정을 포함한 데이터 처리방식이다. 다양한 데이터 소스로부터 데이터 추출 및 변환 적재를 목표로 하는 작업방식을 말한다.
목적과 사례
Batch : 대량의 데이터를 정기적으로 처리하여 결과를 얻는 것이며, 예를 들어 일일 매출 보고서 생성, 로그 파일 분석 등이 있다.
ETL : 다양한 데이터 소스에서 데이터를 통합하고, 품질을 보장하여 데이터 웨어하우스나 데이터 레이크에 적재하는 것입니다. 예를 들어, 여러 시스템에서 고객 정보를 통합하여 분석하는 경우를 들 수 있다.
처리방식
Batch : 주기적으로 실행되며, 대량의 데이터를 한 번에 처리한다. 예를 들어, 매일 자정에 실행되는 스크립트를 예로 들 수 있다.
ETL : 데이터의 추출, 변환, 적재가 포함되며, 이 과정에서 Batch 작업이 사용될 수 있습니다. ETL 프로세스는 데이터 품질 및 통합을 중시한다.
실시간 처리
Batch : 실시간 처리에 적합하지 않고, 특정 주기로 실행된다는 특징이 있다.
ETL : 실시간 ETL( 또는 ELT ) 방식을 사용할 수 있고 이는 데이터가 생성되는 즉시 반영할 수 있다.
Batch, ETL은 데이터 처리에 핵심적인 역할을 하지만 그 목적과 처리방식에 따라 차이점을 보인다.
ETL 작업 가운데 Batch작업은 하나의 작업이라고 볼 수 있지만, Batch 작업은 대량의 데이터 처리에 목적을 두고, ETL은 데이터의 통합과 품질에 중점을 둔다는 점이 다르다면 다르다고 볼 수 있을 것 같다.
개발자들이 위와 같이 데이터 정합성 보장을 위한 로직을 추가하여 데이터 정합성 체크할 수 있다.