Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Airbnb Minerva

Airbnb Minerva

Minerva

Buzzvil

June 03, 2022
Tweet

More Decks by Buzzvil

Other Decks in Programming

Transcript

  1. Metric Platform Metric - 1일당 unique user 수 - 한달동안

    unit에서 발생한 매출 합계 - 1시간동안 찍힌 impression 수 Metric Platform - 위의 Metric들을 매번 유저가 직접 쿼리/코드로 만드는 것이 아니라, Metric을 정의하여 언제나 일관된 방식으로 플랫폼을 사용하는 모든 사람이 일관된 값을 볼 수 있도록 만들어주는 서비스
  2. A Brief History of Analytics at Airbnb “core_data” 라는 주요한

    table set을 만들고 분석을 활성화 시켰음 - Experimental Reporting Framework - Democratizing Data at Airbnb - Superset: Airbnb’s Data Exploration Platform - How Airbnb Democratizes Data Science With Data University - Scaling Knowledge at Airbnb
  3. Example INSERT INTO table_b ( SELECT DATE_TRUNC(‘day’, P.created_at) AS data_at,

    P.unit_id, P.resource_id, P.resource_type, SUM(amount) AS reward FROM prod_pointsvc.g_vw_point P WHERE P.resource_type in (‘feed’, ‘lottery’) GROUP BY 1, 2, 3, 4 ); SELECT SUM(amount) FROM table_b roulette이 추가된 것을 반영하지 못함 INSERT INTO TABLE_A ( SELECT DATE_TRUNC(‘day’, P.created_at) AS data_at, P.unit_id, P.resource_id, P.resource_type, SUM(amount) AS reward FROM prod_pointsvc.g_vw_point P WHERE P.resource_type in (‘feed’, ‘roulette’, ‘lottery’) GROUP BY 1, 2, 3, 4 ); SELECT SUM(amount) FROM table_a
  4. Minerva is Standardized Event와 Dimension으로 분류하여 denormalize 하는 것으로 일반화

    Event - impression - click - … Dimension - unit - lineitem - ad_group - device - …
  5. Minerva is Scalable - Self-healing Error가 발생해서 실패하게되는경우 1. data

    asset owner에게 실패 알림을 전달함 (manual re-execution이 필요한 작업) 2. 처리하지 않는다면 다음 DAG run에서 자동으로 같이 처리 (물론 재시도한다고 성공한다는 보장은 없음) >>>
  6. Minerva is Scalable - Automated Backfill 2020년 데이터 전체를 backfill해야

    하는 데, 하루씩 수행하면 너무 느리므로 monthly batch로 실행 (underlying infrastructure가 받쳐줘야 함)
  7. Minerva is Consistent Dimension Source 1이 업데이트 되면, Dimension Set

    A123, B123의 data version이 업데이트 됨 data version이 업데이트 되면, backfill 동작
  8. Minerva is Highly Available production data를 바탕으로 staging data 생성

    현재 시점까지 staging data가 모두 만들어지면 production data로 승격
  9. A Metric-Centric Approach General use case - 유닛(dimension)에 따른 CTR

    (metric)을 대시보드/서비스 등으로 저장 - 쿼리할 테이블을 찾고, 조인/필터를 한 뒤, 집계 Challenges 1. Where: 테이블을 찾는 것 2. How: 조인/필터, 집계 3. Downstream Application과 통합
  10. Metadata Fetcher: Abstracting the “Where” Valid Minerva data source list를

    받아와서 - Druid를 통해 각 data source에 대한 metric, dimension 리스트, valid date range 등의 metadata를 MySQL에 저장 - 유저가 “내가 필요로 하는 데이터를 가진 테이블을 찾는 행위" 를 하지 않아도 된다
  11. Data API: Abstracting the “How” “price_per_night” metric은 “gross_booking_value_stays / nights_booked”

    로 계산됨 따라서 request를 두개 metric 기준으로 분리하여 계산한 다음 최종 결과를 합침 Request Sample
  12. 진짜로 알고싶으면.. Airbnb Minerva 1, 2, 3 Airbnb Data Quality

    1, 2, 3, webinar Uber Metric Standardization, Data Quality Transform Metric Store Summit 2022 ModernDataStack