데일리 미션/Article

Article : 신뢰할 수 있는 지표 만들기

pipiiiiii 2024. 1. 12. 13:52

https://datarian.io/blog/create-metrics-we-can-trust?utm_source=home-copy&utm_medium=home-copy

 

신뢰할 수 있는 지표 만들기

A 대시보드와 B 대시보드에 있는 지표 값이 다른데 어떤 값을 봐야 하나요?

datarian.io

 

 

 

<아티클 내용 요약>

지표란 무엇이고, 우린 왜 지표를 볼까요?

- 성과를 측정하고 평가하기 위한 측정 항목이다. 

- 지표를 본다는 것 팀, 기업의 목표나 전략이 있고 그 목표가 어떤 성과를 달성하고 있는지 파악한다는 것을 뜻한다. 

 

 

 

지표를 볼 때 어떤 문제점들이 올바른 의사결정을 방해할까요?

- 아래와 같은 이야기가 들린다면 지표를 한 번 더 확인해봐야 한다. 

  1. 'A 대시보드와 B 대시보드에 있는 지표 값이 다른데 어떤 값을 봐야 하나요'
  2. '이 지표의 정의는 어떻게 되나요? 이 지표가 어떻게 계산되는지 아시는 분이 계신가요?'
  3. '4월에 봤을 때와 지금 7월에 봤을 때 지표 값이 달라진 것 같은데 확인해 주실 수 있을까요'
  4. '3월 17일부터 지표 값이 갑자기 급증했는데 왜 그렇게 된 건가요'

- 이 말들이 들리면 지표의 정의부터 계산까지 프로세스 관리가 안 되고 있다는 것이다. 

- 그리고 이는 곧 아래의 문제점들이 있다는 것을 의미한다.

  1. 같은 지표에 대해 팀마다 다른 값을 보고 있다.
  2. 지표의 정의나, 지표가 계산되는 로직을 알기 어렵다.
  3. 지표가 신뢰할 수 없는 형태로 계산된다.
  4. 지표가 중간에 값이 변경되었을 때 그 이유를 파악하기 어렵다. 

 

 

신뢰할 수 있는 지표 만들기

  1. 신뢰할 수 있는 지표 정의
    - 산재되어 있던 지표들에 대한 정보를 문서로 모았다. 
    - 이후 신뢰할 수 있는 형태의 지표로 만들기 위해 아래와 같이 작업했다.
    • 지표의 정의와 로직을 한 곳에서만 정리
      - 문서로 정리한 각 지표에 대한 정의와 비즈니스 로직을 다시 확인해서 정의에 대한 교차 검증을 했고, 필요한 경우 지표의 정의와 로직을 수정했다.
      - 정리가 된 후에는 해당 내용을 코드로 옮겼다.
      - 코드로 지표를 관리하게 됨으로써 하나의 중앙화된 저장소에서 지표들을 관리 및 모니터링할 수 있게 되었다. 
      - 지표를 추가할 때 코드로 작성하고 리뷰를 받아야 하므로 지표에 대한 정의나 로직을 다른 구성원들에게 확인받을 수 있게 되었다. 
    • 지표의 오너와 도메인 지정
      - 지표를 정의할 때 지표의 오너와 도메인을 지정해 추후 해당 지표에 대해 질문이 있을 때 쉽게 오너를 찾을 수 있도록 했다. 

    • 지표 로직 변화에 따른 지표 버저닝
      - 시간이 지남에 따라 사용되는 원본 데이터 소스나, 지표의 기준이 변경되는 경우가 있다.
      - 변경 사항으로 인해 지표의  값이 달라질 수 있기 때문에 변경사항을 잘 기록해 지표 정보에서 확인할 수 있도록 했다.
       
  2. 신뢰할 수 있는 지표 계산
    - 지표에 대한 정의와 비즈니스 로직을 문서로 모으니 기존 지표에서 계산된 방식에도 몇몇 문제점이 발견됐다.
    • 지표를 계산할 때 사용되는 앞단의 데이터 소스에 오류가 발생해도 기존 지표는 그래도 계산되어 지표 값이 맞지 않는 경우 발생
    • 지표 계산하는 스케줄링 쿼리가 실패해도 모니터링이 이뤄지지 않아 실패한 걸 인지 못함
    • 매번 전체 기간에 대해 계산해서 과거의 지표값이 달라지는 경우 발생
    • 지표를 특정 날짜에 대해 다시 계산했을 때 다른 값이 나오게 되어, 멱등성이 보장되지 않는 경우 발생
    • 그 외 등등
    - Airflow라는 워크플로우 툴을 활용해서 다시 구성하고, 지표가 신뢰 가는 방식으로 계산될 수 있도록 아래와 같은 작업을 했다. 
    • 통일된 기준으로 계산하기
      - 지표를 정의할 때 지표를 계산할 국가, time grain, 그 외 디멘션만 정의된다면 같은 방식으로 모든 지표가 계산될 수 있도록 했다. 
      - 지표의 값이 매번 볼 때마다 달라지는 것을 최소화하면서도 충분한 데이터로 계산될 수 있도록 하기 위해 결산이란 개념을 적용했다. 

    • 올바른 시점에 계산하기
      - 지표를 계산할 때 필요한 원본 데이터 소스들이 잘 준비된 시점 이후 국가별 타임존을 고려해서 계산되도록 했다. 
      - 지표 계산에 필요한 앞단의 데이터가 온전한 경우에만 지표가 계산되도록 해서 잘못된 값이 최대한 보이지 않도록 했다. 

 

 

KarrotMetrics

- 신뢰할 수 있는 방식으로 지표를 정의해서 관리하고, 계산되도록 하는 이 전체적인 구성을 KarrotMetrics라는 이름으로 제품화했다.
- KarrotMetrics로 계산된 지표 값을 하나의 Source or truth로 보고 어느 BI Tool이나 서비스에서 사용할 수 있도록 했고 결과 전사 구성원들이 KarrotMetrics에 등록된 지표들에 대해서는 통일된 기준으로 보고 얘기할 수 있게 됐다. 

 

 

지표 Catalog

- 지표들은 코드로 관리되고 있지만 지표의 정의, 스키마 및 디멘션, 계산되는 로직, 지표의 설명, 오너의 정보 등을 조회하고 싶은 구성원들은 해당 툴로 확인할 수 있다.

 

 

KarrotMetrics 그 이후

- 의사 결정을 하거나 소통을 할 때도 객관적인 해당 지표 값 하나로 소통하는 덕분에, 의사결정 기준이 더욱더 명확해지고 효율적으로 됐다. 

- 지표를 KarrotMetrics에 추가하는 과정에서, 지표의 정의와 어떤 디멘션 단위로 보면 좋을지에 대해 고민하게 됐다. 지표는 회사가 나아가야 할 방향성에 대한 객관적인 성과를 보여주기 때문에, 고민하는 과정에서 각 팀이 어떤 부분에 가치를 두고 있고 앞으로 어떻게 나아가려고 계획하는지 서로 더 깊이 이해할 수 있게 됐다.

 

 

 

 

<알게 된 개념>

- Article이 흘러가는 흐름이 재밌었다. 정보 위주로만 있지 않고 한 편의 이야기를 보는 듯한 느낌이어서 술술 읽혔다.

그런데 마지막에 끝나는 게 뭔가.. 마치.. KarrotMetrics 홍보 같달까...

 

그래도 어제 읽은 Article과 비슷한 부분의 내용들이 있어 어제의 Article도 다시 이해할 수 있는 내용이었다. 

나도 당근에서 일하고 싶다