구축사례 / Data Pipeline
사람이 하루 {{4}}시간씩 훑던 상품·가격을 새벽에 모아 둡니다.
외부 소스 {{14}}곳의 상품·가격을 새벽에 모아 정규화합니다. 실패하면 {{12}}분 안에 알림이 갑니다.
Overview
프로젝트에서 한 일.
외부 소스 {{14}}곳의 여행 상품과 가격을 정기 수집하고 형식이 제각각인 데이터를 하나의 규칙으로 정리했습니다. 구조가 바뀌면 감지하고 실패하면 재시도하며 그래도 안 되면 담당자에게 알림이 가도록 만들었습니다. 넘긴 지 {{14}}개월이 넘었고 지금도 돕니다.
크롤러는 하루면 만듭니다. 그게 내년에도 돌게 하는 게 일입니다.
외부 사이트는 예고 없이 구조가 바뀝니다. 한 소스가 깨졌을 뿐인데 전체 적재가 멈추기도 하고 더 나쁜 경우엔 아무도 모르는 채로 그날 데이터만 조용히 비어 있습니다.
실패하면 {{12}}분 안에 담당자에게 알림이 갑니다.
전 소스를 하나의 크롤러로 묶자는 안도 있었는데 그건 권하지 않았습니다. 한 곳이 바뀔 때마다 전체를 다시 만져야 합니다.
소스 분리
소스마다 수집 로직을 따로 뒀습니다. 한 곳이 바뀌어도 나머지 {{13}}곳은 그대로 돕니다.
변경 감지
페이지 구조가 달라지면 수집 전에 걸러 냅니다.
재시도와 알림
실패는 세 번까지 다시 시도하고 그래도 안 되면 사람에게 넘깁니다. 알림에는 어느 소스가 어디서 멈췄는지 적힙니다.
데이터 정리
중복과 필수값을 확인하고 상품·가격을 공통 형식으로 맞춥니다. 하루 {{120,000}}건.
운영 확인
수집 현황과 실패 원인이 한 화면에 뜹니다. 그 화면은 고객사 담당자가 직접 엽니다.
Evidence
지금도 도는 것
넘긴 지 {{14}}개월째입니다. 최근 {{90}}일 성공률은 {{99.6}}%입니다.
소스 구조가 바뀌어 손본 게 그동안 {{6}}번. 평균 {{1}}일 안에 복구했습니다.
데이터 흐름도와 실패 알림 화면은 상담 때 보여 드립니다. 수집 대상 사이트 이름은 가립니다.