Minerva1. Airbnb’s Metric Platform


원문 주소

https://medium.com/airbnb-engineering/how-airbnb-achieved-metric-consistency-at-scale-f23cc53dea70

Introduction

  • 에어비앤비에서는 중요한 결정을 할때 데이터에 의존한다. randomized controlled experiments를 통해 제품 아이디어를 검증하고, 이해 관계자의 가치를 극대화하기 위해 비즈니스 성과를 엄격하게 추적한다. 이를 달성하기 위해 내부 사용자의 End To End 요구사항을 충족하는 강력한 데이터 플랫폼을 구축해야 했다.
  • 이번 포스트에선 분석, 보고 및 실험을 위한 Single Source of Truth로 전사적으로 사용되는 Airbnb의 Metric Platform인 Minerva를 빌딩했던 과정을 설명할 예정임.
  • 특히, 왜 Minerva를 만들었는지, Minerva의 주요한 기능들, 그리고 Airbnb에 끼쳤던 영향들을 조명하겠다.

A brief History of Analytics at Airbnb

  • 초기에는 한명의 분석가만 있었다. 운영 DB에 쿼리를 날린 경우도 있었으며, 쿼리가 서비스에 영향을 준 사례도 있었다.
  • 2010년도에 들며 더 많은 데이터 사이언티스트들이 들어왔고 데이터 또한 다양해지고 많아졌다. 이 시기부터 데이터 인프라를 업그레이드 및 안정화함.
  • airflow로 배치 작업들을 관리. core_data 라 불리는 중요 데이터 테이블을 빌딩. experimentation platform 을 통해 A/B testing 문화를 도입함. Dataportal로 데이터 카탈로깅을 시작함. Superset으로 개인적으로, 또한 상호작용하며 데이터를 분석함. Data University를 런칭하여 데이터 분석에 필요한 기술들을 교육함

Growing Pains

  • 데이터의 급격한 증가로 인해, 데이터 공급 혹은 소비자들에게 많은 문제가 발생했다.
  • 분석, 예측, 실험 용도로 다양한 core data 테이블들을 생성했다. 그러나 비슷한 테이블들이 이미 있는지 확인이 안되었다. 앞단의 데이터 이슈가 변경되면, 뒷단의 데이터들이 문제 없는지 보장을 못하는 상황이 발생한다. dependency를 디버깅하는데 많은 시간이 소요된다. 이러한 작업들은 종종 비생산적이고 무기력감을 준다. 아래 사진을 보면, Core Data 위에 complex한 테이블들이 여러개 쌓이게 되고 이는 growing pain이 된다.

Minerva1.jpg

  • business metric이 team별로 상이한 문제가 발생한다.
    • For data comsumption, we heard complaints from decision makers that different teams reported different numbers for very simple business questions, and there was no easy way to know which number was correct.
    • CEO가 어떤 도시에서 주간 예약이 가장 많은지 요청했으나 Data 팀과 Finance팀의 답이 달랐음. 심지어 data scientist들 조차 그들의 데이터에 의문을 품었으며 데이터에 대한 신뢰가 떨어짐.

Overcoming Our Growing Pains with Minerva

  • 몇개의 중요한 key에 대하여 데이터 모델링을 다시함. 불필요한 조인을 하지 않는 certified, lean, normalized table을 맨바닥부터 다시 만들었다.
  • 테이블을 통해 인사이트를 제공하기 위해서는 programatic한 작업을 통해 분석 친화적인 데이터셋을 만들어야 한다. business logic이 바뀔때마다 backfill 해야 한다. 각각 다른 consumption tool에서도 일관성있고 알맞은 데이터들이 제공되어야 한다.
  • 이 단계에서 Minerva 툴이 등장했다. Minerva는 Fact, Dimension 테이블들을 Input으로 받고,Denormalization, Aggregation을 맡아 downstream application들에 전달한다. Minerva API는 업스트림 데이터와 다운스트림 소비간의 차이를 매워주므로 DE팀은 다양한 다운스트림 소비자에 대한 지원을 유지하면서 core table을 유연하게 수정할 수 있다. 이 API는 Airbnb의 차세대 데이터웨어하우스 아키텍쳐에서 중요한 역할을 한다.
  • Minerva에는 12000개의 metric, 4000개의 dimension이 있으며 200개 이상의 데이터 생산자가 다양한 기능(예: Data, Product Management, Finance, Engineering)과 팀(예: Core Product, Trust, Payment)에 걸쳐 있다.

Minerva2.jpg

Data Production in Minerva

  • 인프라 관점에서 Minerva는 오픈소스 프로젝트 위에 구축된다. worflow ochestration을 위해 Airflow를 사용하고 컴퓨팅 엔진으로 Apache Hive와 Apache Spark를 사용하며, Data Consumption으로 Presto와 Apache Druid를 사용한다. Metric 생성부터 계산 서빙 소비 그리고 결국 폐지까지 Minerva는 metric의 전체 수명 주기를 다룬다.

Minerva3.jpg

  • Metrics Definition
    • 핵심 비즈니스 지표, dimensions, metadata등을 전 사원이 업데이트 할 수 있는 Github repository안에서 볼 수 있도록 관리한다.
  • Validated Workflow
    • code review, static validation, test runs를 강제한다.
  • DAG Orchestration
    • 데이터 재사용, intermediate joined result를 최대한 활용하여 데이터 비정규화를 효율적으로 진행한다.
  • Computation Runtime
    • job 실패 후 복구 자동화, data quality를 보장하는 built-in check가 있는 정교한 computation flow를 가지고 있다.
  • Metrics / Metadata Serving
    • aggregated metric과 raw metric을 온디맨드로 제공하는 통합된 데이터 API를 serving
  • Flexible Backfills
    • data definition에 대한 버전관리를 하고 있어, 데이터셋에 중요한 변경이 생기면 자동으로 tracking 및 backfill
  • Data Management
    • cost attribution, GDPR(General Data Protection Regulation) selective deletion, data access control, auto deprecation policy등을 지원
  • Data Retention
    • usage-based retention, garbage collection등을 통해 잘 사용하지 않지만 비싼 데이터들을 삭제.

Data Consupmtion in Minerva

  • Minerva의 목표는 “지표를 한번 설정하고 모든 곳에서 활용하자”
    • define metrics once, use them everywhere”
    • 생성된 지표는 대시보드(ex Superset)에서 쉽게 접근할 수 있어야 한다.
    • A/B 테스팅 플랫폼인 ERF, anomaly detection algorothm등에 추적될 수 있어야 한다.

Minerva4.jpg

Data Catalog

  • Dataportal에 모든 Minerva metric과 dimensions를 연결시킨다. Dataportal에서 search할 경우 Minerva의 metric을 최상단에 보여준다. certification status, ownership, popularity와 같은 문맥 정보들도 넣는다. 비개발자들에게 Dataportal은 Minerva의 metric에 대한 첫번째 진입점이다.

Minerva5.jpg

Data Exploration

  • Dataportal에서 누르면 바로 쓸 수 있는 data exploration 페이지에 접속할 수 있다. group by, filter등을 이용하여 데이터들을 slicing, drill down 하여 볼 수 있다. superset view를 통해 더 고도화된 분석을 할 수 있다. metric owners, historical landing time, metric description등 데이터 문맥 정보들도 확인 할 수 있다. 데이터, 비데이터 직군의 관계 없이 데이터로부터 인사이트를 추출할 수 있도록 설계된 디자인이다.

Minerva6.jpg

A/B Testing

  • ERF(Airbnb A/B 테스팅 툴)는 원래 실험지표 repository를 따로 가지고 있었다. 실험 이외의 목표에는 활용이 불가능했다. 이에 ERF와 Minerva를 합치기로 함. A/B 테스트에 필요한 지표는 Minerva에서 갖고오도록 한다. 분석/실험에 같은 지표를 사용하게 되면서 실험 지표들이 비즈니스에 끼치는 영향에 대한 확신을 주게 된다.

Executive Reporting

  • business performance를 주기적으로 리뷰하면서 executive report가 필요하게 됨.
    • 간결하고 high-level 데이터가 필요함
    • aggregated된 데이터가 종종 있으며, 트렌드가 분석되고 시각화된다. 지표들의 움직임이 실행중인 집계(예: 연도 대 날짜) 및 시간 비율 비교(예: 연도별) 로 표시됨.
  • 이러한 종류의 리포팅을 위해, eXecutive Reporting Framework(XRF)을 구축함.
    • metric과 dimension을 받아서 시계열 데이터로 변환해준다.
    • 수동적인 작업들을 자동화함.

Minerva7.jpg

Data Analysis

  • Airbnb의 자체 R과 Python에 Minerva API를 연동함. 분석가는 notebook으로 Minerva data에 쿼리가 가능. notebook환경에서 계산되는 방식은 Superset, Metric Explorer와 같은 툴에서 계산하는 방식과 같음. 분석가가 원하는 분석 난이도에 따라 원하는 툴을 선택할 수 있다는 점에서 시간을 절약할 수 있다. 데이터 API를 바탕으로 내부 툴을 prototyping하기 좋다. 예를 들어, Airbnb에서는 time series analysis tool, email reporting framework를 개발함.

How We Responded To the COVID-19 Crisis with Minerva Data

  • 코로나 바이러스가 nights backlog에 미친 영향은? 점유율에 미친 영향은? 취소로 인한 경제적 임팩트는?
    • 이러한 질문들을 Minerva를 통해 빠르고 정확하게 찾아야함
    • 여러 지표들이 Minerva에 이미 정의되어있기 때문에 쉽게 대시보드화 할 수 있었다.
  • Minerva로 얻은 인사이트를 바탕으로 급격히 변화는 지점을 찾을 수 있었다.
    • 예를 들어 loval travel, loger-term stays로의 수요 변화를 발견하고 이를 product page에 반영할 수 있었다.