들어가며
스노우플레이크와 같은 데이터 웨어하우스로의 데이터 로드 및 변환 작업을 설계하고 안정적으로 운영하는 것은 현대 데이터 환경에서 매우 중요한 과제가 되었습니다. 기업들이 생성하는 데이터의 양이 기하급수적으로 증가함에 따라, 이를 효율적으로 처리할 수 있는 안정적인 인프라가 필수적입니다. 특히, 다양한 소스에서 수집된 데이터를 중앙화된 데이터 웨어하우스로 정확하게 로드하는 과정과 그 데이터를 분석할 수 있는 형태로 변환하는 작업이 매우 복잡해지고 있습니다. 이러한 과정을 신뢰성있게 운영하기 위해서는 데이터 로드와 변환을 자동화하고, 대규모 데이터를 안정적으로 처리할 수 있는 고성능 솔루션이 요구됩니다.
이와 함께 기업들이 데이터를 단순히 수집하는 것을 넘어, 그 데이터를 신속하게 분석하고 예측 모델에 반영할 수 있는 능력 또한 중요해지고 있습니다. 데이터 처리와 변환이 원활하게 이루어져야 기업은 더 빠르게 데이터 기반 의사결정을 내리고, 경쟁력을 유지할 수 있습니다.
이번 글에서는 9월 10일 열린 스노우플레이크 월드투어 서울 행사에서 공유했던 스피치 내용을 기반으로, 스노우플레이크, dbt, 그리고 Trocco를 활용해 데이터 로딩 및 변환 프로세스를 최적화하는 방법을 살펴봅니다. 이 도구들과 전략을 통해 데이터 파이프라인의 성능을 극대화하고, 더 빠르고 효율적인 데이터 처리 방법을 모색해 보겠습니다. 데이터 기반 의사결정을 위한 필수 역량을 갖추고자 하는 분들에게 유용한 인사이트가 될 것입니다.
dbt(data build tool)란?
dbt는 Python을 기반으로 하는 데이터 처리 프레임워크로, 데이터 웨어하우스 내부의 데이터에 변환을 적용할 수 있는 Snowflake를 지원합니다. dbt는 ELT(Extract-Load-Transform)의 T로, 코드를 가져와서 SQL로 컴파일한 다음 데이터베이스에 대해 실행합니다. dbt는 데이터 변환의 표준으로 자리 잡으며, 현대적인 데이터 스택의 필수 요소로 떠오르고 있습니다. 데이터 엔지니어와 분석가들이 손쉽게 데이터 모델링과 변환 작업을 관리할 수 있도록 도와주며, 국내에서도 점점 더 많은 엔지니어가 dbt를 사용하기 시작했습니다. 데이터 소스와 처리해야 하는 데이터의 양이 증가함에 따라 소스 데이터를 원시 상태로 저장하고, 분석 요구 변화에 따라 변환할 수 있는 확장성과 유연성을 제공하면서 ELT 파이프라인 구축이 대세로 자리 잡고 있습니다.
이제 예시를 통해 dbt, Trocco, Snowflake로 ELT 파이프라인을 가속화하는 방법을 살펴보겠습니다.
1. 데이터를 단계별로 변환하기
공유 숙박 서비스 데이터를 예시로 만들어 각각 호스트, 숙박 정보, 후기, 그리고 특정 이벤트가 있는 날짜를 테이블로 추출했습니다. 특정 이벤트가 있는 날의 후기가 일반적인 날들에 비해 다른 특성이 있는지 분석해 보고자 데이터를 단계별로 변환해 보았습니다.
2. dbt 검증을 위한 로컬 파이프라인
먼저 스노우플레이크 데이터베이스 정보를 기반으로 connection을 만들어준 후, 변환하고자 하는 dbt 모델을 빌드했습니다. 이후 최근 가장 널리 사용되는 데이터 오케스트레이션 툴인 Airflow를 학습하면서 dbt를 crontab에 맞춰 배치성으로 돌리기 위한 간단한 모델을 로컬 환경에서 실행해 보았습니다. (참고한 설정 가이드: https://medium.com/@dipan.saha/dbt-on-snowflake-a-comprehensive-guide-a849e893a2e)
위와 같이 멀티 소스 테이블의 데이터 변환 프로세스를 안정적으로 운영하기 위해선 작업 실행을 자동화하여 최신 데이터를 유지함과 동시에 모델 간 의존성을 체계적으로 관리해야 합니다. 물론 소규모 프로젝트부터 시작하는 경우 운영에 대한 고민이 적을 수 있겠지만 프로젝트 초기 단계부터 자동화를 고려해야 이후 파이프라인이 복잡해졌을 때 수작업으로 관리하는 비효율성과 오류를 줄이면서 안정적이고 일관된 운영이 가능합니다.
3. dbt 검증을 위한 자동화 파이프라인
AWS 클라우드 환경에서 자동으로 운영되는 모델을 검증해 보기 위해 dbt 모델을 컨테이너화하여 ECR에 저장한 후 클라우드 환경으로 이관하고, Airflow의 crontab은 AWS 서비스로 대체했습니다. 추후 추가적인 데이터 적재 파이프라인 활용을 고려해 Airflow는 유지한 상태에서 dbt run → dbt test 작업을 자동화했습니다.
또한, CRM 소스 데이터를 배치 스케줄로 스노우플레이크에 적재하기 위한 파이프라인을 추가하여 CRM → 스노우플레이크 → dbt 변환의 간단한 ELT 프로세스를 구축해 보았습니다.
AWS와 ECS로 운영 자동화 DEV 파이프라인을 구축하면서 확장성과 유연성에 대한 검증을 해볼 수 있었지만, 이를 운영 환경에서 안정적으로 관리하기 위해서는 네트워크, 보안, 리소스 관리 등 신경 써야 할 부분이 많았습니다. 특히 저처럼 관련 지식이 부족한 사용자의 경우, 이러한 인프라를 유지하고 관리하는 데 많은 시간과 노력이 필요할 것이라고 느꼈습니다.
4. 쉽고 효율적인 데이터 운영을 돕는 Trocco
ECS 기반 ELT 데이터 파이프라인 테스트를 거치며 dbt를 활용한 데이터 변환 운영 자동화 방안을 추가로 몇 가지 실험해 본 결과 내린 결론은 다음과 같습니다.
dbt Cloud의 경우 dbt 오픈소스를 개발한 dbt Labs에서 직접 서비스하는 SaaS 형 제품으로 리포지토리, 인프라, 그리고 스케줄 관리의 편의성을 제공했지만, 소스 데이터의 적재는 별도로 빌드한 후 API 발송과 같은 트리거 방식으로 dbt Cloud를 실행해야 된다는 점에서 2% 아쉬움이 있었습니다.
이를 Trocco의 내장된 dbt 연동 서비스를 통해 손쉽게 해결할 수 있었습니다. Trocco 내에는 dbt의 소스 리포지토리 연동, 그리고 웨어하우스 Connection 정보까지 손쉽게 관리할 수 있었고, 워크플로우 내에서 세일즈포스 → 스노우플레이크의 데이터 적재 작업과 dbt를 통한 테이블 변환 작업이 단계별로 실행 가능했습니다. 또한, Tableau의 소스 데이터 업데이트까지 일괄적으로 처리할 수 있는 기능을 제공해 데이터 분석에만 집중할 수 있는 환경을 제공하고 있습니다.
Trocco 같은 데이터 적재 + dbt 지원 플랫폼을 사용하면 Airflow 같은 오픈소스 스택을 사용할 때보다 운영 난이도 관점에서 효율이 높다고 생각됩니다. 오픈소스 도구들은 자유도가 높긴 하지만 설정부터 운영까지 많은 시간과 노력이 들어가고 배워야 할 것도 많죠. 반면에, Trocco 같은 데이터 플랫폼은 인프라 관리도 쉽게 해주고 설정도 간단해서 운영이 훨씬 편리한 만큼 리소스를 좀 더 효율적으로 쓸 수 있다는 게 큰 장점인 것 같습니다.
마치며
스노우플레이크 월드투어 서울 행사에서 소개된 사례 중 하나로, Trocco를 도입한 일본의 공유 모빌리티 스타트업 D사는 도입 전까지 플랫폼 엔지니어팀의 리소스 부족으로 비즈니스 운영팀에 일주일에 한 번만 데이터를 제공할 수 있었고, 원천 데이터에 접근하는 데 어려움이 있어 데이터 기반 의사결정을 내리기 힘들었습니다. 그러나 Trocco 도입 후, 데이터 제공 리드타임을 단 30분으로 단축했을 뿐만 아니라, 도입 3개월 만에 20여 개의 엔드투엔드 파이프라인을 구축하며 데이터 접근성과 활용성을 크게 개선할 수 있었습니다.
데이터 파이프라인 구축과 운영 자동화에 대한 고민이 있으시다면, Trocco를 활용해 더 빠르고 효율적인 데이터 운영을 실현해 보시기 바랍니다. 👉Trocco 자세히 알아보기