IoT를 작년에 기회가 되어서 이것 저것 찾아 보면서 구현 했는 데이제서야 나름의 결론을 쓰게 되었다.
Internet of Things 라는 단어가 아직은 생소하기는 하지만역시 그렇게 우리가 생각하는 소프트웨어의 범주에 벗어난다고는 생각하기 어렵다는 것이 내 생각이다. 전통적인 3-Tier 구조인 클라언트 애플리케이션 서버 그리고 백엔드 서비스의 범주를 가지고 생각을 해 볼 수 있었으며, 해당 내용을 구현 하기 위해서 필요 했던 것이 프로토콜이었다는 것이다. 원래이 IoT를 접근하기 위해서 접근 했던 큰 그림은 다음과 같다.
전체 아키텍처
레이어 구조 아닌 구조를 만들어서 생각들을 정리하고 보니, 전통적인 3-Tier 구조 안에서 분석 구조를 하나 생각 해 볼 수 있지 않을까 하는 생각이 문득 들었다.
IoT Client를 IoT 서비스로바꾸어서 생각 해보면, 서비스 내에서 클라이언트가 존재하고 분석 레이어가 따로 존해 해야 하지 않을까 하는 생각이 든다. 하지만 이 모든 것을 한데 넣어서 레이어 작업을 하다 보니 다음과 같이 표현해 보는 것은 어떨까 하는 생각도들었다.
빠진 것도 많을 것이고, 오류도 있을 것이나, 뭐 그래도 내가 원하는 모양새를 갖춘 그림은 된 듯하게 보인다.
위의 그림을 그려놓고 일련의 작업을 시작하였으며, 그 일련의 작업을순서대로 나열 해보면 다음과 같은 작업을 하여 왔다고 생각한다.
- 센서 선택 및 제어를 위한 기본 지식
- 각 센서 제어
- 센서 제어용 디바이스 및 OS 선택
- 센서 제어 라이브러리 선택
- 센서 제어 프로토콜 지식
- 센서 프로토콜을 위한 프레임워크 선택
- 센서 제어 구현
- 센서 제어를 위한 메시지 큐 서버 기본 지식
- 센서 제어를 위한 MQTT 서버 선택
- 사용자 센서 제어를 위한 MQTT 테스트
- 센서 제어를 위한 모바일 OS 선택
- 센서 제어를 위한 모바일 프로그래밍(안드로이드)
- 모바일과 MQTT 연동
- 데이터 분석을 위한 빅데이터 기본 지식
- 데이터 분석을 위한 프레임워크 선택(apache storm)
- 데이터 실시간 분석을 위한 데이터베이스 기본지식
- No-SQL 데이터베이스 선택 및 테스트 – 하지 못함
- 센서 데이터 분석 구현 – 하지 못함
- 빅데이터 분석 연동 – 하지 못함
빅데이터 분석과의 연동은 결국 또 다른 얘기가 된 것으로 하여 약 두 달간의 여정을 마쳤던 것으로 기억을 한다. 시간 날 때마다 한 것이라, 정신도 없었고, 코드나 구성들은 한 두 주만에 급박하게 완성한 것들이라서 맘에 들지도 않고,라이브러리들도 많이 바뀐 듯하다.
하지만 앞으로 이에 관련된 프로젝트를 하게 된다면 위와 같은 구성을 고려 하면서 하게 되지 않을까 하는 생각을해봤다.
프로토콜
프로토콜은 MQTT(TCP/IP), COAP(Restful) 등으로결론이 나는 추세 인 듯하고 M2M 이라고 하는 머신과 머신의 통신은 네트워크 대역폭에 좌지우지 되는것이라, 대역폭이 넓은 경우에는 프로토콜 정의의 폭이 넓어 지고, 그반대의 경우에는 프로토콜 정의의 폭이 낮아 질 수 밖에 없는 것이다. 표준을 정하는 다는 의미나 관점에서볼 때는 현재 Resful 기반의 프로토콜과 함께 기존의 바이너리 프로토콜을 혼재 되어서 사용될 가능성이높아 보이는 것도 그 이유이다.
결국, 낮은 대역폭을 사용 할 경우와 높은 대역폭을 사용 할 경우를모두 받아 들일 수 있는 프로토콜 기반으로 이 통신 프로토콜이 정해 질 가능성이라는 것이 나의 의견이다.
게이트웨이라고 만들었던 하부에는 센서와 실제 물리적인 센서를 제어하기 위한 디바이스를 두었고, 이 디바이스와 통신을 오픈소스인 OM2M을 사용해서 gscl, nscl을 각각 따로 두어서 통신을 했던 기억이 난다. 이렇게하였을 경우에 자바에 의존성을 가지게 되지만 하나의 추상화된 라이브러리를 구현하지 않고 사용한다는 측면에서 좋고,결국 이 라이브러리들을 사용해서 서버와 프레젠테이션 영역과의 통신을 다 받아 줄 수 있는 한 가지 방법이 아닐까 한다.
사용자 센서 제어
사실, IoT의 아주 기본적인 부분에 대해서 말해 보라면, 바로 이런 것이 아닐까? 내가 내 폰으로 집에 있는 기기를 제어하면된다. 라는 것.
이것을 하기 위해서는 사용자에게 그 제어권을 넘겨 주어야 한다. 기존의방식은 사용자가 수동으로 하나하나의 기기들과 몸으로 동작방식을 주고 받았다면, 이제는 손가락 하나로이 모든 것들이 가능한 세상이 되고 있다고 생각한다. 나는 이를 사용자 센서 제어라고 말하고 싶다.
그러면 어떻게 이렇게 할 것인가에 대해서 안드로이드 구현을 생각해 보았고, 이프로세스 즉 흐름은 다음과 같은 기본 내용을 가질 것이라고 생각 한다.
센서와 게이트웨이 그리고 서버, 서버와 통신하는 모바일 많을 말을하지 않아도 당연해 보이는 듯 한 내용이다. 이 부분에서 로컬 PC를서버 시스템 모듈로 모바일 테스트 환경을 모바일 단말기로 바꾼다면 센서 제어는 가능 한 것으로 판단 되었고, 이전에블로그에 올린 글 중에 하나이기도 하다.
센서와 게이트웨이 구현에 대해서
센서와 게이트웨이의 구현에 대해서 다음 그림에서 확인해 보도록 한다.
위의 부분을 생각해 본다면, 가능한 한 많은 시간을 투자하여 해봐야할 것들이 너무 많다. 라즈베리 파이를 선택하든, 인델 에디슨을선택하든 지 간에 중요한 부분은 각 센서들의 특징과 제어정보를 한데 모으고 테스트 하는 것이 제일 주요 부분이 아닐가 하고 생각이 든다. 그 이후에 문제들은 우리가 해왔던 일반적인 범주에서 벗어나지 않는 작업들 이라고 생각한다.
- 모바일프로그래밍
- 서버 프로그래밍
- OS 설치 및 환경 설정
- 센서 통신 및 드라이버 프로그래밍
이 부분에 대해서 말해보라고 한다면, 이미 많을 업체들이 서버 시스템과각종 센서 제어 요건들을 확보하고 있기 때문에, 센서 혹은 기기의 정보만 알게 된다면 그리고 이 기기가 IoT 기기라고 한다면, 다음과정으로 가능한 시대가 되었다.
- IoT 가능 기기 인지 유무 확인
- IoT 기기 설정
- 모바일 앱 설치
- 모바일 앱 설정
- IoT 기기와 통신 확인
내 생각에는 위의 다섯가지 단계이면 서비스 제공자가 누구더라고 가능한 시대라는 것이다. 그래도 이 내용을 알아야 하는 것은 우리가 소프트웨어를 다루는 엔지니어이고,향후에 어떤 일을 하게 될 지 모르는 상황에서 업계의 가장 중요한 화두 중 하나를 다루는 것이므로 필요하다고 생각한다.
이상.
'이것저것' 카테고리의 다른 글
NoSQL 데이터베이스 비교 (1) | 2023.03.14 |
---|---|
2017년 8월 안드로이드 상위 5개 라이브러리 (0) | 2023.03.08 |
IoT를 위한 고 가용성 MQTT 클러스터 구축하기 (0) | 2023.02.28 |
MQTT 에 대해서 (0) | 2023.02.27 |
IIS 모니터링 도구로 메트릭 수집하기 (0) | 2023.02.26 |