마이리얼트립 EDW(Enterprise Data Warehouse) 구축 : phase 1

조성호(Hassan)
How we build MyRealTrip
7 min readMay 8, 2020

마이리얼트립 Data platform팀은 여행자에게 최고의 여행 서비스를 제공하기 위해 사용자의 구매/행동/상품/이벤트/마케팅등 내/외부 데이터를 쉽고 빠르게 분석 할 수 있도록 데이터를 수집하고 관리합니다. 회사가 성장하면서 비즈니스 요구 사항이 증가하고, 업무가 늘어남에 따라 데이터가 점점 복잡해지고 데이터의 양도 많아지게 됩니다. 현재 시스템으로 미래를 대비할 수 없다고 판단해 마이리얼트립에 가장 적합한 EDW(Enterprise Data Warehouse)를 구축하게 되었습니다.

EDW의 구축 phase 1에서는 5가지의 목표(빠른 수집, 안정적인 데이터 제공, 체계적인 데이터관리, Data Quality, 통제 가능한 시스템)로 하여 통합 데이터 수집 시스템을 개발하게 되었습니다.

1. 빠른 수집

빠른 비즈니스 대응을 위해서 신규로 생성되는 데이터에 대한 이관 시간을 최소화 할 수 있도록 ETL Job Meta를 설계/적용하여 ETL(exact/transfer/load)을 자동화하였습니다.

마이리얼트립은 신규 데이터에 대한 수집/이관/검증이 10분 이내로 가능합니다. 신규 개발된 통합 데이터 수집 시스템은 오직 Job Meta DB에 테이블 정보와 ETL Job 이름 Target 테이블 정보 등 필요한 정보만 넣어 주게 되면 자동으로 수집/이관/검증이 완료됩니다.

현재 통합 데이터 수집 시스템에서 사용 중인 Airflow는 Dag의 숫자가 증가하면 시스템의 장애 이슈가 매우 커지고 개발/운영이 매우 복잡하고 느려지게 됩니다. 이런 문제들을 해결하기 위해 ETL Job meta를 이용하여 주제지향적으로 Dag를 운영한다면 이러한 문제들을 해결 할 수 있습니다.

  • AS-IS 이관 프로세스
    데이터 이관 요청 → Dag 개발 → 데이터 이관 → 데이터 수동 검증 → 제공
  • 신규 이관 프로세스
    데이터 이관 요청 → Meta DB값 → (데이터 이관 및 검증 자동) → 제공
ETL Job Meta Table
Airflow 자동 생성 및 실행

2. 안정적인 데이터 제공

데이터 수집 시스템은 항상 장애에 대비 해야 합니다. 장애 발생 시 빠르게
인지 해야 하고, 재작업을 최대한 빠르게 진행되어야 합니다. 신규 통합 데이터 수집 시스템은 Job에 대한 로깅 및 Alert system을 적용하였습니다.

ETL Job 실패 시 Slack으로 자동으로 알람이 발송되고 원인에 대해서 빠르게 확인 할 수 있도록 합니다. Slack 채널 연동은 별도의 코딩 없이 Job Meta 테이블에 신규로 모니터링 해야 하는 공간 정보만 넣어주면 추가가 가능합니다.

또한 일시적인 장애로 인한 적재 이슈를 해결하기 위해서 Job meta에 재시도 주기를 추가하면 에러 발생 시 자동으로 설정한 주기에 따라서 Job을 Retry 합니다. (보통 장애는 새벽에 발생하고, 이러한 장치가 있어야만 데이터 엔지니어들이 밤잠을 설치지 않을 수 있습니다)

Slack alert meta 등록

Slack Meta 등록 예제
Slack alert message 예제

airflow 상세 Log 확인

airflow 상세 log확인 예제

3. 체계적인 데이터 관리

회사의 비즈니스가 복잡해지고 지속해서 성장하기 위해 데이터는 체계적으로 관리 되어야 합니다. 마이리얼트립의 EDW는 데이터 프로세스를 적용하여 효율적으로 운영할 수 있으며, 데이터 거버넌스를 적용하여 데이터 사용의 편의성과 안정성을 가져갈 수 있도록 하였습니다.

EDW Flow

Job / Table 명명규칙 적용

테이블 명명 규칙 예제

데이터 사전 적용
마이리얼트립에서 사용하는 단어를 관리하여 정보의 통일성을 가져간다

단어 사전 예제

컬럼 자동 생성
사전 정의된 단어 사전을 참조하여 자동으로 컬럼명을 생성한다.

컬럼 자동 생성 예제

4. Data Quality 보장

데이터는 항상 신뢰성이 보장되어야 합니다. 데이터의 신뢰성을 보장하기 위한 장치는 최소한의 리소스로 빠른 인지를 할 수 있도록 해야 합니다.
ETL Job이 실행되면, 다양한 방법으로(count, sum, min, max …) 원천/타겟 테이블에 대한 데이터 검증을 하고 Job 실행 로그에 기록됩니다.

DQ Check type
DQ Meta 정보 추가
DQ 결과 확인

5. 통제 가능한 자체 시스템 구축

데이터 이관 시스템의 Core 부분은 자체적으로 개발하였으며, Airflow의 일부 스케줄링 기능만을 이용하여 구축하였습니다. 기존에 사용 중인 3rd party 데이터 수집 솔루션에 대한 종속성을 완전히 끊어 버렸습니다. 이로 인해 3rd party 솔루션에서 제공되지 않는 데이터 소스도 안정적으로 제공 가능하고 데이터 증가로 인한 솔루션 사용 비용 증가를 방지 할 수 있었습니다.

기존에는 여러 솔루션을 이용하여 case-by-case로 관리를 하고 있었지만 이런 운영은 장애인지도 상당히 늦어질 수 있으며, 장애 대응 비용도 상승할 수 있습니다.

마이리얼트립의 신규 통합 데이터 수집 시스템은 여러 플랫폼에서
수집하고 있는 데이터 수집기를 일원화하여 통합 관리를 통해 운영 비용을
최소화하였습니다.

as-is 데이터 수집 시스템
신규 데이터 수집 통합 시스템

마이리얼트립의 데이터 플랫폼 프로젝트는 클라우드에 비종속적으로 설계하고 있습니다. 이유는 특정 클라우드 서비스에 Lock-in이 되지 않기 위해서 입니다. 클라우드를 운영하다 보면 처음에는 데이터 분석에 대한 비용이 적게 발생 되지만, 비즈니스가 성장하면 할수록 데이터가 폭발적으로 증가를 하게 되고, 이로 인해 클라우드 비용이 폭발적으로 증가합니다.

마이리얼트립은 클라우드에서 제공하고 있는 장점 중에서 꼭 필요한 기능을 활용하여 통합 데이터 시스템을 만들어 가고 있습니다.
데이터의 체계적인 관리는 데이터로 움직이는 서비스 및 회사를 만들기 위해 반드시 필요합니다. 데이터를 개발/운영하는 분들께 이 글이 도움 되었기를 바라며 앞으로의 Phase2, 3에 대해서도 지속적해서 공유 하도록 하겠습니다.

마이리얼트립 Data Platform팀은 데이터를 분석하여 여행자에게 최고의 여행을 선사하고자 노력하고 있습니다. 팀과 회사에 대해 궁금하신 분들은 아래의 페이지를 방문해주세요.
https://career.myrealtrip.com/

--

--