NB-IoT 단말·회선 중앙관리 시스템
2022.06 – 2022.11 · 백엔드 개발 (선임) · 하이텍앤솔 ICT개발팀
- Java
- Spring 4.3
- MyBatis
- MySQL
- JSP
- Apache POI
- JSch (SFTP)
Overview
개요
NB-IoT 검침 기기(단말)의 생산부터 출고, 통신 회선 상태까지 한곳에서 관리하는 중앙 관제 시스템입니다. 기기 생산 등록, 개통부터 해지까지 회선 이력 추적, 비정상 회선 자동 탐지를 설계하고 구현했습니다.
- NB-IoT 단말 생산→출고→과금→AS→해지 회선 라이프사이클 관리 모듈 풀스택 설계·구현
- 단말 마스터 + 이력 2-테이블 스키마 설계, 모든 상태 변경 시 이력 적재(upsert + history)
- 개통 사이트 ≠ 현재 위치 조건으로 비정상·과금 누수 회선 자동 탐지
- 대량 엑셀(POI) 일괄 업/다운로드 파이프라인(생산/변경/출고) + AS 시스템 회선 연동
Architecture
시스템 아키텍처
Metrics
성과 지표
약 30만 대
NB-IoT 단말
관리 규모
10% 절감
월 회선비
비정상 회선 자동 탐지
생산~해지 라이프사이클
추적
Troubleshooting
트러블슈팅
비정상 회선 자동 탐지로 과금 누수 정리
문제 상황
NB-IoT 검침 단말의 회선은 개통 사이트와 실제 현재 위치가 어긋날 수 있고, 출고·AS·해지 처리가 누락된 회선은 과금이 계속되어 회선비 누수가 발생했다. 대량 단말을 수작업으로 대조하기는 현실적으로 어려웠다.
원인 가설
단말 마스터 테이블에 개통 사이트와 현재 위치를 함께 관리하면, 두 값이 다른 회선을 동적 필터로 추출해 비정상·과금 누수 회선을 자동 식별할 수 있다.
검증
개통 사이트(OPENIG_AREA) ≠ 현재 위치(NOW_AREA) 조건의 동적 검색 필터(differentArea)와 미출고 필터(onlyOutput)를 구성하고, 추출 결과가 실제 비정상 회선과 일치하는지 확인했다.
해결
- 개통 사이트와 현재 위치가 다른 회선을 추출하는 자동 탐지 필터를 구현했다.
- 출고 정리 배치(
fixOutputCompany)로 출고/AS/해지 상태를 정상화했다. - 이를 통해 과금 누수 회선을 정리, 이력서 기준 자회사 월 회선비 약 10% 절감에 기여했다.
단말 생산 등록 엑셀 업서트 + 이력 추적
문제 상황
생산·변경·출고 단말 정보가 대량 엑셀로 들어오는데, CTN/IMEI/일련번호 표기가 일관되지 않았고(괄호·하이픈·접두 변환 등), 중복 등록 시 기존 데이터를 어떻게 처리할지가 모호했다. 또한 상태 변경 이력이 남지 않아 추적이 어려웠다.
원인 가설
식별자 정규화 → upsert(ON DUPLICATE KEY UPDATE) → 변경 이력 적재를 하나의 파이프라인으로 묶으면, 중복 처리와 추적성을 동시에 확보할 수 있다.
검증
엑셀 파싱 시 CTN 변환(예: 특정 접두 패턴 → 단말 식별 코드)·괄호 제거·하이픈 제거 등 정규화 규칙을 적용하고, 처리 결과(총/성공/실패 건수)가 정확히 집계되는지 확인했다. 모든 생산/변경/출고 행위가 이력 테이블에 적재되는지 점검했다.
해결
- 생산/변경/출고 엑셀 업로드를 POI 기반 파이프라인으로 구현하고, 식별자 정규화 후 단말 마스터 테이블에 upsert 했다.
- 단말 마스터 + 이력의 2-테이블 스키마를 설계해 모든 상태 변경을 이력 테이블에 적재(행위 구분 컬럼 + 기간 인덱스)했다.
- 처리 결과를 건수로 반환해 업로드 신뢰성을 확보했다.
AS 접수 시 회선 상태 자동 전이
문제 상황
NB-IoT 단말의 AS가 접수되면 회선의 현재 위치와 상태를 함께 갱신해야 했으나, AS 모듈과 회선 관리 모듈이 분리되어 있어 상태가 어긋날 수 있었다.
원인 가설
AS 접수 처리 흐름에서 통신방식이 NB-IoT인 건에 한해 회선의 위치·상태를 자동 전이하고 이력을 남기면, 두 모듈 간 데이터 정합성을 맞출 수 있다.
검증
NB-IoT 통신방식 AS 접수 시 단말 현재 위치를 회수 거점으로, 상태를 AS로 자동 변경하고 이력이 적재되는지 확인했다. (AS 모듈 본체의 원인분석/상태전이 로직은 원작자 작업이므로, 회선 관리 연동 부분만 본인 기여로 한정.)
해결
- AS 접수 흐름에 회선 관리 연동을 추가해, NB-IoT 단말의 위치=회수 거점·상태=AS 자동 전이 + 이력 기록을 구현했다.