본문 바로가기
IoT

[MVP] IoT 기기 활성화 여부 검증

by 너드나무 2024. 4. 22.
728x90

서론

기존 시스템에 IoT 기기 활성화 여부를 검증하여 관리자 페이지에서 업체별 IoT 현황을 파악하려고 한다.
RDBMS라는 제약 환경을 기준으로 효율적인 기기 활성화 여부를 검증하는 Logic을 개발해보자.

이론적 배경

  • 연관된 데이터는 MySQL 등 RDBMS로 관리한다.
  • 네트워크는 유선랜으로 상시 연결되어 있는 상태이다.
  • MQTT는 Timeout 발생 시 TCP 연결이 중도에 끊어질 수 있다.
  • 기기 정보는 단순 활성화 여부 Boolean 값을 파악하는 것으로 한다.

가설

  1. RDBMS에 실시간 데이터를 수집하기에는 트랜잭션, 운영 데이터를 고려하여 적합하지 않은 것으로 가정한다.
  2. MQTT를 발송하는 주체는 Backend 서버로 요청 전송, 필요 데이터 전송 등 Adapter 개념으로 접근한다.
  3. IoT에 대한 단순 활성화 여부라면, Backend 서버에서 보낸 A 요청이 IoT 서버에서 B 요청을 요구하게끔 설계한다.
  4. 하나의 Request-Response 세트는 IoT 활성화 여부의 OFF-ON 상태와 연결하여 임시 활성화 여부를 결정하게끔 구성한다.

검증

  • RDBMS와 NoSQL의 장점 분석 : 실시간 데이터는 쓰기 부하, 빅데이터 환경을 고려하므로 NoSQL를 고려한다.

 

  • MQTT, Backend, IoT 역할 분석

 

1) Backend : 운영 서버의 데이터를 활용하여 제어 신호를 받아 비즈니스 로직을 구성한다.
2) AWS IoT Core : IoT를 Certificate로 관리하며, MQTT 등 부가 서비스를 제공한다.
3) Android App (IoT) : MQTT Broker의 역할을 수행하며, 정의된 명령어가 수신되면 주제별 원격 실행을 수행한다.

 

  • Flag 값을 활용한 단순 활성화 여부 검증

1-1) MQTT 게시 : 관리자가 원격 제어하는 것은 IoT 활성화 여부를 초기화 시키는 행위로 간주한다.
1-2) 이 경우, IoT 활성화 여부는 OFF 상태가 되며 IoT에서 정보 요청 전까지 비활성화 상태로 전환된다.

2-1) IoT 정보 확인 : IoT가 MQTT를 구독하여 Backend에서 필요한 정보까지 호출한다면, 해당 기기는 활성화 상태로 마지막 기능을 동작한 것으로 간주한다.
2-2) 이 경우, IoT 활성화 여부는 ON 상태가 되며 Backend에서 제어하기 전까지 활성화 상태로 전환된다.

 

실시간성에서 이벤트성으로 활성화 여부를 검증하는 것은 다음과 같은 시간복잡도를 가질 수 있다.
O(N²) -> O(log N)

결론

  1. 로그 관리 시스템처럼 NoSQL Document 개념의 실시간 기기 정보 관리 적용이 필요하다.
  2. RDBMS에서는 운영 시스템과 관련된 데이터가 병행적으로 동작하므로 책임 분할이 필요하다.
  3. ELK에 착안하여 Beat 방식으로 기기에서 특정 주기(3s)로 실시간 데이터를 수집 및 활용도 검토해본다.
  4. 위 내용은 RDMBS에서 임시적으로 활성화 상태를 파악하는 편법에 불과하며, 고도화가 왜 필요한지 유념해야 한다.

참고 및 인용 출처

- 김은기. (2016). MongoDB와 MySQL 대용량 데이터 처리 비교를 통한 NoSQL 활용 방안 연구, 숭실대학교 대학원 IT융합학과.
728x90
반응형