내가 이 주제에 대해 관심을 갖기 시작한 이유는 아래와 같다.
- 5년정도 데이터 엔지니어로 근무하며 다양한 데이터를 입수하게 된다.
- 입수한 데이터는 스키마만 본다고 아는게 아니다. 실제로 데이터를 까봐야함. 이 시간이 너~~무 오래걸림. 입수할 데이터로 지표를 생성하는 시간보다 파악하는데 더 오래걸림.
- 전달해주는 팀 또는 부서에서 문서화가 잘 되어있다면 모르겠지만 보통 그러지않은 경우가 많음
- 내가 구축한 시스템 상의 문제보다는 입수한 데이터가 이렇게 들어오면 안되는데? 하는 형식으로 데이터가 들어오고 그에 따라 시스템 장애 또는 통계 지표가 망가짐 (
장애 또는 마이그레이션)
- 남 탓도 못함. 그럼 입수한 모든 데이터를 모니터링 해야해? 그럼 모니터링 툴도 필요하겠네? (으..)
이런 경험을 하는 사람들이 과연 나 혼자일까?
아니다. 모든 데이터 엔지니어나 데이터 시스템을 구축하는 모두가 느끼고 있을 현실. 이런 상황에 도움이 되고자 Data Quality 에 대해 알아보고 관련 오픈소스 프레임워크도 살펴보자.
Background
Data Quality 는 Data System 을 구축하기위해 항상 중요한 주제였다.
(여기서 Data Quality 는 정말 데이터 품질을 말한다. 내가 원하는 품질의 데이터가 맞는가)
- 데이터 엔지니어링 팀 간(또는 서비스를 위해 타 팀에 전달)의 데이터 이동이 많지만, Data Quality는 데이터가 이미 엔지니어링된 데이터 파이프라인의 대상에 도달한 경우 문제가 되는 경우가 많다.
- 즉, 이미 파이프라인을 통해서 데이터 입수까지는 성공했는데 내가 예상했던 포맷이 아니거나 실제 Value 의 의미를 파악하는데 더 오래 걸릴 수 있다
힘들게 입수된 데이터가 기대한 지표를 추출하는데 어려움을 겪게된다. 왜 그럴까?
- 일부 Column 에 NULL 이 있거나
- 날짜 컬럼인데 다 다른 다양한 날짜 포맷이 있거나
- 데이터 분포가 예측에서 완전히 벗어나서 ML 모델에서 예상하지 못한 출력으로 이어지거나
- 일부 Column 에는 데이터 샘플을 수동으로 확인해야 파악이 가능한 혼합된 문제들..
Data Quality 문제는 데이터 분석가와 분석 엔지니어에게 전가된다.
하지만 이 문제는 그들이 해결해야하는 문제가 아니며, 데이터를 이동하고 재구성하며 경우에 따라 파이프라인에 품질 검사 및 테스트를 구축하는게 옳다.
어떤 이는 이렇게 말한다.
'Data Quality 와 Test 를 파이프라인에서 분리하는 순간 문제가 발생할 수 있다'
Getting Started With Data Quality
파이프라인 내에서 데이터를 테스트하는 기능을 추가하려면 올바른 도구를 선택해야한다.
- 일반적으로 코드에 대한 단위 테스트는 작성한다. 하지만 데이터를 테스트하고 있나?
- 올바르지않거나 형식이 잘못된 데이터는 프로덕션 시스템에 큰 영향을 준다
- 만약 데이터를 테스트하기 위한다면, 우리는 SQL 쿼리나 Python 함수 등을 작성하고 싶을 것이다
- 하지만 모든 데이터에 대한 사용자 지정 테스트를 작성하면 이것조차 자체 프로젝트가 되어 많은 리소스를 소비하게 된다
- 템플릿을 사용하고 테스트의 개별성을 유지하면서 가장 많은 수의 use case 를 다루기위해 최소 수의 테스트를 작성하고 싶다
- 이미 다양한 Data Quality 프레임워크가 있다
다양한 Data Quality 프레임워크가 있지만 그 중에서 가장 널리 채택된 오픈소스 프레임워크는 다음과 같다.
이런 이유말고도 Data Quality 프레임워크를 쓰는 이유가 많고 많다. 조금 정리해보자면..
- 데이터 정리 시간 절약
- 데이터 정규화 및 ETL 가속화
- anlytics-to-engineer 핸드오프 간소화
- 프로덕션 데이터 파이프라인 및 데이터 품질 모니터링
- 외부로부터 전달받은 새로운 데이터에 대한 검증 자동화
- 데이터 파이프라인이 중단되는 경우, 디버깅 단순화에 대한 도움
- 암묵적 지식을 명시적으로 구축
What is Data Observability?
요즘 Data Quality에 알아보니 동시에 언급되는 개념이 있다. 바로 Data Observability.
언뜻보면 두개의 개념이 비슷해 보이는데 잘 정리한 Article 이 있길래 가져와봤으니 참고해도 좋을 것 같다.