AWS IoT Core는 Amazon Web Services (AWS)에서 제공하는 사물 인터넷(IoT) 플랫폼 서비스로 IoT 장치와 애플리케이션 간의 연결, 통신 및 보안 관리를 지원한다.
IoT Core는 크게 7가지로 구분지을 수 있으며 IoT Defender, IoT Gateway, Message Broker, Rules Engine(데이터 적재 규칙), IoT Shadow, IoT Registry(Thing 사물 개념 등록), Advisor이다. 각각의 요소에서 무슨 기능을 담당하는지 짐작이 갈정도로 네이밍을 잘 해놓았다는 느낌을 받았다.
1. Identity Service(디바이스 인증)
디바이스 인증을 위해서는 세가지 방식이 있는데 첫째는 SigV4라는 인증 프로토콜로 AWS에서 흔하게 쓰이는 IAM과 같은 인증 방법을 뜻하는데 그리 권장하지 않는다고 한다. 둘째는 X.509방식으로 SSL TLS같은 보안 프로토콜에 사용되는 인증서 형식으로, 디바이스 별 인증서(키페어)를 통해 접속하며 가장 많이 쓰인다고 한다. 셋째로 Custom Authorizer는 API Gateway에서 사용하는 사용자 지정 인증, 인가 방식으로 요청에 대해 사용자가 지정한 권한 부여 규칙을 정의할 수 있다고 한다. 주로 Lambda함수로 작성되며 여러 형태의 인증,인가가 가능하다.
2. IoT Gateway(디바이스 연결)
디바이스와 의 연결을 위한 IoT Gateway는 디바이스에서 서비스로, 서비스에서 디바이스의 데이터 전송을 지원해준다. 이를 위해 다양한 프로토콜을 지원하며(MQTT,HTTPS, WebSocket) 이들 중 MQTT(경량 메시징 프로토콜)를 주로 사용한다.
3. Message Broker(메시지 전송)
어플리케이션에서 발생한 이벤트, 알림, 데이터를 전송하는 기능으로 QoS0, QoS1가 현재 서비스 중이며 MQTT프로콜상에서 사용된다. QoS0는 메세지가 전달되지 않거나 중복될 수 있으며 QoS1은 구독자가 최소 한번 받을 수 있게 보장한다. 이후 더욱 높은 신뢰성을 가진 QoS2도 출시 예정이라고 한다.
4. Rules Engine(메시지 처리)
Rules Engine은 수신된 메시지를 처리하고, 다른 AWS 서비스에 메시지를 전달하는 규칙 기반의 데이터 처리 엔진이다. Message Broker와는 1:1의 단방향 메시지 송신에 주로 사용되며 비즈니스 프로세스를 자동화, 최적화 할 때 쓰인다. 사용 예로는 SQL구문을 통한 필터링, JSON의 특정 키 값 전송 등이 있다.
5. Device Shadow(장치 상태 관리)
장치 상태정보를 저장하는 디바이스 쉐도우는 장치가 연결되지 않을 때 상태 조회가 가능하다. 또한 어플리케이션에서 쉐도우의 상태를 조회, 업데이트하여 동기화 시켜 디바이스의 제어가 가능하다.
6. Registry(디바이스 메타데이터&보안 키 저장)
Device의 Profile 저장소로 Certification등 정보를 Thing으로 정의하여 저장한다. Thing(디바이스의 제조일, 시리얼넘버 등의 정보) -> ThingType을 통해 3,4개로 제한 되어 있는 Thing을 50개 이상의 키 값으로 저장할 수 있다, ThingGrouop을 통해 그루핑이 가능한데, 예를들면 자동차 배터리가 20% 이하인 Thing을 Dynamic하게 그루핑이 가능하다.
7. Device Advisor는 특수한 상황에 쓰인다고 하니 스킵!
Device SDK -> Auth(인증) -> MQTT(전송) -> Shadow(상태관리) -> Rule Engine(단방향/비용 효율 고려) -> Registry(기기 별 제어 기능 구분) 의 프로세스로 IoT Core와 함께 디바이스 매니지먼트가 가능하다.
디바이스 매니지먼트를 할 때 Thing, Shadow를 통해 디바이스를 그루핑 및 제어하며 장치의 모니터링 및 업데이트, 장치의 개별 엑세스를 지원한다. 이 때 fleet indexing을 통해 Thing의 attribute, shadow 정보를 검색하며 디바이스의 상태파악을 한다고 한다.
그렇다면 디바이스 매니지먼트의 꽃과 같은 Device Provisiong에 대해서 알아보자. Device Provisiong은 새로운 장치를 AWS IoT에 등록하고 인증서와 보안 정책을 자동으로 생성해 클라우드에 연결할 수있도록 도아주는 서비스이다. Device Provisiong의 종류는 여러가지가 있으며 간단히 다섯가지만 알아보도록 하자.
D: Clain Cert -> I: Device Cert -> D: Templete Name 전송 -> I: Templete에맞게 Thing, Policy 구성, 맵핑 ->D: 구성확인 -> I: D가 구성확인됨을 전달받음
Thing Indexing을 통해 Thing,Shadow,Connectivity각 속성을 색인화(제조사, 위치, 시리얼넘버) 해 query syntax를 활용해 조회가 가능하다.