ETL은 데이터 추출, 변환, 그리고 적재 과정을 의미합니다. ETL 도구는 여러 데이터 소스에서 데이터를 가져와, 목표 시스템이나 데이터 모델에 적합한 중간 형태로 변환합니다. 최종적으로, 변환된 데이터는 대상 데이터베이스, 데이터 웨어하우스, 또는 데이터 레이크에 저장됩니다.
15년에서 20년 전만 해도 ETL이라는 용어를 이해하는 사람은 극소수에 불과했습니다. 당시에는 다양한 맞춤형 배치 작업이 온프레미스 하드웨어에서 주로 이루어졌습니다.
많은 프로젝트에서 실제로 ETL을 수행했지만, 그 개념을 알지 못했습니다. ETL이라고 명명해야 할 필요조차 느끼지 못했습니다. ETL 프로세스 관련 설계를 설명하고 관련 내용을 언급할 때마다, 그것은 마치 먼 미래의 기술처럼 느껴졌고 매우 드문 일이었습니다.
하지만 현재 상황은 완전히 달라졌습니다. 클라우드로의 전환이 최우선 과제가 되었고, ETL 도구는 대부분의 프로젝트 아키텍처에서 핵심적인 부분으로 자리매김했습니다.
클라우드 마이그레이션은 곧 온프레미스 데이터를 소스로 활용하여 클라우드 아키텍처와 호환되는 형태로 변환한 후 클라우드 데이터베이스에 저장하는 것을 의미합니다. 이것이 바로 ETL 도구의 주요 역할입니다.
ETL의 역사와 현재와의 연결점
출처: aws.amazon.com
ETL의 핵심 기능은 변함없이 일관됩니다.
ETL 도구는 다양한 소스(데이터베이스, 플랫 파일, 웹 서비스, 그리고 최근에는 클라우드 기반 애플리케이션)에서 데이터를 수집합니다.
과거에는 주로 유닉스 파일 시스템의 파일을 입력으로 사용하고 전처리, 처리, 후처리 과정을 거치는 방식을 사용했습니다.
다음과 같은 폴더 이름의 재사용 가능한 패턴이 주로 사용되었습니다.
- 입력
- 출력
- 오류
- 보관소
이러한 폴더 아래에는 날짜를 기반으로 하는 하위 폴더 구조도 존재했습니다.
이는 들어오는 데이터를 처리하고 데이터베이스에 로드하기 위한 표준적인 방법이었습니다.
하지만 오늘날에는 유닉스 파일 시스템이 과거와 같은 방식으로 사용되지 않습니다. 심지어 파일 자체가 없을 수도 있습니다. 이제는 API(애플리케이션 프로그래밍 인터페이스)를 통해 데이터를 주고받으며, 입력 형식이 꼭 파일일 필요는 없습니다.
데이터는 모두 캐시 메모리에 저장될 수도 있습니다. 물론 파일 형태일 수도 있지만, 어떤 구조화된 형식을 따라야 합니다. 대부분 JSON이나 XML 형식을 사용하고, 때로는 CSV(쉼표로 구분된 값) 형식을 사용하기도 합니다.
입력 형식을 정의하는 것은 필수입니다. 프로세스에 입력 파일의 기록 생성 과정이 포함되는지 여부는 전적으로 사용자의 판단에 달려 있으며, 더 이상 표준화된 단계는 아닙니다.
변환
ETL 도구는 추출된 데이터를 분석에 적합한 형태로 변경합니다. 데이터 정리, 유효성 검사, 보강, 집계 등이 이 과정에 포함됩니다.
예전에는 데이터가 Pro-C 또는 PL/SQL 기반의 복잡한 사용자 정의 로직을 거쳐 데이터 준비, 변환, 대상 스키마 저장 단계를 거쳤습니다. 파일을 처리하는 단계에 따라 입력 파일을 하위 폴더로 분리하는 것처럼 표준화된 필수 프로세스였습니다.
하지만 왜 그렇게 당연하게 생각했을까요? 영구 저장 없이 들어오는 데이터를 즉시 변환함으로써, 원본 데이터의 가장 큰 장점인 불변성을 잃게 됩니다. 프로젝트는 재구축 기회 없이 그냥 버려지는 경우가 많았습니다.
오늘날에는 원시 데이터의 변형을 최소화하는 것이 중요합니다. 즉, 시스템에 처음 데이터를 저장할 때는 가능한 한 변경하지 않고 보존해야 합니다. 그런 다음 데이터 변경 및 모델 변환을 진행해야 합니다. 원시 데이터를 변경되지 않은 원자 구조로 저장하는 것이 바람직합니다. 이는 온프레미스 환경에서 큰 변화라고 할 수 있습니다.
적재
ETL 도구는 변환된 데이터를 대상 데이터베이스나 데이터 웨어하우스에 저장합니다. 이 과정에는 테이블 생성, 관계 정의, 적절한 필드에 데이터 로드가 포함됩니다.
데이터 로드 단계는 비교적 오랫동안 동일한 패턴을 따르는 유일한 단계일 것입니다. 유일한 차이점은 대상 데이터베이스입니다. 이전에는 주로 Oracle을 사용했지만, 이제는 AWS 클라우드에서 제공되는 모든 데이터베이스를 사용할 수 있습니다.
오늘날의 클라우드 환경에서의 ETL
온프레미스 환경에서 AWS 클라우드로 데이터를 이동하려는 경우, ETL 도구는 필수입니다. ETL 없이는 클라우드 환경으로의 전환이 불가능하므로, 이 부분이 클라우드 아키텍처에서 매우 중요한 요소가 되었습니다. 이 단계에서 문제가 발생하면, 다른 모든 단계에서도 동일한 문제가 발생할 수 있습니다.
다양한 경쟁자들이 존재하지만, 가장 경험이 많은 세 가지 솔루션에 집중하겠습니다.
- 데이터 마이그레이션 서비스(DMS) – AWS의 기본 서비스입니다.
- Informatica ETL – ETL 분야의 선도적인 상용 솔루션 제공업체로, 온프레미스에서 클라우드로 성공적으로 전환하고 있습니다.
- Matillion for AWS – 클라우드 환경에서 비교적 새로운 솔루션입니다. AWS 고유의 솔루션이 아니라 클라우드 환경을 위해 특화된 솔루션입니다. Informatica와 비교할 만큼 오랜 역사를 가지고 있지는 않습니다.
ETL로서의 AWS DMS
출처: aws.amazon.com
AWS Data Migration Services(DMS)는 다양한 소스의 데이터를 AWS로 이동할 수 있는 완전 관리형 서비스입니다. 다양한 마이그레이션 시나리오를 지원합니다.
- 동종 마이그레이션(예: Oracle에서 Oracle용 Amazon RDS로)
- 이종 마이그레이션(예: Oracle에서 Amazon Aurora로)
DMS는 데이터베이스, 데이터 웨어하우스, SaaS 애플리케이션 등 다양한 소스에서 Amazon S3, Amazon Redshift, Amazon RDS 등 다양한 대상으로 데이터를 마이그레이션할 수 있습니다.
AWS는 DMS를 모든 데이터베이스 소스의 데이터를 클라우드 네이티브 대상으로 옮기는 궁극적인 도구로 간주합니다. DMS의 주요 목표는 데이터를 클라우드로 복사하는 것이지만, 데이터 변환 작업도 효과적으로 수행합니다.
JSON 형식으로 DMS 작업을 정의하여, 소스에서 대상으로 데이터를 복사하는 동안 여러 변환 작업을 자동화할 수 있습니다.
- 여러 소스 테이블 또는 열을 단일 값으로 병합
- 소스 값을 여러 대상 필드로 분할
- 소스 데이터를 다른 대상 값으로 대체
- 불필요한 데이터를 제거하거나 입력 컨텍스트에 기반한 새로운 데이터를 생성
즉, DMS는 프로젝트의 ETL 도구로 충분히 활용할 수 있습니다. 다른 솔루션만큼 정교하지 않을 수도 있지만, 목표가 명확하다면 충분히 효과적으로 작동합니다.
적합성 요인
DMS는 일부 ETL 기능을 제공하지만, 주로 데이터 마이그레이션에 중점을 두고 있습니다. 그러나 Informatica나 Matillion 같은 ETL 도구 대신 DMS를 사용하는 것이 더 나은 몇 가지 시나리오가 있습니다.
마틸리온 ETL
출처: matillion.com
Matillion은 클라우드 네이티브 솔루션으로, 데이터베이스, SaaS 애플리케이션, 파일 시스템 등 다양한 소스의 데이터를 통합하는 데 사용할 수 있습니다. ETL 파이프라인 구축을 위한 시각적 인터페이스를 제공하며, Amazon S3, Amazon Redshift, Amazon RDS와 같은 다양한 AWS 서비스를 지원합니다.
Matillion은 사용하기 쉬워 ETL 도구를 처음 사용하거나 비교적 간단한 데이터 통합 요구 사항을 가진 조직에 적합합니다.
반면 Matillion은 백지상태와 같습니다. 몇 가지 잠재적인 기능이 있지만, 실제로 사용하려면 사용자가 직접 코딩해야 합니다. 기능이 있다고 해서 바로 사용할 수 있는 것은 아닙니다.
또한 Matillion은 스스로를 ETL 도구라기보다는 ELT라고 설명합니다. 즉, Matillion은 변환보다 로드를 먼저 수행하는 것이 더 자연스럽습니다.
적합성 요인
Matillion은 이미 데이터베이스에 저장된 데이터를 변환하는 데 더 효과적입니다. 사용자 정의 스크립팅이 필요하기 때문입니다. 모든 특수 기능을 직접 코딩해야 하므로 효율성은 사용자 정의 코드의 효율성에 크게 좌우됩니다.
따라서 대상 데이터베이스 시스템에서 변환을 처리하고, Matillion은 간단한 1:1 로드 작업만 수행하는 것이 더 나을 수 있습니다. 여기서는 사용자 정의 코드로 인한 문제가 발생할 가능성이 적습니다.
Matillion은 데이터 통합을 위한 다양한 기능을 제공하지만, 일부 다른 ETL 도구와 같은 수준의 데이터 품질 및 거버넌스 기능을 제공하지 않을 수 있습니다.
Matillion은 조직의 요구에 따라 확장하거나 축소할 수 있지만, 대량의 데이터를 처리하는 데는 효과적이지 않을 수 있습니다. 병렬 처리 기능이 제한적입니다. Informatica는 더 발전된 기능을 제공하고 동시에 기능이 풍부하므로 더 나은 선택일 수 있습니다.
하지만 많은 조직에서 AWS용 Matillion은 필요한 확장성과 병렬 처리 기능을 제공할 수 있습니다.
인포매티카 ETL
출처: informatica.com
AWS용 Informatica는 AWS의 다양한 소스 및 대상에서 데이터를 통합하고 관리하도록 설계된 클라우드 기반 ETL 도구입니다. 데이터 프로파일링, 데이터 품질, 데이터 거버넌스 등 데이터 통합을 위한 다양한 기능을 제공하는 완전 관리형 서비스입니다.
AWS용 Informatica의 주요 특징은 다음과 같습니다.
적합성 요인
Informatica는 분명히 가장 많은 기능을 제공하는 ETL 도구입니다. 하지만 AWS에서 사용할 수 있는 다른 ETL 도구보다 비용이 비싸고 복잡할 수 있습니다.
특히 중소기업의 경우 Informatica는 비용이 많이 들 수 있습니다. 가격 모델은 사용량을 기반으로 하기 때문에 사용량이 증가할수록 더 많은 비용을 지불해야 합니다.
또한, 특히 ETL 도구를 처음 접하는 사용자에게는 설정 및 구성이 복잡할 수 있습니다. 이 과정에는 시간과 자원이 많이 필요할 수 있습니다.
또한 학습 곡선이 높은 편입니다. 데이터를 신속하게 통합해야 하거나 교육 및 온보딩에 전념할 자원이 제한된 사람들에게는 단점이 될 수 있습니다.
Informatica는 AWS 이외의 소스 데이터를 통합하는 데는 효과적이지 않을 수 있습니다. 이 경우 DMS나 Matillion이 더 나은 선택일 수 있습니다.
마지막으로, Informatica는 매우 폐쇄적인 시스템입니다. 프로젝트의 특정 요구 사항에 맞게 사용자 정의할 수 있는 기능이 제한적입니다. 기본적으로 제공되는 설정을 사용해야 합니다. 따라서 솔루션의 유연성이 제한적입니다.
마지막 말
다른 많은 경우와 마찬가지로, AWS의 ETL 도구와 같은 솔루션은 모든 상황에 맞는 단 하나의 정답이 없습니다.
가장 복잡하고 기능이 많지만 값비싼 솔루션인 Informatica를 선택할 수 있지만, 다음의 경우에 가장 적합합니다.
- 프로젝트 규모가 비교적 크고, 미래의 모든 솔루션과 데이터 소스도 Informatica에 연결될 것이라고 확신할 수 있습니다.
- 숙련된 Informatica 개발자 및 구성원으로 구성된 팀을 보유하고 있습니다.
- 든든한 지원팀의 도움을 받을 수 있고 비용을 지불할 의향이 있습니다.
위의 조건에 부합하지 않는다면 Matillion을 고려해볼 수 있습니다.
- 프로젝트 요구 사항이 일반적으로 복잡하지 않은 경우.
- 처리 과정에 사용자 정의 단계가 필요한 경우, 즉 유연성이 핵심 요구 사항인 경우.
- 처음부터 대부분의 기능을 직접 개발하는 데 문제가 없는 경우.
훨씬 덜 복잡한 경우에는 AWS용 DMS를 기본 서비스로 사용하는 것이 좋은 선택이 될 수 있으며, 목표를 달성하는 데 충분히 효과적일 수 있습니다.
다음으로는 데이터를 더 잘 관리할 수 있도록 데이터 변환 도구를 살펴보시기 바랍니다.