Problem
어떤 문제를 풀었나
스마트 팩토리 고도화가 진행됨에 따라 물류 기기의 자동화가 필수 요소로 부각되고 있으나, 서로 다른 종류의 물류 기기들 간 통합 제어 및 관리 부재, 기기들의 실시간 상태 및 위치 파악 어려움, 운반된 자재의 흐름과...
Project Detail
스마트 팩토리 물류 기기 통합 제어 및 모니터링 시스템
스마트 팩토리 환경에서 운용되는 다양한 물류 기기를 통합 관리하고, 기기 상태와 이동 이력을 실시간으로 수집·시각화·분석할 수 있는 시스템입니다. 공장 내부의 자재 흐름을 명확하게 파악하고, 물류 자동화의 효율성과 신뢰성을 높이는 것을 목표로 합니다.
기간
2024.04 ~ 2024.05
팀 구성
6명 (FE 2 / BE 4)
기술 스택
6개 기술 사용
Problem
스마트 팩토리 고도화가 진행됨에 따라 물류 기기의 자동화가 필수 요소로 부각되고 있으나, 서로 다른 종류의 물류 기기들 간 통합 제어 및 관리 부재, 기기들의 실시간 상태 및 위치 파악 어려움, 운반된 자재의 흐름과...
Contribution
AMR 초기화 및 상태 관리 · 미션 이력 조회 및 분석 기능 API 구현
Outcome
우수 성과와 함께 Kafka Streams 기반 실시간 데이터 스트림 처리로 대량의 AMR 상태 로그를 무중단으로 수집 및 저장
스마트 팩토리 환경에서 운용되는 다양한 물류 기기를 통합 관리하고, 기기 상태와 이동 이력을 실시간으로 수집·시각화·분석할 수 있는 시스템입니다. 공장 내부의 자재 흐름을 명확하게 파악하고, 물류 자동화의 효율성과 신뢰성을 높이는 것을 목표로 합니다.
Target User
스마트 팩토리 관리자 및 엔지니어
Core Experience
스마트 팩토리 물류 기기 통합 제어 및 모니터링 시스템
Why It Matters
Kafka Streams 기반 실시간 데이터 스트림 처리로 대량의 AMR 상태 로그를 무중단으로 수집 및 저장
스마트 팩토리 환경에서 운용되는 다양한 물류 기기를 통합 관리하고, 기기 상태와 이동 이력을 실시간으로 수집·시각화·분석할 수 있는 시스템 구축. 공장 내부의 자재 흐름을 명확하게 파악하고, 물류 자동화의 효율성과 신뢰성을 높이는 것이 궁극적인 목적
스마트 팩토리 고도화가 진행됨에 따라 물류 기기의 자동화가 필수 요소로 부각되고 있으나, 서로 다른 종류의 물류 기기들 간 통합 제어 및 관리 부재, 기기들의 실시간 상태 및 위치 파악 어려움, 운반된 자재의 흐름과 사용 이력 추적 불가, 데이터는 쌓이지만 시각화나 분석 기능 부재로 활용도가 낮은 문제 존재
스마트 팩토리 관리자 및 엔지니어
What makes this project special
Kafka Streams 기반 실시간 데이터 스트림 처리로 대량의 AMR 상태 로그를 무중단으로 수집 및 저장
미션 단위 분석과 파라미터 정제 로직을 통해, 단순 이벤트 로그가 아닌 의미 있는 물류 이력 데이터로 가공
스트리밍 + 배치 하이브리드 처리 구조를 통해 실시간성과 안정성을 모두 확보
Docker-Jenkins 자동화 배포 구조로 확장성과 유지보수성을 고려한 구조 설계

스마트 팩토리는 제품 생산의 자동화를 넘어, 자재 이동과 물류 영역까지 고도화가 진행되고 있는 추세입니다. 하지만 현장에서는 다양한 물류 기기가 각기 다른 방식으로 운영되고, 기기별 상태 및 이동 이력을 체계적으로 관리할 수 없어 공정 최적화에 어려움을 겪고 있었습니다.
AMR 기기를 시스템에 등록하고, Kafka를 통해 실시간 상태 메시지를 수신하여 업데이트하며, 대기 시간·정지 시간·적재 여부 등을 구조화하여 분석에 활용할 수 있도록 설계된 기능 세트입니다.

각 AMR 기기가 송신하는 실시간 메시지를 Kafka로 수신하고, 상태값(이동 좌표, 배터리 잔량, 미션 상태 등)을 실시간으로 업데이트합니다.

기기의 단순 상태 외에도 대기 시간, 정지 시간, 자재 적재 여부 등을 파악하고 저장하도록 구조화하여, 향후 분석에서 유의미한 지표로 활용할 수 있게 설계했습니다.
💡 실제 생산기술연구소와의 질의 응답을 바탕으로 설계한, 프로젝트 목적에 부합하는 스마트팩토리 가상 시뮬레이션입니다.
AMR의 작업 단위인 미션 정보를 기준으로 이력을 저장하고, 다양한 분석 기능을 통해 관리자가 데이터를 효과적으로 분석할 수 있도록 지원합니다.

AMR의 작업 단위인 미션 정보를 기준으로 이력을 저장하고, 미션별 시작/종료 시점, 이동 경로, 소요 시간 등의 정보를 조회할 수 있는 API를 제공했습니다.

미션 상태 분석 기능을 확장하여 보다 상세한 분석 정보를 제공, 사용자가 실시간으로 상황을 파악하고 대처할 수 있도록 지원했습니다.
다양한 AMR 기기의 상태 로그를 Kafka로부터 실시간으로 수신하여, 정제·집계 후 데이터베이스에 배치 형태로 저장합니다. Kafka Streams 기반의 실시간 스트림 처리 구조를 설계하여 실시간성과 안정성을 모두 확보했습니다.

Kafka 토픽에서 로그 메시지를 스트림으로 수신하고, 15초 단위 TimeWindow로 데이터를 그룹핑하여 JDBC batchUpdate를 통해 DB에 저장하는 구조입니다.
💡 이 구조는 추후 실시간 이상 탐지, 경고 시스템, 시각화 대시보드 등으로 확장 가능한 핵심 기반이 되었습니다.
Engineering details and infrastructure
시스템 아키텍처
스마트 팩토리 내 운용 중인 AMR 기기를 시스템에 등록하고, 초기 상태값(위치, 배터리, 상태 등)을 세팅하는 API를 구현했습니다. 기기 상태를 지속적으로 추적하기 위한 기반으로 활용됩니다.
각 AMR 기기가 송신하는 실시간 메시지를 Kafka로 수신하고, 상태값(이동 좌표, 배터리 잔량, 미션 상태 등)을 실시간으로 업데이트합니다.
기기의 단순 상태 외에도 대기 시간, 정지 시간, 자재 적재 여부 등을 파악하고 저장하도록 구조화하여, 향후 분석에서 유의미한 지표로 활용할 수 있게 설계했습니다.
Technical challenges encountered during the project and solutions
다양한 AMR 기기에서 발생하는 고빈도 실시간 로그를 안정적으로 처리할 필요가 있었으며, 개별 Insert 방식의 DB I/O 병목 문제와 기존 Polling 기반 구조의 확장성 한계가 있었습니다.
Kafka Streams + TimeWindow(15초) 구조로 로그를 스트리밍 수집 및 집계하고, JDBC Batch Insert를 활용한 대용량 로그의 효율적 저장, 스트리밍 + 배치 하이브리드 구조로 실시간성과 안정성을 동시에 확보했습니다.
이번 스마토링 프로젝트는 Kafka Streams 기반의 실시간 데이터 처리 시스템을 도입하며, 대규모 데이터를 안정적으로 수집하고 저장하는 구조를 구축하는 데 주안점을 두었습니다. 단순한 기능 구현을 넘어, 데이터 흐름 최적화와 시스템 안정성 확보라는 측면에서 많은 성과와 인사이트를 얻을 수 있었습니다.
Kafka Streams와 JDBC 배치 삽입을 조합해 실시간성과 안정성을 모두 갖춘 데이터 파이프라인을 구현
단일 Insert 방식의 I/O 병목 문제를 배치 구조로 해소하며 시스템 리소스 효율적 활용
AMR 수십 대 이상이 동시에 데이터를 송신해도 무리 없이 처리할 수 있는 기술적 자신감 확보
Kafka, Streams DSL, 비동기 데이터 처리 등 새로운 기술 스택을 빠르게 학습하고 실전 적용
실시간 처리와 배치 처리를 함께 구현하면서 로직 구조가 다소 복잡해져 유지보수성과 가독성 저하
Kafka를 실시간 로그 처리에만 국한해 사용, Kafka Connect 등 확장 기능 미활용
Kafka, Streams DSL 등 새로운 기술에 대한 학습 비용이 높았으며 일부 급하게 작성된 코드 존재
QueryDSL로 표현하기 어려운 복잡한 쿼리는 JdbcTemplate 기반으로 하드코딩하여 DB 종속성 발생
Kafka Streams + Spring 구조를 보다 모듈화하여 유지보수성 향상
Kafka Connect를 통한 외부 시스템 연동 및 데이터 흐름 확장
실시간 알림 시스템(Firebase, WebSocket 등)과의 자연스러운 통합 구조 고도화
QueryDSL 한계 보완을 위한 JPA-NativeQuery 전략 병행 고려