운전습관 점수도출 로직
15TB 규모의 원천 주행 파일 데이터를 분석 가능한 형태로 정제해 점수 산출 입력 지표를 생성한 프로젝트입니다. 좌표·방향·속도 값이 순간적으로 튀거나 0으로 초기화됐다 복구되는 이상치를 도메인 규칙에 맞게 보정했고, 3명이 병렬로 작업한 정제 파이프라인 중 3차(속도 평탄화·가속/감속 이벤트 산출)를 담당했습니다.
Role & Scope
3명이 병렬로 운영한 정제 파이프라인 중 3차 단계(속도 평탄화·이벤트 산출)를 전담했습니다.
- 기간
- 2024.06 ~ 2024.09
- 역할
- 3차 정제 단계 담당 (속도 평탄화·이벤트 산출)
- 원천 규모
- 약 15TB 운전기록 파일
- 기술 스택
- Java 17 · Multi-Threading · File I/O
- 3차 정제 단계의 속도 평탄화 로직 구현
- 가속 · 급가속 · 감속 · 급감속 이벤트 산출
- Java ThreadPool 기반 병렬 처리 구조 적용
- BufferedReader 기반 파일 읽기
- 성공/실패 파일 분리 및 재처리 가능 구조 구성
Architecture
원천 파일을 1차 좌표 → 2차 방향/거리 → 3차 속도 정제 순으로 처리하는 파이프라인입니다. 3차 단계를 단독 담당했습니다.
원천 파일 → 1차 → 2차 → 3차(담당) → DB / 성공·실패 분리 → 스프레드시트 전달
flowchart LR
Raw["외장하드 원천 파일"] --> Stage1["1차 평탄화<br/>좌표 정제"]
Stage1 --> Stage2["2차 평탄화<br/>방향 / 거리 정제"]
Stage2 --> Stage3["3차 평탄화 (담당)<br/>속도 정제 및 이벤트 산출"]
Stage3 --> DB[("DB 적재")]
Stage3 --> Success["성공 디렉토리"]
Stage3 --> Fail["실패 디렉토리"]
DB --> Sheet["SQL 조회 후 스프레드시트 전달"]
What I Did · 문제 해결
센서/수집 오류로 생긴 노이즈를 도메인 규칙에 맞게 해석·보정하고, 점수 산출 입력 지표를 생성했습니다.
-
대용량 파일 정제 파이프라인 참여
외장하드 원천 파일을 1차 좌표 정제, 2차 방향/거리 정제, 3차 속도 정제 및 이벤트 산출 순으로 처리하는 파이프라인으로 운영했고, 그중 3차 단계를 전담했습니다.
-
속도 스파이크 평탄화 로직 구현
현재 row 기준 앞뒤 2개씩 총 5개 row를 함께 확인하는 sliding window 방식으로 속도 튐 현상을 판별했습니다. 현재 속도만 전후 흐름 대비 비정상적으로 튀면 직전·직후 row의 평균값으로 보정했습니다.
예:
12 → 10 → 50 → 14 → 15흐름에서 현재 row인50을 전후 정상 흐름(10,14) 기준으로12수준으로 보정했습니다. -
점수 산출 입력 지표 생성
평탄화된 속도 데이터의 변화량을 계산해 가속, 급가속 1·2단계, 감속, 급감속 1·2단계 이벤트를 분류했습니다.
최종 점수 자체를 계산한 것이 아니라, 점수 산출에 필요한 입력 지표와 이벤트 횟수를 생성해 DB에 적재하는 역할을 담당했습니다.
-
병렬 처리 및 실패 파일 관리
작업 PC 환경에 맞게 ThreadPool 크기를 조정할 수 있도록 구현하고, BufferedReader 기반으로 파일을 읽으며 정제·산출을 수행했습니다.
처리 성공 파일은 성공 디렉토리로, 실패 파일은 실패 디렉토리로 이동시켜 사후 확인과 재처리가 가능하도록 했습니다.
Impact · 성과
면접에서 강조할 핵심 어필 포인트입니다.
- 15TB 규모의 대용량 원천 데이터를 점수 산출 가능한 입력 데이터로 전환한 프로젝트입니다.
- 정형 데이터 가공이 아니라, 센서/수집 오류로 인한 노이즈를 해석하고 도메인 규칙에 맞게 보정한 데이터 엔지니어링 성격이 강합니다.
- Java 멀티스레딩, 파일 I/O, 시계열 데이터 정제, 이벤트 파생 지표 산출 경험을 동시에 보여줄 수 있습니다.