데이터 계보
Data Lineage
개념
화면에 뜬 숫자 하나가 어느 원천에서 나와 어떤 가공을 거쳐 여기까지 왔는지를 단계별로 이어 놓은 경로입니다.
등장 배경
분석에 쓰는 숫자는 한 자리에서 만들어지지 않습니다. 결제 서비스가 남긴 기록이 회사 저장소로 옮겨지고, 중복과 실패한 요청이 걸러지고, 계정 정보와 합쳐지고, 월 단위로 묶인 뒤에야 대시보드의 매출 칸에 들어갑니다. 중간에 거치는 표가 대여섯 개인 것이 보통입니다.
이 경로가 어디에도 적혀 있지 않으면 두 방향으로 막힙니다. 숫자가 이상할 때 거슬러 올라갈 수 없고, 앞쪽을 고칠 때 뒤쪽에 무슨 일이 생길지 알 수 없습니다. 거슬러 올라가려면 대시보드가 보는 표의 계산식을 열고, 그게 읽는 표를 찾아 또 열고, 그 표를 만든 사람을 찾아 물어보는 일을 반복해야 합니다. 한 단계마다 반나절씩 걸립니다.
페이지덱에서는 반대 방향의 사고가 먼저 났습니다. 태오가 결제 기록 표에서 쓰지 않는다고 판단한 칸 하나의 이름을 바꿨는데, 그날 아침 규원이 보는 주간 보고의 매출 칸이 전부 빈 값으로 나왔습니다. 그 칸을 세 단계 아래의 표가 참조하고 있었습니다. 원인을 찾는 데 이틀이 걸렸고, 이틀 중 대부분은 어디를 봐야 하는지 몰라서 쓴 시간이었습니다.
계보는 이 경로를 사람이 기억하지 않고 기록으로 두자는 발상입니다.
작동 방식
각 가공 단계가 어떤 표를 읽고 어떤 표를 쓰는지를 기록해 두고, 그 읽기와 쓰기를 화살표로 이어 붙입니다. 결과는 표와 화면이 점이고 가공 단계가 선인 그림 하나가 됩니다.
경로를 모으는 방법은 셋입니다.
- 쿼리를 읽어 자동으로 뽑습니다. 저장소에서 실행된 문장에는 어떤 표에서 읽어 어떤 표에 넣었는지가 이미 적혀 있습니다. 그 기록을 모으면 사람이 따로 적지 않아도 경로가 만들어집니다.
- 변환 도구가 선언한 의존 관계를 씁니다. 표를 만드는 규칙을 한곳에 모아 두는 데이터 파이프라인 도구들은 어느 표가 어느 표에서 나오는지를 설정에 적게 합니다. 그 설정 자체가 경로입니다.
- 나머지는 손으로 적습니다. 사람이 파일을 내려받아 계산한 뒤 다시 올리는 구간, 스프레드시트를 거치는 구간은 자동으로 잡히지 않습니다.
단위는 두 가지로 봅니다. 표 단위 계보는 결제 원천 표에서 스테이징 레이어의 정제 표로, 거기서 마트 레이어의 월 매출 표로, 다시 대시보드로 이어지는 큰 흐름을 보여 줍니다. 칸 단위 계보는 그 안에서 매출 칸 하나가 원천의 어느 칸에서 왔는지까지 짚습니다. 칸 단위가 필요한 이유는 표가 이어져 있다고 해서 모든 칸이 영향을 받는 건 아니기 때문입니다.
방향은 둘로 부릅니다. 지금 보는 표 쪽으로 흘러 들어오는 앞쪽이 상류, 이 표를 읽어 가는 뒤쪽이 하류입니다. 숫자가 이상할 때는 상류를 보고, 무언가를 고치기 전에는 하류를 셉니다.
쓰이는 곳
네 자리에서 쓰입니다.
- 이상한 숫자를 거슬러 올라갈 때입니다. 3월 매출이 두 배로 뛰었다면 상류를 따라가며 어느 단계에서 값이 뛰었는지 봅니다. 원천에서 이미 두 배면 결제 서비스 쪽 문제이고, 정제 단계부터 두 배면 중복을 걷어 내는 규칙이 깨진 겁니다.
- 고치기 전에 영향 범위를 셀 때입니다. 칸 이름을 바꾸거나 표를 지우기 전에 하류에 무엇이 있는지 셉니다. 표 셋과 대시보드 둘이 걸려 있다고 나오면 그 다섯 곳의 주인에게 미리 알리고 바꿉니다.
- 쓰지 않는 표를 정리할 때입니다. 하류가 비어 있고 최근 석 달 동안 아무도 조회하지 않은 표는 지울 후보입니다. 계보가 없으면 지워도 되는지 확신할 수 없어 아무도 손대지 않고, 표는 계속 늘어납니다.
- 민감한 값이 어디까지 흘렀는지 확인할 때입니다. 회원 이메일이 든 칸이 하류의 어느 표까지 복사됐는지 알아야 열람 권한을 그 표들에도 같이 걸 수 있습니다.
같은 그림이 지표 정의를 맞출 때도 쓰입니다. 지표 정의는 무엇을 어떻게 세는지 못 박은 규칙인데, 정의가 같아도 계산이 서로 다른 표에서 이뤄지고 있으면 결과가 갈립니다. 계보를 펴 보면 매출이라는 이름의 칸이 서로 다른 두 경로에서 나오고 있다는 사실이 바로 드러납니다.
실무 용례
"이 숫자 계보 좀 봐 주세요. 어느 단계에서 틀어졌는지 모르겠어요."
경로를 따라 원인 구간을 좁히자는 요청입니다.
"그 칸 지우기 전에 하류 확인했어요? 대시보드 세 개가 물려 있어요."
고치기 전에 영향받는 곳을 먼저 세라는 말입니다.
"계보가 스프레드시트 구간에서 끊겨요."
사람이 손으로 옮기는 단계가 중간에 있어 경로가 이어지지 않는다는 뜻입니다.
앞의 사고 이후 페이지덱은 저장소에서 실행된 쿼리를 모아 표 단위 경로를 그리게 해 뒀습니다. 그림이 처음 나온 날 알게 된 것은 매출 표가 둘이라는 사실이었습니다. 지현이 쓰던 것은 결제 서비스 기록에서 나왔고, 수아가 보던 것은 영업 도구에 손으로 입력한 값에서 나왔습니다. 두 숫자가 매달 3퍼센트쯤 어긋났는데, 그동안은 반올림 차이라고 여기고 넘어가고 있었습니다.
지금 페이지덱에서는 표를 지우거나 칸 이름을 바꾸기 전에 하류 목록을 뽑아 붙이는 것이 개발팀의 관행입니다. 이틀짜리 사고를 다시 겪지 않으려는 것이고, 실제로 그 뒤로는 같은 유형의 장애가 없었습니다.
흔한 오해
도구를 붙이면 계보가 저절로 완성된다고 생각하기 쉽습니다. 쿼리에서 경로를 뽑아내는 일은 실제로 자동으로 되니 그렇게 보입니다. 하지만 자동으로 잡히는 건 저장소 안에서 일어난 일뿐입니다. 누군가 파일을 내려받아 계산한 뒤 다시 올리는 구간, 외부 도구가 안에서 하는 계산, 대시보드 안에 적어 둔 수식은 그림에 나타나지 않습니다. 끊긴 구간을 표시해 두지 않으면 그림이 완전하다고 믿게 되고, 하류가 비어 보이는 표를 지웠다가 실제로는 쓰이던 표를 날리게 됩니다.
계보가 원인까지 알려 준다고 여기는 것도 잦습니다. 경로를 펼치면 어느 단계에서 값이 달라졌는지는 보이지만, 그 단계가 왜 그렇게 됐는지는 규칙을 읽어야 압니다. 계보가 하는 일은 봐야 할 곳을 대여섯 개에서 한 개로 줄이는 것까지입니다.
자주 헷갈리는 용어
| 용어 | 무엇을 적어 두는가 | 데이터 계보와의 차이 |
|---|---|---|
| 데이터 카탈로그 | 어떤 데이터가 어디에 있고 각 칸이 무슨 뜻인지 | 지금 있는 것의 목록이라 표 하나를 열었을 때 뜻과 주인과 갱신 시점을 알려 줍니다. 계보는 그 표들 사이의 연결을 다뤄서, 이 표가 어디서 왔고 어디로 가는지를 알려 줍니다. 둘은 대개 한 화면에 함께 놓입니다 |
같이 보면 좋은 페이지
마지막 업데이트 2026-09-16