Snowflake 를 이용한 모던 데이터 스택 구축 사례 Part.1

Kyoungjin (KJ) Choi
7 min readFeb 20, 2024

--

안녕하세요. 스노우플레이크 데이터 슈퍼히어로 KJ 입니다.

Snowflake Korea User Group 이 2023년에 처음으로 오프라인 모임을 선보였습니다.

모든 세션이 1회성으로 묻히기에는 너무 아까운 세션이었기에 소개하는 글을 마련해보았습니다.

2023년 10월 18일 첫 밋업이 열렸는데요. 첫 유저 그룹의 테마는 Modern Data Stack 뿌시기 (발표자료) 였습니다. 다음과 같이 DBT, Airflow, Fivetran 를 실무에 적용한 사례를 들어볼 수 있었는데요. 요즘 관심을 많이 받고 있는 오픈소스이니만큼 첫 유저그룹임에도 많은 유저분들이 밋업을 방문해주셨습니다.

처음으로 소개해드릴 세션은 NFTBank Chris Song 님께서 발표해주신 Building modern data pipeline with Snowflake + DBT + Airflow 입니다.

DBT 는 Snowflake 와 함께 즐겨 사용되는 ETL 툴 입니다. ETL 툴이라고 하지만 실제로는 Transform 에 특화된 오픈소스입니다.

SQL을 이용한 배치성 데이터 처리를 할 때 무분별하게 테이블이 생성됨으로서 테이블 관리가 어려워질 수 있는데 DBT 를 사용하게 되면 이와같은 테이블들을 체계적으로 관리할 수 있게 되면서 Data Lineage 를 관리할 수 있게 됩니다.

The Rule of Ten: 발견되지 않은 결함에 대한 비용은 가치 창출 단계당 10배 증가한다

NFTBank 에서는 다양한 오픈소스를 사용하고 있지만 데이터 품질 관리, Data Catalog 관리, Data Lineage 측면에서 DBT 를 중심으로 데이터 파이프라인을 구성해서 사용하고 있습니다.

이를 도입한 배경으로 너무 많은 테스트 쿼리를 사용하게 됨으로 해서 관리가 안되고 레거시가 되어가는 고충을 말씀해주셨습니다.

DBT 를 사용할 경우, DBT 컨벤션만 따라서 SQL 을 정의하면 자동으로 Data Catalog 및 Data Lineage 가 정의됩니다. Data Validation 테스트도 YAML 파일에 한 줄만 추가하면 만들 수 있기에 편리하게 각 모델별 테스트를 관리하고 통과 여부도 확인할 수 있습니다.

DBT 는 Snowflake 를 비롯한 모든 주요 데이터 솔루션에 쉽게 연동이 되는 편의를 제공하고 있습니다.

DBT 가 Snowflake 또는 Bigquery 와 자주 거론되는 것은 SQL을 사용하기 때문입니다. Tranform 를 위해서 Spark 와 같은 코드 언어를 많이 사용해왔습니다. 하지만 많은 데이터 처리 유저의 경우 Python, Scala 와 같은 언어 보다는 SQL 을 선호하기도 합니다.

Snowflake 는 SQL 에 최적화되어있는 플랫폼으로 데이터 가공 처리 간 Temporary Table 또는 Permanent Table 을 생성하는데 매우 용이합니다. 따라서 SQL 기반으로 Data Catalog 를 자동으로 관리하는 DBT 와 조합이 매우 좋을 수 밖에 없는 것입니다.

NFTBank 는 Snowflake 를 사용하면서 SQL 로 데이터 변환(Transform) 작업을 수행하고 이에 대한 관리 어려움을 겪으셨습니다. 너무 나도 쉽게 테이블을 만들고 데이터를 가공할 수 있도록 제공하는 Snowflake 기반 시스템이기에 겪을 수 있는 고충이었는데요. DBT 와 함께 하면서 이와 같은 이슈를 해소하셨다고 하네요.

추가로 Snowflake 에서 빼놓을 수 없는 주제인 비용 최적화에 대해서 NFTBank 만의 노하우를 공유해주셨는데요. 다음과 같이 두가지 관점으로 비용 최적화에 대한 의견을 주셨습니다.

첫째로 Query Optimization 입니다.

최적화 4가지 조건으로 다음과 같이 자주 쓰이는 쿼리 조건에 대한 Partitioning, 적절한 File size 구성, Clustering 기능 활용, 데이터 스캔 범위를 줄이기 위한 Query tuning 에 대한 팀을 나눠주셨습니다.

둘째로 비용 모니터링 입니다. NFTBank 는 자체 비용 대시보드를 제작해서 비용 관리를 하고 있습니다.

지금은 세션 진행 당시에 없었던 Cost Management 메뉴를 제공하고 있지만 고객의 사용 관점에 맞게 커스텀으로 구성해서 사용하는 것도 권장해드리고 있습니다. 이를 Snowflake 자체에 구성하고자 할 때는 Dashboards 또는 Streamlit 을 사용할 수 있습니다.

Snowflake 는 비용 관리하기에 따라서 매우 경제적으로 사용할 수 있는 플랫폼입니다. 따라서 비용 사용추이를 추적하고 관리함으로서 비용 최적화된 시스템을 운영할 수 있게 될 수 있을뿐만 아니라 성능 최적화된 시스템이 될 수 있도록 관리가 가능해집니다.

지금까지 NFTBank Chris 님의 세션을 간략히 살펴봤습니다. 실무에서 겪은 고충과 함께 그 대안을 제시해주셔서 매우 많은 도움이 되는 세션이었습니다.

Snowflake 를 사용하시거나 도입을 고려중인 유저분들이라고 하면 NFTBank 사례를 참고해보시면 어떨까요?!

올해에도 Snowflake Korea User Group 의 오프라인 세션은 계속됩니다~!!

2024년 Snowflake Korea User Group 첫 밋업이자 3회차 밋업이 2월 26일 열립니다!

이번 밋업의 테마는 Data Sharing 및 Data Monetization 입니다.

데이터를 단순히 모으는데서 끝나는 것이 아니라 데이터를 필요로 하는 유저들에게 공유하고 이를 통해서 수익을 창출할 수 있다면 이보다 더 좋을 수는 없지 않을까요?! >ㅁ<)/

이번 밋업에 꼭 참가하셔서 Data Monetization 에 대한 인사이트를 얻어가시면 좋을 듯 합니다.

--

--

Kyoungjin (KJ) Choi

AWS SA | Snowflake Data Superhero ❄️ Data Team Leader at MegazoneCloud