반응형
서론
기존 시스템에 IoT 기기 활성화 여부를 검증하여 관리자 페이지에서 업체별 IoT 현황을 파악하려고 한다.
RDBMS라는 제약 환경을 기준으로 효율적인 기기 활성화 여부를 검증하는 Logic을 개발해보자.
이론적 배경
- 연관된 데이터는 MySQL 등 RDBMS로 관리한다.
- 네트워크는 유선랜으로 상시 연결되어 있는 상태이다.
- MQTT는 Timeout 발생 시 TCP 연결이 중도에 끊어질 수 있다.
- 기기 정보는 단순 활성화 여부 Boolean 값을 파악하는 것으로 한다.
가설
- RDBMS에 실시간 데이터를 수집하기에는 트랜잭션, 운영 데이터를 고려하여 적합하지 않은 것으로 가정한다.
- MQTT를 발송하는 주체는 Backend 서버로 요청 전송, 필요 데이터 전송 등 Adapter 개념으로 접근한다.
- IoT에 대한 단순 활성화 여부라면, Backend 서버에서 보낸 A 요청이 IoT 서버에서 B 요청을 요구하게끔 설계한다.
- 하나의 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)
결론
- 로그 관리 시스템처럼 NoSQL Document 개념의 실시간 기기 정보 관리 적용이 필요하다.
- RDBMS에서는 운영 시스템과 관련된 데이터가 병행적으로 동작하므로 책임 분할이 필요하다.
- ELK에 착안하여 Beat 방식으로 기기에서 특정 주기(3s)로 실시간 데이터를 수집 및 활용도 검토해본다.
- 위 내용은 RDMBS에서 임시적으로 활성화 상태를 파악하는 편법에 불과하며, 고도화가 왜 필요한지 유념해야 한다.
참고 및 인용 출처
- 김은기. (2016). MongoDB와 MySQL 대용량 데이터 처리 비교를 통한 NoSQL 활용 방안 연구, 숭실대학교 대학원 IT융합학과.
728x90
반응형
'IoT' 카테고리의 다른 글
[CI] Flutter IoT 무중단 운영 시 Shorebird 고려사항 (0) | 2024.07.29 |
---|---|
[Flutter] StreamController 상태 관리를 통한 Memory Leak 개선 (0) | 2024.07.15 |
[Summary] IoT 프로젝트 정리 (0) | 2024.05.29 |
[Android] GApp, Google App이 없을 경우 FCM (0) | 2024.05.20 |
[AWS IoT Core] 정책 및 인증서 설정 (Certificates & Policies) (0) | 2024.04.26 |
[MQTT Broker] Python Topic Publish (0) | 2024.04.24 |
MQTT(Message Queuing Telemetry Transport) 정의 (0) | 2024.04.20 |