033-242-0210 info@axix.co.kr

구축사례 / Data Pipeline

AI 시스템 통합 여행 · OTA

사람이 하루 {{4}}시간씩 훑던 상품·가격을 새벽에 모아 둡니다.

외부 소스 {{14}}곳의 상품·가격을 새벽에 모아 정규화합니다. 실패하면 {{12}}분 안에 알림이 갑니다.

Solution 모두투어
Period {{2024.05 ~ 2024.08}}
Scope 웹 크롤링, 데이터 수집·정규화
Stack {{Node.js · PostgreSQL · Docker}}
Output 수집 소스 {{14}}곳 · 일 적재 {{120,000}}건 · 성공률 {{99.6}}% · 실패 알림 {{12}}분 이내

Overview

프로젝트에서 한 일.

외부 소스 {{14}}곳의 여행 상품과 가격을 정기 수집하고 형식이 제각각인 데이터를 하나의 규칙으로 정리했습니다. 구조가 바뀌면 감지하고 실패하면 재시도하며 그래도 안 되면 담당자에게 알림이 가도록 만들었습니다. 넘긴 지 {{14}}개월이 넘었고 지금도 돕니다.

크롤러는 하루면 만듭니다. 그게 내년에도 돌게 하는 게 일입니다.

외부 사이트는 예고 없이 구조가 바뀝니다. 한 소스가 깨졌을 뿐인데 전체 적재가 멈추기도 하고 더 나쁜 경우엔 아무도 모르는 채로 그날 데이터만 조용히 비어 있습니다.

실패하면 {{12}}분 안에 담당자에게 알림이 갑니다.

전 소스를 하나의 크롤러로 묶자는 안도 있었는데 그건 권하지 않았습니다. 한 곳이 바뀔 때마다 전체를 다시 만져야 합니다.

01

소스 분리

소스마다 수집 로직을 따로 뒀습니다. 한 곳이 바뀌어도 나머지 {{13}}곳은 그대로 돕니다.

02

변경 감지

페이지 구조가 달라지면 수집 전에 걸러 냅니다.

03

재시도와 알림

실패는 세 번까지 다시 시도하고 그래도 안 되면 사람에게 넘깁니다. 알림에는 어느 소스가 어디서 멈췄는지 적힙니다.

04

데이터 정리

중복과 필수값을 확인하고 상품·가격을 공통 형식으로 맞춥니다. 하루 {{120,000}}건.

05

운영 확인

수집 현황과 실패 원인이 한 화면에 뜹니다. 그 화면은 고객사 담당자가 직접 엽니다.

Evidence

지금도 도는 것

01

넘긴 지 {{14}}개월째입니다. 최근 {{90}}일 성공률은 {{99.6}}%입니다.

02

소스 구조가 바뀌어 손본 게 그동안 {{6}}번. 평균 {{1}}일 안에 복구했습니다.

03

데이터 흐름도와 실패 알림 화면은 상담 때 보여 드립니다. 수집 대상 사이트 이름은 가립니다.

지금 막힌 일을 적어주세요.

기획서가 없어도 괜찮습니다. 현재 쓰는 방식, 불편한 점, 원하는 완료 시점만 알려주세요.

상담 문의