PORTFOLIO · POSCO 제조 AI
한재민
JAEMIN HAN · Manufacturing AI Engineer
설비 데이터 수집–저장–AI 이상예지–현장 운용을
풀스택으로 연결한 제조 AI 개발자
hanjaemin.mail@gmail.com · 포항/울산 근무 가능
hello-jaemin.tistory.com
98%+스펙트로그램 CNN 이상탐지 (데이터셋)
92%의사결정트리 예지보전 · 이중 알람
16×시계열 전환 저장 절감 · 조회 5~12×
2.37%AE 누수 위치추정 오차 · 현장 운용
CONTENTS P1 예지보전 플랫폼 · P2 신호분석 AI · P3 배관 관제 · P4 온프렘 RAG
PROJECT 01
제조 설비 예지보전 모니터링 플랫폼
2023.10 – 2026.05
① 개요
진동·AE·온도·가스·PLC 등 설비 상태 데이터를 수집 서버에서 API·DB·운영 화면으로 연결하고, Raw 조회·Trend·Spectrum·STFT·대시보드·알람·진단 이력·관리자 모드와 서버-DB 운영 안정화까지 구현한 산업 IoT 예지보전 플랫폼입니다. 누적 등록 현장 32개·설비 392대·센서 936개 규모의 데이터를 단일 플랫폼으로 수용하며, 화학 반응기 펌프·모터에는 의사결정트리 다중분류(92%) + 임계치·AI 이중 알람 기반 이상예지가 적용돼 현재 실제 현장에서 운용 중입니다.
④ 이슈 & 해결방안
종량 과금 통신망에서 JSON 전송 데이터 비용 과다
문제 센서 데이터를 JSON으로 전송하면 헤더·키 문자열이 필드마다 반복되어 P-LTE/LTE 종량 과금 환경에서 통신 비용이 컸습니다.
해결 센서 수집 소켓을 고정폭 바이너리 프로토콜로 재설계 — 배치 단위로 헤더에 타임스탬프를 1회만 포함해 반복 키 문자열을 제거하고 수신 측 바이너리 파싱 로직을 구현.
결과 동일 데이터 기준 전송량 약 5.8배 절감.
행 기반 RDB의 시계열 저장·조회 한계
문제 MySQL features 테이블에서 시간 조회용 인덱스가 데이터보다 커지고 장기 조회 성능이 저하됐습니다.
해결 measurement=features, tag=point_id·feature_type_id 스키마로 InfluxDB 전환, autogen(raw)+history(집계) 다운샘플 RP로 hot/cold 라우팅 구성, 커넥션 풀·sampTime 변환 버그 수정.
결과 1년치 집계조회 203배(13.4s→66ms, 로컬 A/B), InfluxDB 단독 5.4배·Redis 캐시 85~120배, 프로덕션 캐시 적중률 98.29%, 유입 3.10M pts/일.
호스트 직접 설치 방식의 서버 이전·버전 업그레이드 비용
문제 호스트에 DB를 직접 설치해 운영하다 보니 서버 이전 시 환경 재구성 비용이 크고 Redis/InfluxDB EoS 업그레이드를 무중단으로 진행하기 어려웠습니다.
해결 웹·소켓 서버와 InfluxDB·MySQL·Redis를 Docker Compose로 일괄 컨테이너화하고 백업·복원·연결 검증 절차 수립 후 컨테이너 교체로 버전 업그레이드.
결과 클린 호스트 기준 DB 스택 cold-start 약 28초, 호스트 수작업 설치 제거, EoS 대응 업그레이드 완료.
소켓 리스너 누수와 웹/소켓 부하 미분리
문제 43개 도메인 모듈이 EventGateway를 각자 등록해 NestJS DI 특성상 리스너가 누적, MaxListenersExceededWarning이 반복되고 웹·소켓이 같은 프로세스로 실행돼 부하 분리가 안 됐습니다.
해결 SocketGatewayModule을 @Global() 전역 공용 모듈로 신설해 EventGateway를 한 곳에서만 등록하고, 웹(REST)·소켓(수집) 서버를 별도 프로세스로 분리.
결과 경고 완전 제거, 소켓 수신 안정화, 부하 분리로 REST 응답 영향 제거.
② 수행역할 · 기여도
· 센서 수집단부터 API·3종 DB(InfluxDB·MySQL·Redis)·운영 화면·AI 진단 이력까지 플랫폼 전 구간을 풀스택으로 설계·구현 (수집 프로토콜·시계열 저장·운영 화면·배포 인프라 단독 담당)
· Docker 컨테이너화, 서버 이전, 백업/복원, DB 버전 업그레이드 등 운영 안정화를 전담하며 코어 DB를 무중단으로 운용
· 데이터 저장 구조를 RDB에서 시계열 DB로 전환하고 센서 통신 프로토콜을 재설계해 저장·전송·조회 효율을 정량 지표로 개선
③ 활용 기술
BackendNestJSNode.jsTypeScriptREST APIWebSocketSocket.IO
Data/DBInfluxDBMySQLRedisInfluxQLContinuous Query
Infra/DevOpsDockerDocker ComposeNginxLinuxCI/CD
Frontend/VizVueReactSciChartECharts
PROJECT 02
공작기계/MCT 신호분석 및 AI 진단
2023.12 – 2026.05
① 개요
공작기계와 회전 설비의 진동 데이터를 기반으로 STFT·FFT·스펙트럼·CNN·One-Class SVM 분석을 수행하고, AI/규칙 기반 진단 결과를 운영 화면·알람 흐름으로 연결한 설비 진단 프로젝트입니다. 원시 신호를 현장 운영자가 해석 가능한 형태로 제공하고, 진동 신호를 이미지화한 Vision 접근으로 이상탐지 정확도를 끌어올렸습니다. 과제 기간 중 실제로 발생한 결함 1건도 놓치지 않고 탐지했습니다.
④ 이슈 & 해결방안
원시 진동 신호만으로는 이상 판별이 어려움
문제 원시 진동 신호만으로는 결함 유형(베어링/기어/공구)을 구분하기 어렵고 운영자가 해석하기도 힘들었습니다.
해결 공정 구간별 진동 신호를 2D 스펙트로그램 이미지로 변환해 CNN 학습 파이프라인을 구축하고, DTW 기반 특징 비교를 결합해 시계열 패턴 차이를 반영, 결과를 진단 화면·저장 흐름에 연결.
결과 학습 데이터셋 기준 평균 98%+ 탐지율 → 모니터링 시스템 탑재, 정상/베어링/기어/공구 4분류 운용.
동기 블로킹 추론과 진단 이력 조회 성능 저하
문제 AI 추론 호출이 동기 블로킹으로 실행돼 추론 중 조회 API가 멈추고, 진단 결과 전체를 RDB에 쌓다 보니 최근 결과 조회에도 풀 스캔이 발생했습니다.
해결 AI 추론 호출을 비동기 처리로 전환해 추론 중에도 응답을 유지하고, 진단 결과를 hot/cold로 분리 저장(최근=Redis, 영구 이력=RDB).
결과 추론 중 API 응답 지연 해소, 최근 진단 상태 조회 속도 개선.
알고리즘별 서버 분산에 따른 운영 복잡도
문제 알고리즘마다 별도 서버를 구성하면 운영 복잡도가 높고, 앱 도메인별로 다른 모델을 조율할 단일 진입점이 없었습니다.
해결 OC-SVM·TabNet·1D-CNN·LSTM·Isolation Forest 등 9개 알고리즘 계열을 단일 Flask AI 서버로 통합(44개 라우트)하고, NestJS 백엔드에서 16개 앱 도메인의 학습·추론을 오케스트레이션.
결과 AI 서버 단일화로 운영 복잡도 감소, 신규 알고리즘을 서버 추가 없이 라우트 확장으로 대응.
② 수행역할 · 기여도
· 진동 신호 전처리부터 스펙트로그램 CNN·DTW 이상탐지 모델의 개발·학습·평가, 진단 화면·알람 연동까지 AI 모델 파트를 주도
· 석사 연구의 신호처리·상태분류 경험을 제품 기능으로 확장하고, 다수 알고리즘을 단일 AI 서버로 통합해 여러 앱 도메인의 진단을 오케스트레이션
③ 활용 기술
AI/MLPythonPyTorchCNNDTWOne-Class SVMTabNet1D-CNNLSTMIsolation Forest
SignalSTFTFFTSpectrum/SpectrogramMATLAB
ServingFlask(AI 서버)NestJSRedisMySQL
FrontendVueSciChart
PROJECT 03
스마트그린산단/지하배관 관제 시스템 개발
2024.01 – 2026.04
① 개요
울산 국가산단 지하배관에 진동·AE 센서 87개(진동 44·AE 43)를 직접 설치하고 P-LTE로 자체 웹 서버에 연결해 실시간 모니터링·규칙 기반 진단·AE 기반 누수 위치 추정까지 구축한 현장 운용 시스템입니다. 1차년도 11개 배관을 운용 중이고 고도화로 14개 배관을 추가 진행 중입니다(총 25개). AE 신호 기반 누수 위치추정을 실증 테스트베드에서 평균 오차율 2.37%로 검증해 시스템에 탑재했습니다.
④ 이슈 & 해결방안
3D 배관 모델 로딩 지연
문제 지하배관 3D 시각화 화면을 열 때마다 모델 파일을 네트워크에서 다운로드해 로딩 체감이 느렸습니다.
해결 3D 씬 컴포넌트에 IndexedDB 캐싱을 구현 — 캐시가 있으면 DB에서 로드, 없으면 fetch 후 저장.
결과 재방문 로딩 개선, 네트워크 불안정 환경에서도 오프라인 로드 가능.
방화벽 뒤 내부 서버로 배포 불가
문제 사내 방화벽이 외부→내부 인바운드 SSH를 차단해 GitHub 호스팅 러너에서 내부 서버로 배포할 수 없었습니다.
해결 self-hosted runner를 서버 내부에 두고 runner가 GitHub를 pull하도록 접속 방향을 역전, 컨테이너 내부 git fetch+리빌드로 배포, 개발/운영 서버 분리.
결과 방화벽 정책 변경 없이 develop push → 개발 서버 자동 배포 확립.
외부 서버 다운 시 로컬 저장까지 실패
문제 설비 데이터를 외부 서버로 포워딩할 때 외부 서버가 다운되면 로컬에도 저장되지 않는 버그가 있었습니다.
해결 포워딩 로직을 best-effort 포워딩 / must-succeed 로컬 저장으로 분리해 외부 의존성 장애가 핵심 수집·저장으로 전파되지 않도록 격리.
결과 외부 서버 다운 시에도 로컬 데이터 저장 보장.
② 수행역할 · 기여도
· 지하배관 센서 직접 설치·P-LTE 수집 연동부터 관제 화면·AE 누수 위치추정 적용·탑재까지 현장 구축 전 구간을 담당
· 배관·맨홀·포인트 계층과 센서 위치를 지도 화면에 반영하고, 외부 예측진단 API 연동·모바일 QR 현장 조회·CI/CD와 개발/운영 서버 분리를 수행
③ 활용 기술
BackendNestJSNode.jsREST APIP-LTE 수집 연동
Data/DBInfluxDBMySQL
Infra/DevOpsDockerCI/CD(self-hosted runner)NginxLinux
FrontendVueIndexedDB3D VisualizationMobile QR
Signal AIAE 누수 위치추정로컬 LLM 진단보고서
PROJECT 04
온프레미스 RAG·Agent LLM 시스템
개인 프로젝트
① 개요
외부 API 없이 사내 GPU 서버에서 동작하는 설비 유지보수 전문가 AI 시스템입니다. 기밀 데이터를 내부망 밖으로 내보내지 않으면서도 문서 근거가 있는 답변과 복합 추론을 제공하도록, 문서 기반 RAG·하이브리드 검색·Tool Calling Agent·품질 가드레일·관측성 지표를 구현했습니다.
④ 이슈 & 해결방안
단일 검색 방식의 정확도 한계
문제 Vector Search만으로는 장비명·번호 정확 검색이 약하고, BM25만으로는 의미 검색이 약했습니다.
해결 Vector(Chroma+BGE-M3)와 BM25를 Reciprocal Rank Fusion으로 결합하고 Cross-Encoder 리랭커로 최종 정밀도를 높였습니다.
결과 장비명·번호 정확 매칭과 의미 검색을 동시 보완.
도메인 외 질문·환각 응답 노출 위험
문제 도메인 밖 질문이나 환각·아티팩트 응답이 사용자에게 그대로 노출될 위험이 있었습니다.
해결 사전 방어(입력 길이·위험/도메인 키워드)와 사후 검증(한국어 비율·XML/JSON 아티팩트·엔티티 교차)의 이중 가드레일을 구성하고, RAGAS형 품질 평가는 백그라운드 비동기로 처리.
결과 도메인 외·환각 필터링, 품질 점수 로깅으로 지속 개선 기반 확보.
단순 Q&A로는 복합 추론 불가
문제 날짜 계산·문서 검색·산술을 조합해야 하는 질의를 단순 Q&A로는 처리할 수 없었습니다.
해결 문서 검색·날짜·산술 도구를 조합하는 Tool Calling Agent를 구성하고 SSE 스트리밍으로 토큰 단위 응답을 제공.
결과 단일 질의에서 여러 도구를 순차 호출해 복합 답변 생성.
② 수행역할 · 기여도
· 하이브리드 검색 파이프라인·Tool Calling Agent·이중 가드레일·관측성 API 전 구간을 1인 설계·구현
· 사내 GPU 서버(NVIDIA A10 ×2)에 자체 LLM을 서빙하고, 안정적 활용을 위한 엔터프라이즈 패턴 클라이언트 하네스를 직접 구현
③ 활용 기술
LLM/RAGOllamaQwen3.5-27B(자체 서빙)BGE-M3ChromaBM25Cross-EncoderRAGAS
BackendPythonFastAPISSE 스트리밍SQLite(관측성)
Infra온프레미스 GPU(A10 ×2)llama.cpp