-
Notifications
You must be signed in to change notification settings - Fork 0
Scheduling
장비 상태 정보 관리
AI카메라 관리 시스템에서 가장 중요한 기능은 객체 인식 정보와 해당 장비의 상태 정보를 python에서 중앙 서버(Spring)으로 받아 DB에 적재하는 과정입니다.
-
객체 인식 판단
카메라가 YOLO를 통해 객체를 검출했을 때 인식했다고 판단합니다. -
장비 장애 판단
장비 장애 종류는 총 3가지로, CPU 사용량 기준치 초과, 메모리 사용량 기준치 초과, 상태 정보를 장시간 송신하지 않는 연결 오류가 발생했을 때 장애가 있다고 판단합니다. CPU와 메모리 사용량은 10초마다 전체 장비의 상태 정보를 받는 기능을 통해 기준치를 초과했는지 검사하고, 연결 오류로는 10초마다 실행되는 스케줄러에서 3번 이상 값을 받지 못한 경우가 있는지를 확인합니다.
위 두 기능을 구현하기 위해 객체 인식은 검출 시, 장비 장애는 10초마다 스케줄링을 통해 장비의 상태 정보를 받아와 상태값을 DB에 적재하였습니다.
이 과정에서 10초마다 DB를 조회할 경우 조회량 많다는 문제점이 발생하였습니다. 이를 해결하기 위해 @PostConstruct or initializingBean의 구현체를 이용하여, 빈 생성과 주입이 끝날 시점에 메모리 영역에 장애가 있는 장비 리스트를 올려놓고, DB가 아닌 메모리상에서 비교하도록 하여 DB 접근을 최소화하였습니다.
통계분석
1시간 단위, 1일 단위, 1달 단위, 1년 단위 스케줄링을 통해 시간, 일, 월, 년 단위의 통계분석을 위한 데이터를 DB에 적재합니다. 해당 데이터는 수치와 그래프를 통해 통계분석 페이지에서 사용자에게 제공됩니다.