배너
닫기

산업동향

배너

[IoT 시장 동향 및 배경 기술(2)] 디바이스 게이트웨이

  • 등록 2016.02.12 14:59:02
URL복사

[IoT 시장 동향 및 배경 기술(1)] IoT 서비스의 구조
[IoT 시장 동향 및 배경 기술(2)] 디바이스 게이트웨이




디바이스 게이트웨이


그림 9. AWS에서 IoT 장치를 연결 및 관리를 위한 콘솔


AWS IoT 디바이스 게이트웨이를 사용하면 디바이스가 AWS IoT와 안전하고 효율적으로 통신할 수 있도록 한다. 디바이스 게이트웨이는 게시/구독 모델을 사용하여 메시지를 교환할 수 있으며, 이러한 모델은 1대 1 및 1대 다수 통신을 가능하게 한다.


AWS IoT는 이러한 1대 다수 통신 패턴을 통해 연결된 디바이스가 데이터를 해당 주제의 여러 구독자에게 브로드캐스트할 수 있게 해준다. 디바이스 게이트웨이는 MQTT 및 HTTP 1.1 프로토콜을 지원하며, 고유 또는 레거시 프로토콜을 지원하도록 손쉽게 구현할 수 있다. 디바이스 게이트웨이는 인프라 프로비저닝 없이 수십억 개의 디바이스를 지원하도록 자동으로 확장할 수 있다.


인증 및 권한 부여


AWS IoT는 모든 연결 지점에서 상호 인증 및 암호화를 제공하므로 디바이스와 AWS IoT 간에 입증된 자격 증명 없이는 데이터가 교환되지 않는다. AWS IoT는 AWS의 인증 방법뿐 아니라 X.509 인증서 기반 인증을 지원하고 있다.


HTTP를 이용한 연결은 이러한 방법 중 하나를 사용할 수 있는 반면에 MQTT를 이용한 연결은 인증서 기반 인증을 사용한다. 원하는 역할 및 정책을 각 인증서에 매핑하여 디바이스 또는 애플리케이션에 액세스 권한을 부여하거나, 마음이 바뀐 경우 디바이스를 직접 조작하지 않고도 액세스 권한을 모두 취소할 수 있다.


콘솔이나 API를 사용해 디바이스에 대한 인증서와 정책을 생성, 배포 및 관리할 수 있다. 이러한 디바이스 인증서는 AWS IAM를 사용해 구성된 관련 정책으로 프로비저닝 및 활성화하고 해당 정책과 연결할 수 있다. 이를 통해 원하는 경우, 개별 디바이스에 대한 액세스를 즉시 취소할 수 있다.


또한  AWS IoT는 앱 사용자에 대한 고유 식별자를 생성하고 제한적인 임시 AWS 자격 증명을 가져오는 데 필요한 모든 단계를 처리하는 Amazon Cognito를 사용하여 사용자의 모바일 앱으로부터의 연결도 지원하고 있다.


레지스트리


레지스트리는 디바이스에 대한 자격 증명을 설정하고 디바이스의 속성 및 기능 같은 메타데이터를 추적할 수 있다. 레지스트리는 디바이스 유형이나 연결 방식과 관계없이 지속적으로 형식이 지정되는 각 디바이스에 고유 자격 증명을 지정한다. 또한 예를 들어 센서가 온도를 보고하는지 그리고 데이터가 화씨인지 섭씨인지와 같은 디바이스의 기능을 설명하는 메타데이터를 지원한다.


디바이스 섀도


AWS IoT에서는 디바이스의 최신 상태가 포함된 각 디바이스의 영구, 가상 버전 또는 섀도를 생성하여 애플리케이션이나 다른 디바이스가 메시지를 읽고 해당 디바이스와 상호 작용할 수 있는 기능을 제공하고 있다. 디바이스 섀도는 디바이스가 오프라인이더라도 각 디바이스의 최종 보고된 상태와 원하는 이후 상태를 유지한다. API 또는 규칙 엔진을 사용하여 디바이스의 최종 보고된 상태를 가져오거나 원하는 이후 상태를 설정할 수 있다.


규칙 엔진


규칙 엔진을 사용하면 인프라를 관리할 필요 없이 글로벌 규모로 연결된 디바이스에서 생성된 데이터를 수집, 처리, 분석하고 이를 기반으로 조치를 취할 수 있다.


규칙 엔진은 AWS IoT에 게시된 수신 메시지를 평가하고, 정의한 비즈니스 규칙에 따라 다른 디바이스나 클라우드 서비스로 이를 변환 및 전송한다. 규칙은 하나 이상의 디바이스의 데이터에 적용할 수 있으며 하나 이상의 작업을 동시에 수행할 수 있다.


또한 규칙 엔진은 AWS Lambda, Amazon Kinesis, Amazon S3, Amazon Machine Learning, Amazon DynamoDB를 비롯한 AWS 엔드포인트에 메시지를 라우팅 할 수 있다. 외부 엔드포인트에는 AWS Lambda, Amazon Kinesis 및 Amazon Simple Notification Service(SNS)를 사용해 전달할 수 있다.


AWS IoT SDK


AWS를 위한 IoT SDK는 C나 JAVA 언어로 되어 있으며, AWS IoT 콘솔에서 설정한 정보를 통하여 장치에서 쉽게 AWS IoT 서버와 연결할 수 있게 하는 기능을 제공하고 있다. SDK의 내부 구조를 살펴보면 다음과 같다.


AWS SDK의 디렉토리 구조
•aws_iot_src - AWS IoT SDK 소스 파일
•sample_apps - 샘플 응용 프로그램
•‌aws_mqtt_embedded_client_lib - MQTT 클라이언트 라이브러리
•certs - TLS 인증서

예제 내용
•subscribe_publish_sample - MQTT 예제
•shadow_sample - 디바이스 새도 예제
•shadow_sample_console_echo - IoT 콘솔 예제

AWS Iot 플랫폼과 연결은 다음과 같은 함수를 통해 연결하게 된다.

rc = aws_iot_mqtt_connect(&connectParams);

플랫폼 내 서비스와 연결

MQTTSubscribeParams subParams = MQTTSubscribeParamsDefault;
subParams.mHandler = MQTTcallbackHandler;
subParams.qos = QOS_0;
subParams.pTopic = "sdkTest/sub";
rc = aws_iot_mqtt_subscribe(&subParams);

디바이스 새도의 기능은 aws_iot_shadow_update 함수를 통해 진행할 수 있다.

rc = aws_iot_shadow_update(&mqttClient,
AWS_IOT_MY_THING_NAME,
pJsonDocumentBuffer,
ShadowUpdateStatusCallback,
pCallbackContext,
TIMEOUT_4SEC,
persistenSubscription);

 

지금까지 IoT 구현에 있어서 중요한 플랫폼적인 요소와 구조에 대해서 살펴 봤다. 다음호에서는 좀 더 세부적인 내용에 대해 살펴보도록 하겠다.


라영호 _ 테뷸라 대표









배너










주요파트너/추천기업