회사는 점점 데이터가 많아질수록 데이터의 위치와 의미를 한눈에 보고자하는 니즈가 생길 것이다. 쏘카에서도 데이터가 어디에 있고, 이 데이터는 무슨 의미인지에 대한 의미를 한눈에 보고자 했고, 이를 위한 플랫폼을 데이터 디스커버리 플랫폼(Data Discovery Platform)이라고 한다. 오늘은 데이터 디스커버리의 개념과 왜 디스커버리 플랫폼이 필요한지, 그리고 쏘카는 어떤 기준으로 디스커버리 플랫폼을 선택했는지 알아보자.
기술 블로그 출처
https://tech.socarcorp.kr/data/2022/02/25/data-discovery-platform-01.html
데이터 디스커버리
데이터 디스커버리는 데이터를 쉽고 빠르게 찾을 수 있는 개념으로, 빅데이터 시대에는 많은 양의 데이터가 다양한 형태로 존재하게 됨에 따라 중요해졌다. 데이터 디스커버리는 데이터 이용자에게 어디에, 어떤 데이터가, 어떻게 존재하는지에 대한 정보를 제공한다. 메타데이터는 테이블 정보, 컬럼 정보, 코멘트, 데이터 오너 등을 포함하며, 이를 잘 관리하는 것이 데이터 디스커버리의 핵심 역할이다.
데이터 디스커버리의 중요성
직원들이 각자의 목적에 맞는 데이터를 찾고 의미를 파악하는 데 소요되는 시간을 줄여, 업무 진행 속도와 효율성을 높일 수 있다. 이에 데이터를 적극적으로 활용하는 기업은 데이터 디스커버리를 통해 업무 효율성을 크게 향상시킬 수 있다.
데이터 디스커버리 플랫폼의 종류
- Datahub: LinkedIn에서 만든 플랫폼으로, 데이터 디스커버리를 위한 도구
- 데이터를 쉽게 찾고 이해할 수 있도록 돕는 것이 목적이다.
- 메타데이터를 중심으로 데이터의 신뢰성과 가치를 높이는 데 초점을 맞추고 있다.
- Amundsen: Lyft에서 개발한 플랫폼으로, 데이터 디스커버리와 데이터 카탈로그를 위한 오픈 소스 도구
- 사용자가 데이터 자산을 쉽게 찾고 이해할 수 있도록 돕는다.
- 사용량 추적, 검색 기능, 품질 측정 등 다양한 기능을 제공한다.
- Databook: Uber에서 개발한 인하우스 플랫폼으로, 기업 내부의 데이터 디스커버리와 데이터 공유를 위한 도구
- 데이터를 검색하고 분석하는 기능을 제공한다.
- 데이터 소스의 신뢰성과 유효성을 확인할 수 있는 기능을 포함한다.
데이터 디스커버리 플랫폼이 필요한 이유
도입 효과 - Data Discovery의 관점
쏘카에서는 데이터 활용을 위해 다양한 직군이 데이터를 사용하고 있으나, 데이터 형식의 다양성과 개발 지식 부족으로 데이터 접근이 어려웠다. 기존의 스키마 관리는 유지보수가 되지 않아 정보 부족 문제가 있었고, 질문은 슬랙 채널을 통해 해결되었으나 효율성이 떨어졌다. 이를 해결하고자 데이터 디스커버리 플랫폼을 도입했고, 비개발 직군도 간편한 UI를 통해 메타데이터를 확인할 수 있어 데이터 이해도와 업무 효율성이 향상되었다.
도입 효과 - Data Governance의 관점
여러 사람이 데이터를 생산하고 소비할수록 데이터 거버넌스의 관점이 중요하다. 데이터 디스커버리 플랫폼을 도입하면 기존에 흩어져서 관리되던 테이블 스키마, 코멘트가 중앙 관리 될 수 있다.
* 데이터 거버넌스: 조직 내에서 데이터를 관리, 유지, 보호하기 위한 일련의 정책, 규정, 프로세스, 역할 및 책임을 포함하는 프레임워크이다. 주요 목표는 데이터를 신뢰할 수 있고 효과적으로 활용할 수 있도록 보장하는 것이다.
데이터 디스커버리 플랫폼 비교 분석
쏘카에서는 Datahub와 Amundsen 플랫폼을 비교했다. 두 플랫폼을 직접 배포하고 테스트하면서 비교하는 PoC과정을 거치면서 진행했다.
구조
두 플랫폼의 공통점
- React 기반 Frontend
- Elasticsearch 기반 Search Engine
- Neo4j 기반 Graph DB
- MySql 기반 Storage
두 플랫폼의 차이점
- Datahub
- 데이터 넣을 때 Kafka를 사용
- Event-based 방식 사용
- Amundsen
- 데이터 넣을 때 ETL 라이브러리를 통한 크롤링 방식을 사용
- Monolith 방식 사용
메타데이터 주입 방식
- Datahub
- Yaml 파일을 실행하여 메타데이터 주입
- 데이터 소스에 따라 Datahub 라이브러리에 따라오는 연결 플러그인을 설치
- Amundsen
- python 파일을 실행하여 메타데이터 주입
- python 라이브러리인 amundsen-databuilder를 사용하여 ETL 프레임워크를 구현
- 이를 통해 ETL 각 과정에서 여러 자체 모듈을 사용
- 종종 여러 Dependency 필요
- 섬세한 커스텀이 가능하나 스크립트가 길어 읽기 무거움
문서 기능
- Datahub
- 테이블 별/컬럼 별 태그 부여 가능
- 테이블 별/컬럼 별 풍부한 마크다운 문서 작성이 가능하고, 원본 소스의 Description 보존
- Amundsen
- 테이블 별 태그 부여 가능
- 역시 테이블 별/컬럼 별 마크다운 제한적인 문서 작성이 가능하고, 원본 소스의 Description을 보존하지 않음
오너십
- Datahub
- 테이블에 유저/그룹 단위로 오너십 지정 가능
- Amundsen
- 테이블에 유저 단위로만 오너십 지정 가능
인증 및 권한
- Datahub는 SSO 지원 및 세부적인 권한 설정 가능
- SSO(Single Sing-On)로 Keycloak, Okta, Google Auth 지원
- 사용자/그룹 단위로 정책 부여가 가능
- 현재는 View 관련 권한은 설정이 불가능하나, 테이블이나 컬럼에 대한 설명, 오너, 태그 등을 수정할 수 있는 Edit 권한을 세부적으로 조정 가능
- Amundsen은 SSO을 지원 및 세부적인 권한 설정 불가능
- SSO 로 Keycloack, Okta, Flask_oidc 지원
- Amundsen은 자체적인 권한 설정을 지원 불가능
데이터 소스 지원
두 플랫폼 모두 BigQuery, Mysql, dbt, AWS S3 등 대중적으로 쓰이는 데이터 소스를 지원한다. 이에 추가로, Amundsen은 pandas, neo4j 등의 더 다양한 형태를 지원한다.
서포트
공식 Github Repository 의 Star 수를 비교했을 때, Datahub가 4.5K, Amundsen이 3K 로 Datahub 가 더 많은 Star를 보유하고 있다. 또한 두 플랫폼 모두 공식 슬랙, 웹사이트 등 다양한 채널을 지원하나 활성화 측면에서 Datahub가 좀더 우세하다.
최종 결정: Datahub
가장 결정적인 이유는 사용성 차이였다. 데이터 이용자 측면에서는 Datahub가 다양하고 풍부한 기능을 제공하여 데이터를 빠르게 찾고 쏘카의 데이터 디스커버리를 발전시키는 데 도움이 되었다. 또한, 플랫폼 개발자 측면에서도 Datahub가 메타데이터 주입이 더 편리하고 간단하여 유용할 것이라고 판단했다. Amundsen의 Python Script가 길고 복잡한 반면, Datahub는 간단한 yaml 파일로 메타데이터를 주입할 수 있어서 효율적이었다.
PoC 시 Datahub의 깔끔한 UI가 많은 호응을 얻었고, 매 버전마다 UI가 개선되고 있어서 Datahub를 선택했다.
Datahub의 공식 슬랙 채널은 현재 2,000명이 넘는 사용자가 활동하고 있으며, 다양한 주제별 채널에서 질문과 오류 대응이 활발하게 이루어지고 있다. 또한, 새로운 기능을 제안하는 채널도 따로 있어서 사용자의 피드백을 적극적으로 반영하고 있다. 최근 발생한 Log4j 취약점 사태에도 신속하게 대응하여 패치가 반영되었으며, 모든 진행 상황이 슬랙을 통해 공유되고 있습니다. 사용자의 질문에 대한 답변이 빠르게 이루어지는 것으로 보아, 데이터 디스커버리에 관련된 국내 자료가 부족한 상황에서 신입 엔지니어들에게는 매우 중요한 서포트 시스템이라고 생각된다.