← 프로젝트 목록

데이터 자동화

DATA CHECK TOOL

크롤러가 정상 종료돼도 데이터는 비어 있을 수 있었습니다. 실제 수집 결과를 검증하도록 바꿔 하루 3시간 걸리던 점검을 30분으로 줄이고, 오류율을 1.25%에서 0.05%로 낮췄습니다.

기간
비틀웍스 재직 중
역할
단독 개발 · DB 검증 · 운영 자동화
Python 프로젝트 파일 구조
하루 수집 점검 시간
3h → 30m
오류율
1.25% → 0.05%
하루 평균 검증 데이터
약 4,000건
전날 결과 문자 발송
08:00

업무 배경과 해결 과정

  1. 비틀웍스에서 여러 외부 사이트를 수집하는 크롤러의 결과를 매일 확인하는 일은 담당 개발자가 로그와 DB를 직접 조회하는 수작업이었습니다. 4개 이상의 크롤러가 하루 평균 약 4,000건을 수집했고, 이를 약 37개의 검증 조건으로 자동 확인하기 위해 이 도구를 단독 개발했습니다. 내부 개발자와 운영 담당자 3~5명이 6개월 이상 실제 운영에 사용했습니다. 운영 담당자가 전날 수집 결과를 확인할 수 있도록 DB 검증 결과를 파일로 남기고 정해진 시각에 문자로 전달했습니다. 데이터 확인뿐 아니라 운영 시 필요한 일괄 실행·초기화와 Python 기반 DB 업데이트 기능도 함께 구성했습니다.

  2. 담당 개발자가 크롤러 실행 로그와 DB를 SQL로 직접 조회하고 이전 결과와 비교했습니다. 하루 평균 약 3시간이 걸렸고, 문제가 생겨도 다음 점검 때까지 모르는 경우가 있었습니다. 고객이 누락을 먼저 발견해 문의하기도 했습니다.

  3. 프로세스가 정상 종료됐다는 것과 데이터가 정상 수집됐다는 것은 달랐습니다. 외부 사이트의 응답 지연이나 HTML 구조 변경 때문에 빈 데이터나 일부 데이터만 저장되는 경우가 있었습니다.

  4. 실행 로그만 보지 않고 실제 수집량, 마지막 수집 시각, 이전 데이터와의 차이를 함께 확인하도록 검증 구조를 설계했습니다. 사이트마다 수집 주기와 정상 수집량이 달라 대상별로 검증 조건을 분리했고, 오류 유형을 분류해 문자 알림과 연결했습니다.

  5. Python·Crontab으로 검증이 자동 실행되고, 수집 실패나 누락이 생기면 문자로 바로 알립니다. 점검은 30분으로 줄었고 고객이 먼저 문의하는 일이 줄어, 사후 대응 중심이던 업무가 사전 감지 중심으로 바뀌었습니다.

자동화보다 중요한 것은 "무엇을 정상이라고 판단할 것인가"라는 기준을 설계하는 일이었습니다.

직접 만든 것

Python DB 검증과 상태별 결과 저장, 배치 실행·초기화, 매일 08시 전날 결과 문자 발송을 단독 구현했습니다.

  1. 01

    DB 검증과 상태별 결과 파일 생성

    Python 코드에서 DB에 접근해 크롤러의 수집 데이터를 검증했습니다. no_data(실행됐지만 데이터 없음), not_run(예정 시간에 실행 이력 없음), partial_fail(일부 수집 실패), success(정상)로 상태를 나누고 결과를 txt 파일로 변환해, 수집 상태를 파일로 확인할 수 있도록 했습니다.

  2. 02

    예약 실행과 전날 결과 문자 발송

    Crontab과 Toast API를 연동해 매일 오전 8시에 전날 데이터 검증 결과를 문자로 발송했습니다. 검증 결과를 저장하는 기능과 정기 알림을 연결해, 운영자가 수집 상태를 정해진 시각에 전달받도록 구성했습니다.

  3. 03

    일괄 실행·초기화를 위한 배치 진입점

    Windows에서 start.bat을 실행하면 전체 기능 코드가 일괄 실행되도록 구성했습니다. init_max.bat에는 초기화 기능을 연결해 실행과 초기화 작업을 각각의 배치 파일로 제공했습니다.

  4. 04

    Python을 활용한 DB 업데이트

    SQL 쿼리만으로 업데이트하기 어려운 데이터를 처리할 수 있도록 Python 기반 DB 업데이트 기능을 개발했습니다. 검증 결과를 확인하는 작업과 별도로 데이터 관리에 필요한 갱신 기능을 운영 도구에 포함했습니다.

알림 문자 구성 (예시)
[DATA CHECK] 수집 점검 결과전체 4개 작업 중 정상 3개, 오류 1개수집 대상: A사이트상태: no_data마지막 정상 수집: 전일 09:00담당자 확인 필요

사용 기술Python · Crontab · Toast API · SQL

담당 범위
  • Python 기반 DB 검증·결과 파일 저장 및 데이터 업데이트 기능 단독 개발
  • Windows 배치 파일 실행 도구와 Crontab·Toast API 문자 알림 연동
처리 흐름
  1. DB 검증

    Python으로 수집 데이터 확인

  2. 결과 저장

    상태별 데이터를 txt 파일로 출력

  3. 정기 알림

    매일 08시, 전날 결과 문자 발송

한계와 남은 과제
  • 파일·문자 기반 운영 범위

    구현한 결과 확인 수단은 txt 파일과 문자 알림입니다. 웹 모니터링 화면과 알림 체계 고도화는 후속 확장 항목이며, 이 도구의 구현 범위에는 포함되지 않았습니다.

다시 만든다면 (개선 설계안)

구현 내용을 바탕으로 확장해 검토한 설계안입니다.

  • 작업 실행 상태와 데이터 검증 결과의 분리

    DB 접속 실패로 검증을 끝내지 못한 경우와 검증을 완료했지만 수집 데이터에 이상이 있는 경우를 구분하는 개선안을 검토할 수 있습니다. 실행 식별자별 시작·종료·실패 상태를 기록하고 no_data·not_run 등의 검증 결과를 별도로 연결합니다. DB 연결 실패와 이상 데이터 입력을 각각 재현해 결과 파일과 문자에서 운영자가 두 상황을 구별할 수 있는지 확인합니다.

  • 검증 재실행과 문자 발송의 중복 방지

    동일한 날짜의 데이터를 재검증하거나 문자 발송 응답을 받지 못해 재시도하는 경우를 고려한 개선안입니다. 검증 실행 이력과 발송 이력을 분리하고, 대상 날짜·검증 결과·수신자를 기준으로 발송 중복을 판별하는 구조를 검토합니다. 재실행과 응답 유실을 재현해 결과 변경은 새 이력으로 남고, 발송 여부가 불명확한 건은 확인 없이 반복 전송되지 않는지 검증합니다.