오늘날 기업들은 데이터베이스, 웹사이트, SaaS 애플리케이션, 분석 도구 등 그 어느 때보다 많은 데이터 소스와 형식에 액세스할 수 있습니다. 하지만 안타깝게도 기업이 이러한 데이터를 저장하는 방식 때문에 그 안에 숨겨진 가치 있는 인사이트를 추출하기 어렵습니다. 특히 데이터를 기반으로 한 더 나은 비즈니스 의사결정을 하고자 할 때 더욱 그렇죠.
Google 애널리틱스나 Mixpanel과 같은 표준 분석 솔루션이 도움이 될 수 있지만, 데이터 분석 용량을 초과하는 경우가 많습니다. 이 시점에서는 데이터 통합 레이어 를 기반으로 하는 맞춤형 비즈니스 인텔리전스 (BI) 솔루션의 구축을 고려해 봐야 합니다.
1970년대에 처음 등장한 ETL은 여전히 엔터프라이즈 데이터 통합에 가장 널리 사용되는 방법입니다. 그렇다면 ETL 이란 정확히 무엇이며 어떻게 작동할까요? 이 문서에서는 ETL의 정의와 조직이 ETL을 통해 어떤 이점을 얻을 수 있는지 자세히 설명합니다.
ETL 이란 무엇인가?
ETL은 'Extract (추출)', 'Transform (변환, 가공)', 'Load (로드)'의 머리글자를 딴 것입니다. ETL은 다양한 소스 시스템 의 데이터를 단일 통합 데이터 저장소 (예: 데이터 웨어하우스 또는 데이터 레이크)로 수집하고 처리하여 훨씬 쉽게 분석할 수 있도록 합니다.
이 섹션에서는 ETL의 추출, 변환 및 로드 프로세스의 각 부분을 자세히 살펴보겠습니다.
추출 (Extract)
데이터 추출 은 하나 이상의 여러 소스에서 데이터를 가져오는 작업입니다. ETL의 추출 단계에서는 다음과 같은 다양한 데이터 소스를 처리할 수 있습니다:
-
관계형 및 비관계형 데이터베이스
-
플랫 파일 (예: XML, JSON, CSV, Microsoft Excel 스프레드시트 등)
-
CRM (고객 관계 관리) 및 ERP (전사적 자원 관리) 시스템과 같은 SaaS 애플리케이션
-
API (애플리케이션 프로그래밍 인터페이스)
-
웹사이트
-
분석 및 모니터링 툴
-
시스템 로그 및 메타데이터
추출하는 방식에 있어서 배치 ETL과 실시간 ETL (스트리밍 ETL이라고도 함)의 두 가지 범주로 나눌 수 있습니다. 배치 ETL은 지정된 시간 간격으로만 소스에서 데이터를 추출합니다. 스트리밍 ETL을 사용하면 데이터가 추출할 수 있게 되는 즉시 ETL 파이프라인을 통과합니다.
변환 (Transform)
추출된 데이터가 바로 사용할 수 있는 정확한 형식인 경우는 매우 드믑니다. 아마도 ETL을 수행하기 위해 다음과 같은 작업을 해야할 것입니다:
-
비정형 데이터 를 정형 형식으로 재정렬합니다.
-
추출한 데이터를 몇 개의 필드로만 제한합니다.
-
모든 열이 특정 순서가 되도록 데이터를 정렬합니다.
-
여러 테이블을 함께 조인합니다.
-
데이터를 정리하여 중복되거나 오래된 레코드를 제거합니다.
이러한 모든 변경 사항과 그 이상의 작업이 ETL의 변환 단계에서 이루어집니다. 데이터 정리 및 집계부터 필터링 및 유효성 검사에 이르기까지 다양한 유형의 데이터 변환을 실행할 수 있는 것입니다.
로드 (Load)
마지막 ETL 단계로 서, 위의 프로세스를 통해 데이터를 변환, 정렬, 정리, 유효성 검사 및 준비를 다 마쳤다면 어딘가의 데이터 저장소에 로드해야 합니다. 가장 일반적인 대상 데이터베이스는 BI 및 분석 시스템과 함께 작동하도록 설계된 중앙 집중식 리포지토리인 통합 데이터 웨어하우스 입니다.
데이터 웨어하우스 를 온프레미스에서 호스팅할 수도 있지만, 가장 널리 사용되는 클라우드 데이터 웨어하우스 솔루션은 Google BigQuery와 Amazon Redshift 두 가지에 불과합니다. 또 다른 일반적인 대상 시스템은 아직 정리, 구조화 및 변환되지 않은 '정제되지 않은' 데이터를 저장하는 데 사용되는 리포지토리인 데이터 레이크 입니다.
관련 참고글: ETL vs ELT
데이터 웨어하우스 에서 ETL을 구현할 수 있습니다
ETL 프로세스를 통해 데이터를 데이터 웨어하우스 로 이동하는 경우, 각 단계를 분리된 레이어로 표현할 수 있습니다:
・Mirror/Raw (미러/원본) layer
이 계층은 로직이나 보강이 없는 소스 파일 또는 테이블의 복사본입니다. 이 프로세스는 소스 데이터 를 복사하여 대상 미러 테이블에 추가하고, 이 테이블은 변환할 준비가 된 원본 데이터가 되어집니다.
・Staging (스테이징) layer
미러 테이블의 원본 데이터가 변환되면 모든 변환은 스테이징 테이블에 격납됩니다. 이 테이블에는 진행 중인 ETL 작업에서 증가분 부분에 대한 최종 데이터 형태가 보관됩니다.
・Schema (스키마) layer
최종적인 대상(Destination) 테이블로서 정리, 보강 및 변환 후 최종 형태의 모든 데이터를 포함하는 테이블입니다.
・Aggregating (집계) layer
경우에 따라 전체 데이터 집합에서 일별 또는 스토어 수준으로 데이터를 집계하는 것이 유용할 수 있습니다. 이렇게 하면 보고서 성능을 개선하고, 비즈니스 논리를 추가하여 측정값을 계산할 수 있으며, 보고서 개발자가 데이터를 더 쉽게 이해할 수 있습니다.
ETL은 왜 필요한가?
ETL은 데이터 추출 및 준비에 소요되는 시간을 크게 절약해 주므로, 비즈니스 분석에 더 많은 시간을 할애할 수 있는 것입니다. 또한 ETL을 실행하는 것은 건전한 데이터 관리 워크플로우의 일부로서, 높은 데이터 품질, 가용성 및 안정성을 보장합니다.
ETL의 세 가지 주요 구성 요소는 각각 전용 데이터 흐름에서 단 한 번만 실행하는 것만의 노력으로 노동시간과 개발리소스를 크게 절약할 수 있습니다:
Extract (추출)
"사슬은 가장 약한 고리만큼만 강하다 (a chain is only as strong as its weakest link)"는 말을 떠올려보세요. ETL에서는 첫 번째 링크가 사슬의 강도를 결정합니다. 추출 단계에서는 사용할 데이터 원본, 각 원본의 새로 고침 빈도 (속도), 원본 간의 우선순위 (추출 순서)를 결정하며, 이 모든 것이 최종 비즈니스 인사이트를 얻는 시간에 큰 영향을 미칩니다.
Transform (변환)
추출 후, 변환 프로세스를 통해 초기 데이터 늪에 명확성과 질서를 부여합니다. 날짜와 시간은 단일 형식으로 결합되고 문자열은 실제 기본 의미로 파싱됩니다. 위치 데이터는 좌표, 우편 번호 또는 도시/국가로 변환됩니다. 또한 변환 단계에서는 측정값을 합산, 반올림, 평균화하며, 쓸모없는 데이터와 오류를 삭제하거나 나중에 검사할 수 있도록 제외해 놓습니다. 또한 개인 식별 정보(PII)를 마스킹하여 GDPR, CCPA 및 기타 개인정보보호 요구 사항을 준수할 수 있습니다.
Load (로드)
마지막 단계에서는 첫 번째 단계와 마찬가지로 ETL이 타겟과 새로 고침 빈도를 결정합니다. 또한 로드 단계에서는 로드를 점진적으로 수행할지, 아니면 새로운 데이터 배치에 대해 '업서트'(upsert: 기존 데이터를 업데이트하고 새 데이터를 삽입하는 작업)가 필요한지도 결정합니다.
최신 ETL이 비즈니스에 어떤 도움이 될까요?
'빅 데이터'란 규모와 양뿐만 아니라 영향력, 가능한 해석, 사용 사례 등 그 '빅'이라는 이름에 걸맞은 진정한 의미의 데이터라고 할 수 있는 것입니다. 현대 조직의 각 부서에는 대량의 데이터에서 각자의 입맛에 맞는 고유한 인사이트가 필요합니다. 예를 들어:
-
영업팀은 잠재 고객에 대한 정확하고 고품질의 정보가 필요합니다.
-
마케팅 팀은 캠페인의 전환율을 평가하고 향후 전략을 기획해야 합니다.
-
고객 성공 팀은 문제를 해결하고 고객 서비스를 개선하기 위해 고객 데이터 를 더 파고들어가길 원합니다.
ETL은 직원들이 필요로 하는 데이터를 추출하고 준비함으로써 이러한 문제를 해결하는 데 도움을 줄 수 있습니다. ETL을 사용하면 엔터프라이즈 데이터에 대한 보고 및 분석 워크플로우를 훨씬 더 간단하고, 빠르고, 효율적으로 실행할 수 있습니다.
이러한 다양한 요구 사항을 충족하는 과정에서 ETL은 데이터 거버넌스 및 데이터 민주주의를 유지하는 환경을 조성하는 데도 도움이 됩니다. 데이터 거버넌스 (Data governance)는 가용성, 사용성, 무결성, 보안을 포함한 엔터프라이즈 데이터의 전반적인 관리를 뜻합니다. 데이터 민주주의 (Data democracy)를 통해 정교한 데이터 분석이 필요한 회사 내 모든 사람이 데이터에 액세스할 수 있습니다. ETL은 가파른 학습 곡선을 줄이고, 사람들이 올바른 질문을 하고, 얻은 답을 명확히 할 수 있습니다.
ETL 작동 방식
이 섹션에서는 ETL 프로세스의 세 단계를 각각 좀 더 자세히 살펴보겠습니다.
스크립트 (즉, 사용자 지정 DIY 코드)를 사용하여 ETL을 구현하거나 전용 ETL툴을 사용할 수 있습니다. ETL 시스템은 다음과 같은 여러 가지 중요한 기능을 수행합니다:
- 구문 분석/정제 (Parsing/Cleansing): 애플리케이션에서 생성된 데이터는 JSON, XML 또는 CSV와 같은 다양한 형식일 수 있습니다. 구문 분석 단계에서는 데이터를 헤더, 열, 행이 있는 테이블 형식으로 매핑한 다음 지정된 필드를 추출합니다.
- 데이터 보강 (Data enrichment): 분석을 위해 데이터를 준비하려면 일반적으로 전문 지식을 습득하고, 불일치점 내역을 분석 해결하고, 버그를 수정하는 등 특정 데이터 보강 단계가 필요합니다.
- 속도 설정 (Setting velocity): '속도'는 데이터 로드 빈도, 즉 새 데이터 삽입 및 기존 데이터 업데이트를 의미합니다.
- 데이터 유효성 검사 (Data validation): 데이터가 비어 있거나 손상되었거나 중요한 요소가 누락된 경우가 있습니다. 데이터 유효성 검사 중에 ETL은 이러한 경우를 발견하고 전체 프로세스를 중지할지, 데이터를 건너뛸지 또는 사람이 검사할 수 있도록 데이터를 따로 보관할지 여부를 결정합니다.
원시 데이터 추출
ETL을 진행하기 위한 데이터 추출에는 다음 네 단계가 포함됩니다:
추출할 데이터 선정
데이터 추출의 첫 번째 단계는 데이터 웨어하우스 에 통합하려는 데이터 소스를 선정하는 것입니다. 이러한 소스는 MySQL과 같은 관계형 SQL 데이터베이스 또는 MongoDB 또는 Cassandra와 같은 비관계형 NoSQL 데이터베이스에서 가져올 수 있습니다. 또한 Salesforce와 같은 SaaS 플랫폼이나 기타 애플리케이션에서 가져온 정보일 수도 있습니다. 데이터 소스를 식별한 후에는 추출하려는 특정 데이터 필드를 결정해야 합니다.
데이터 추출의 크기 추정
데이터 추출 의 크기가 중요합니다. 50메가바이트, 50기가바이트 또는 50페타바이트의 데이터를 추출할 것인가요? 데이터 양이 많을수록 다른 ETL 전략이 필요합니다. 예를 들어, 추출 크기가 작은 일 단위가 아닌 월 단위로 집계하여 더 큰 데이터 집합을 더욱 관리하기 쉽게 만들 수 있습니다. 또는 더 큰 데이터 집합을 처리할 수 있도록 하드웨어를 업그레이드할 수도 있습니다.
추출 방법의 선택
데이터 웨어하우스는 가장 정확한 보고서를 위해 지속적으로 업데이트되어야 하므로, 데이터 추출은 분 단위로 수행해야 하는 지속적인 프로세스입니다. 정보를 추출하는 주요 방법에는 세 가지가 포함될 수 있습니다:
-
업데이트 알림 (Update notifications): 가장 선호되는 추출 방법은 업데이트 알림입니다. 소스 시스템 에서 레코드 중 하나가 변경되어 알림을 보내면 데이터 웨어하우스 가 새로운 정보만 업데이트합니다.
-
증분 추출 (Incremental extraction): 업데이 알림을 사용할 수 없는 경우 사용할 수 있는 두 번째 방법은 증분 추출입니다. 여기에는 변경된 레코드를 식별하고 해당 레코드만 추출하는 작업이 포함됩니다. 증분 추출은 삭제된 레코드를 항상 식별할 수 없다는 잠재적인 단점이 있습니다.
-
전체 추출 (Full extraction): 처음 두 가지 방법이 작동하지 않는 경우 전체 추출을 통해 모든 데이터를 완전히 업데이트해야 합니다. 이 방법은 소규모 데이터 세트에서만 실행 가능한 옵션이라는 점에 유의하세요.
SaaS 플랫폼의 평가
기업들은 이전에는 회계 및 기타 기록 관리를 위해 사내에서 개발한 인하우스 애플리케이션에 의존했습니다. 이러한 애플리케이션은 온사이트 서버에서 유지 관리하는 OLTP 트랜잭션 데이터베이스 를 사용했습니다. 오늘날에는 더 많은 기업이 Google 애널리틱스, HubSpot, Salesforce와 같은 SaaS 플랫폼을 사용합니다. 이러한 플랫폼 중 하나에서 데이터를 가져오려면 해당 플랫폼의 고유 API와 통합되는 솔루션이 필요합니다. Integrate.io가 그러한 ETL 툴 중 하나입니다.
Integrate.io와 같은 클라우드 기반 ETL 툴 은 다음과 같은 방법으로 인기 있는 SaaS API에서 데이터를 추출합니다:
-
가장 인기 있는 SaaS 애플리케이션을 위한 즉시 사용 가능한 API 통합을 제공합니다. Integrate.io는 100개 이상의 즉시 사용 가능한 API 커넥터를 제공합니다.
-
복잡한 REST API를 활용할 수 있으며, 심지어 SOAP를 REST로 자동 변환할 수도 있습니다.
-
다양한 SaaS API에 있는 사용자 지정 리소스 및 필드, 그리고 수많은 기본 제공 리소스 엔드포인트를 처리하기 위한 방법론을 제시합니다.
-
실패한 데이터 연결에 대한 지속적인 업데이트와 수정 사항을 제공합니다. 예를 들어, Salesforce는 사용자에게 알리지 않고 API를 업데이트할 수 있으며, 그 결과 해결책을 찾기 위해 애를 먹게 됩니다. Integrate.io와 같은 ETL 툴 은 SaaS 개발자와의 협업을 하고 있기 때문에 이러한 종류의 업데이트가 실행되기 전에 사전 알림을 받으므로 원치 않는 돌발 상황을 방지할 수 있습니다.
데이터 변환
기존 ETL 전략에서 스테이징 영역 (추출 후)에서 발생하는 데이터 변환을 "다중 데이터 변환 (multistage data transformation)"이라고 합니다. ELT에서는 데이터를 데이터 웨어하우스 에 로드한 후에 발생하는 데이터 변환을 "웨어하우스 내 데이터 변환 (in-warehouse data transformation)"이라고 합니다.
ETL 또는 ELT 중 어느 쪽을 선택하든 다음과 같은 데이터 변환을 수행해야 할 수 있습니다:
- 중복 제거/정규화 (Deduplication/Normalizing): 중복 정보를 식별하고 제거합니다.
- 키 재구조화 (Key restructuring): 한 테이블에서 다른 테이블로 키 연결을 그립니다.
- 정제 (Cleansing): 구문 오류, 오타, 깨진 레코드를 제거하기 위한 구문 분석 등을 통해 오래되고 불완전하며 중복된 데이터를 삭제하여 데이터 정확도를 극대화하는 작업입니다.
- 형식 수정 (Format revision): 날짜/시간, 남성/여성, 측정 단위 등 서로 다른 데이터 세트의 형식을 하나의 일관된 형식으로 변환합니다.
- 파생 (Derivation): 데이터에 적용되는 변환 규칙을 만듭니다. 예를 들어, 비즈니스 수익 수치를 분석하기 전에 특정 비용이나 세금 부채를 빼야 할 수도 있습니다.
- 집계 (Aggregation): 요약된 보고서 형식으로 표시할 수 있도록 데이터를 수집하고 검색합니다.
- 통합 (Integration): 데이터 웨어하우스 전체에서 동일한 데이터 요소에 적용되는 다양한 이름/값을 조정하여 각 요소가 표준 이름과 정의를 갖도록 합니다.
- 필터링 (Filtering): 데이터 집합 내에서 특정 열, 행 및 필드를 선택합니다.
- 분할 (Splitting): 하나의 열을 둘 이상의 열로 분할합니다.
- 조인 (Joining): 여러 SaaS 플랫폼에 걸쳐 지출 정보를 추가하는 등 두 개 이상의 여러 소스에서 데이터를 연결합니다.
- 요약 (Summarization): 가치 합계를 계산하여 다양한 비즈니스 지표를 만듭니다. 예를 들어 특정 영업사원의 모든 매출을 합산하여 특정 기간의 총 매출 지표를 만들 수 있습니다.
- 유효성 검사 (Validation): 다양한 상황에서 따를 자동화된 규칙을 설정합니다. 예를 들어, 행의 처음 5개 필드가 NULL인 경우 해당 행에 조사 플래그를 지정하거나 나머지 정보와 함께 처리되지 않도록 할 수 있습니다.
데이터 로드
데이터 로드는 ETL 작업중에 추출된 정보를 대상 데이터 리포지토리에 로드하는 프로세스입니다. 로드는 '전체 로드' (full loading: 데이터를 웨어하우스 에 처음 로드하는 경우) 또는 '증분 로드' (incremental loading: 새로운 정보로 데이터 웨어하우스를 업데이트하는 경우)를 통해 발생할 수 있는 지속적으로 진행되는 프로세스입니다. 증분 로드가 가장 복잡하므로 이 섹션에서는 증분 로드를 중점적으로 살펴보겠습니다.
증분 로드의 유형
증분 로드는 과거의 증분 로드 이후 새로 추가된 정보를 추출하여 로드합니다. 이는 두 가지 방식으로 발생할 수 있습니다:
- 배치 증분 로드 (Batch incremental loads)
데이터 웨어하우스 는 정보를 패킷 또는 배치로 수집합니다. 대규모 배치인 경우 시스템 속도 저하를 방지하기 위해 일별, 주별 또는 월별로 사용량이 많지 않은 시간에 일괄 로드를 수행하는 것이 가장 좋습니다. 하지만 최신 데이터 웨어하우스 는 Integrate.io와 같은 ETL 플랫폼을 사용하여 분 단위로 소량의 정보를 수집할 수도 있습니다. 이를 통해 최종 사용자를 위한 실시간 업데이트의 근사치를 얻을 수 있습니다.
- 스트리밍 증분 로드 (Streaming incremental loads)
데이터 웨어하우스는 새로운 데이터가 실시간으로 나타나는 대로 수집합니다. 이 방법은 최종 사용자가 실시간 업데이트를 필요로 하는 경우 (예: 최신 의사 결정을 위해)에 특히 유용합니다. 하지만 스트리밍 증분 로드는 업데이트에 아주 적은 양의 데이터가 포함될 때만 가능합니다. 대부분의 경우, 분 단위 일괄 업데이트가 실시간 스트리밍보다 더 강력한 솔루션이 됩니다.
증분 로딩의 과제
ETL에 있어서 증분 로드는 시스템 성능을 방해하고 다음과 같은 여러 문제를 일으킬 수 있습니다:
- 데이터 구조 변경
데이터 소스 또는 데이터 웨어하우스의 데이터 형식은 정보 시스템의 필요에 따라 진화하는 경우가 많습니다. 그러나 시스템의 한 부분을 변경하면 로드 프로세스를 방해하는 비호환성이 발생하곤 합니다. 일관되지 않거나 손상되거나 불일치하는 데이터와 관련된 문제를 방지하려면 적절한 조정을 하기 전에 사소한 변경이 전체 에코시스템에 어떤 영향을 미치는지 확대하여 검토하는 것이 중요합니다.
- 잘못된 순서로 데이터를 처리하는 경우
데이터 파이프라인은 복잡한 궤적을 따라 움직이기 때문에 데이터 웨어하우스에서 잘못된 순서로 정보를 처리, 업데이트 또는 삭제할 수 있습니다. 이로 인해 정보가 손상되거나 부정확해 ETL 결과물이 신용할 수 없게 될 수도 있습니다. 따라서 데이터 처리 순서를 모니터링하고 감사하는 것이 중요합니다.
- 문제 감지 실패
API가 다운된 경우, API 액세스 자격 증명이 오래된 경우, 시스템 속도 저하로 인해 API에서 데이터 흐름이 중단된 경우, 대상 데이터 웨어하우스가 다운된 경우 등 ETL 워크플로우의 문제를 신속하게 감지하는 것이 중요합니다. 문제를 빨리 감지할수록 문제를 더 빨리 해결할 수 있고, 그로 인해 발생하는 부정확하거나 손상된 데이터를 더 쉽게 수정할 수 있습니다.
Integrate.io는 코드가 필요 없는 데이터 파이프라인 플랫폼으로, 데이터 ETL 작업이 훨씬 수월해집니다. 이제 데이터 통합의 어려움을 겪지 않고도 지원되는 위치로 데이터를 ETL할 수 있습니다. 지금 바로 ETL 데모를 예약하세요.