주요 컨텐츠로 이동

추출, 변환, 로드(ETL)

An ETL header image

ETL이란 무엇입니까?

기업에서 다루는 데이터, 데이터 소스와 데이터 유형의 양이 늘어나면서 분석, 데이터 사이언스와 머신 러닝 이니셔티브에 그러한 데이터를 활용하여 비즈니스 인사이트 성장을 유도하는 것의 중요성도 점점 커지게 되었습니다. 이러한 이니셔티브에 우선순위를 부여하면 데이터 엔지니어링 팀에 부담이 가중되는데, 지저분한 원시 데이터를 깔끔하게 정리된, 새롭고 안정적인 데이터로 처리하는 중대한 단계를 거친 다음에만 이러한 이니셔티브를 추진할 수 있기 때문입니다. ETL은 추출, 변환과 로드를 뜻하며 데이터 엔지니어가 다양한 소스로부터 데이터를 추출, 데이터를 사용 가능하고 믿을 수 있는 리소스로 변환, 그 데이터를 시스템에 로드하여 최종 사용자가 액세스하고 다운스트림 방식으로 사용하여 비즈니스 문제를 해결할 수 있게 처리하는 과정을 말합니다.

etl process

자세히 보기

데이터 엔지니어링 Big Book

AI 시대를 위한 필수 가이드를 통해 전문성을 빠르게 향상하세요.

지금 읽기

ETL 시작하기

이 O’Reilly 기술 가이드를 통해 ETL 파이프라인에 대해 알아보세요.

지금 다운로드

신뢰할 수 있는 데이터로 AI 생산성 강화

Databricks Data Intelligence Platform에서

지금 읽기

ETL은 어떻게 작용합니까?

추출

이 프로세스의 첫 단계는 대상 소스에서 데이터를 추출하는 것인데, 소스는 대개 비즈니스 시스템, API, 센서 데이터, 마케팅 툴과 트랜잭션 데이터베이스 등 여러 가지 종류로 이루어져 있습니다. 보시다시피 이런 데이터 유형 중 몇 가지는 널리 사용되는 시스템의 구조적 출력이 될 가능성이 크고, 나머지는 반구조적 JSON 서버 로그입니다. 추출을 수행하는 방식은 여러 가지입니다.

  1. 부분 추출: 데이터를 얻는 가장 쉬운 방법은 레코드가 변경되면 소스 시스템이 알려주는 것입니다.

  2. 부분 추출(업데이트 알림 포함): 시스템에 따라 업데이트가 발생해도 알림을 제공할 수 없는 경우도 있습니다. 다만 변경된 레코드를 지목하여 해당 레코드를 추출해 제공할 수는 있습니다.

  3. 전체 추출: 어느 데이터가 변경되었는지 전혀 파악할 수 없는 시스템도 있습니다. 이 경우, 시스템에서 데이터를 추출할 가능성이 있는 유일한 방식은 전체 추출뿐입니다. 이 방식을 취하면 마지막 추출의 사본을 같은 형식으로 추출하여 변경 사항을 확인해야 합니다.

변환

두 번째 단계로는 소스에서 추출된 원시 데이터를 변환하여 다양한 애플리케이션에서 사용할 수 있는 형식으로 지정합니다. 이 단계에서는 데이터를 정리, 매핑, 변환(대개 특정 스키마로)하여 운영 요구사항에 부합하도록 합니다. 이 프로세스에는 데이터의 품질과 무결성을 보장하기 위한 몇 가지 유형이 수반됩니다. 보통은 데이터를 대상 데이터 소스에 바로 로드하는 것이 아니라, 준비(staging) 데이터베이스에 업로드하는 것이 보편적입니다. 이 단계를 거치면 혹시나 무언가 계획에서 어긋난다 하더라도 금세 롤백할 수 있습니다. 이 단계를 진행하면서 규정 준수 목적으로 감사 보고서를 생성할 수도 있고, 각종 데이터 문제점을 진단하여 복구할 수도 있습니다.

로드

마지막으로, 로드 기능은 변환한 데이터를 준비 영역에서 대상 데이터베이스에 쓰는 프로세스를 말하며, 이 데이터베이스는 기존에 존재하던 것이어도 되고 아니어도 됩니다. 이 프로세스는 애플리케이션 요구사항에 따라 아주 간단할 수도 있고 복잡할 수도 있습니다. 이러한 단계는 각각 ETL 툴을 써서, 아니면 맞춤형 코드를 써서 수행하면 됩니다.

ETL 파이프라인이란 무엇입니까?

ETL 파이프라인(또는 데이터 파이프라인)은 ETL 프로세스가 발생하는 메커니즘을 말합니다. 데이터 파이프라인이란 자체적인 데이터 스토리지 및 처리 방식이 있는 한 시스템에서 다른 시스템으로 데이터를 옮기기 위한 일련의 툴과 작업을 말하는데, 대상 시스템은 원본 시스템과는 데이터 저장과 관리 방식이 다를 수도 있습니다. 또한 파이프라인을 사용하면 여러 가지 서로 다른 소스에서 자동으로 정보를 가져온 다음 변환하여 단 하나의 고성능 데이터 스토리지에 통합할 수 있습니다.

ETL에 수반되는 문제점

ETL이 필수적인 것은 사실이지만, 데이터 소스와 유형이 이렇게 기하급수적으로 늘어나는 바람에 안정적인 데이터 파이프라인을 구축, 유지하는 것이 데이터 엔지니어링계에서 가장 어려운 일 중 하나가 되었습니다. 데이터 안정성을 보장하는 파이프라인을 구축하기란 처음부터 어렵고 오래 걸리는 일입니다. 데이터 파이프라인은 복잡한 코드를 써서 구축하며, 재사용 가능성에도 한계가 있습니다. 한 가지 환경에서 구축한 파이프라인은 다른 환경에서는 쓸 수 없습니다. 기본 코드가 아주 유사하다 해도 마찬가지입니다. 따라서 데이터 엔지니어는 매번 이미 있는 것을 다시 다 새로 만드는 업무를 맡게 되어 병목 현상에 시달립니다. 파이프라인 개발 외에 점점 복잡해지는 파이프라인 아키텍처에서 데이터 품질을 관리하는 것도 어렵습니다. 때때로 불량한 데이터가 파이프라인을 통과해 이동하는 것을 탐지하지 못해 데이터 세트 전체의 가치가 저하되는 일이 있습니다. 데이터 엔지니어는 품질을 유지하고 안정적인 인사이트를 확보하기 위해 광범위한 맞춤형 코드를 써서 파이프라인의 모든 단계마다 각각 품질 검사와 검증을 구현해야 합니다. 마지막으로, 파이프라인의 규모가 커지고 복잡해지면서 기업에서 이를 관리하기 위한 운영 부담도 늘어나 데이터 안정성을 유지하기가 엄청나게 어려워졌습니다. 데이터 처리 인프라를 설치, 확장, 다시 시작, 업데이트해야 하는데 이 모든 것이 결국 시간과 비용으로 직결됩니다. 파이프라인 오류가 발생하면 파악하기도 힘들뿐더러 해결하기는 더 어렵습니다. 가시성과 툴링이 부족하기 때문입니다. 이 모든 문제점이 있는데도 불구하고, 안정적인 ETL은 인사이트 중심 기업을 꿈꾸는 사업체라면 어디에나 절대적으로 중대한 프로세스입니다. 데이터 안정성 표준을 유지해주는 ETL 툴이 없다면 여러 부서 팀에서 믿을 만한 지표나 보고서도 없이 맹목적으로 의사 결정을 내려야 하게 됩니다. 데이터 엔지니어에게는 지속적인 확장을 위해 ETL을 간소화, 민주화(democratize)해줄 툴이 있어야 합니다. 이로써 ETL 수명 주기를 간편하게 만들고, 데이터 팀에서 자체적으로 데이터 파이프라인을 구축, 활용하여 더 빨리 인사이트를 얻을 수 있습니다.

Delta Lake에서 안정적인 ETL 자동화

Delta Live Tables(DLT)를 사용하면 Delta Lake에서 고품질 데이터를 제공하는 안정적인 데이터 파이프라인을 손쉽게 구축하고 관리할 수 있습니다. DLT를 이용하면 데이터 엔지니어링 팀에서 선언적 파이프라인 개발, 자동 테스트 및 모니터링과 복구를 위한 심층적인 가시성을 얻어 ETL 개발과 관리를 간소화할 수 있습니다.

delta live tables

리소스