JungHoon Control Center backend-portfolio.local
← Projects
SOLO · 22.12 ~ 23.06

00닉스 스마트태그 시스템

00닉스 임직원이 패용하는 사원증형 스마트태그의 위치 데이터를 기반으로, 안전·보안 목적의 실시간 위치 관제와 이동 경로 추적을 제공하는 시스템입니다. 신규 구축이 아니라 운영 중인 시스템의 안정화·고도화에 집중해 SQL·API·화면·계산 엔진 설정·서버 이관·운영 자동화를 단독으로 담당했습니다.

NexCoreJava 7OracleKafka

Role & Scope

운영 중인 실시간 위치 관제 시스템의 안정화·고도화를 단독으로 담당했습니다.

SOLO 22.12 ~ 23.06
기간
2022.12 ~ 2023.06
역할
운영·고도화 단독 담당
처리 규모
일 약 50만 건 위치 이벤트
기술 스택
NexCore · Java 7 · JSP · jQuery · Oracle · MyBatis · Kafka · Shell
  • NexCore 기반 API 서비스 및 jQuery 관제 포털 화면 수정
  • Oracle SQL 신규 작성 및 기존 쿼리 정합성 개선
  • Kafka 구독 기반 계산 엔진 설정 분석 및 오류 해결
  • AP 상태 및 측위 오류 원인 분석
  • 실시간 위치 이력 기반 이동 경로 조회 기능 구현
  • 계산 엔진 신규 서버 마이그레이션 및 운영 구조 개선
  • 환경별 설정 자동화를 위한 Shell Script 작성

Architecture

스마트태그 위치 이벤트가 Kafka로 분산되어 계산 엔진을 거쳐 관제 포털·API로 노출되는 흐름입니다.

SmartTag → AP → Kafka → 계산 엔진 → Oracle → API / Portal

flowchart LR
  Tag["임직원 SmartTag"] --> AP["AP 측위 장비"]
  AP --> Kafka["Kafka 토픽<br/>태그 ID suffix 분산"]
  Kafka --> Engine["계산 엔진<br/>suffix 필터 후 위치 계산"]
  Engine --> Oracle[("Oracle 위치 이력 DB")]
  Oracle --> API["NexCore API 서비스"]
  Oracle --> Portal["jQuery 관제 포털"]
          

What I Did

단순 운영을 넘어 SQL 정합성, 부하 분석, 서버 이관, 운영 자동화까지 직접 처리한 작업들입니다.

  1. 배터리 부족 알림 대상 조회 로직 개선

    정직원·협력사·방문객 유형별 조건이 누적되며 일부 알림 대상이 누락되는 문제가 있었습니다.

    누락 대상 태그의 실제 배터리 상태를 직접 확인해 문제를 검증한 뒤, 수정 후 누락됐던 대상에게 알림이 정상 발송되는 것까지 확인해 알림 대상 정합성을 개선했습니다.

  2. 운영 포털용 대시보드 집계 SQL 작성

    정직원·협력사·방문객 구분별 태그 수량, 태그 유형별 수량, 배터리 상태별 수량을 집계하는 Oracle SQL을 작성해 운영자가 전체 태그 현황과 관리 대상을 한눈에 파악하도록 지원했습니다.

  3. 위치 이력 기반 이동 경로 조회 SQL 구현

    계산 엔진이 산출해 Oracle에 적재한 위치 이력을 태그·사용자·시간 범위 기준으로 시간순 조회하는 SQL을 작성해, 특정 시간대에 어떤 구역에서 어떤 구역으로 이동했는지 추적할 수 있게 했습니다.

  4. 계산 엔진 부하 편중 원인 분석 및 분담 설정 수정

    위치 이벤트는 태그 ID suffix 기준으로 Kafka 토픽에 분산되고, 계산 엔진들이 suffix를 나눠 맡아 처리하는 구조였습니다.

    이 분담 설정이 한쪽으로 치우쳐 특정 서버에 부하가 몰리던 것을 바로잡아 재배포하고, 서버 간 계산 부하 편차를 완화했습니다.

  5. 비대상 태그 데이터 적재 차단

    다른 시스템의 자산 추적용 태그까지 측위·계산되어 위치 이력 DB에 적재되던 문제를 발견하고, 계산 전에 대상 태그만 처리하도록 필터를 추가해 비대상 데이터 적재를 막았습니다.

  6. 계산 엔진 마이그레이션 및 운영 자동화

    2대 서버에 각 2개씩 있던 계산 엔진을 4대 서버에 각 1개씩 분산 배치하는 형태로 이관했습니다.

    개발 서버는 1대였지만 운영은 이천 4대·청주 4대로 구성이 달라, 환경 인자를 받아 설정 파일을 자동 변경하는 Shell Script를 작성해 테스트·운영 효율을 높였습니다.

Impact

  • 일 약 50만 건 규모의 위치 데이터를 처리하는 환경에서 운영 안정화와 정합성 개선을 수행했습니다.
  • SQL 작성을 넘어 데이터 정합성·조건 설계·운영 관점의 안정화까지 수행했습니다.
  • API·화면 수정, SQL 설계, 계산 엔진 분석, Kafka 분산 구조 이해, 서버 이관, 운영 자동화까지 한 사람이 폭넓게 담당했습니다.
Action completed