Amazon Web Services 한국 블로그

AWS IoT – 사물 인터넷을 위한 클라우드 서비스

최근 사물인터넷(Internet of Things)이 많이 회자되고 있습니다. 때로 비판이 있지만, 장기적 관점의 기술 경향이면서 매우 흥미로운 변화를 주도하는 가치있는 기술입니다.

가장 큰 변화는 대량 생산을 통한 컴퓨팅 파워의 비용의 감소와 인터넷에 연결할 수 있는 디바이스가 폭넓게 이용된다는 점, 이를 통해 생산되는 정보의 양과 지능에 대한 빅데이터 분석 도구와 기법의 필요성입니다.

  • 대량 생산 컴퓨팅 파워: 매우 작은 크기의 저비용의 컴퓨팅 프로세서가 등장하여 어떤 크기와 형태의 디바이스라도 자연스럽게 탑재됨을 의미합니다.
  • 광범위한 인터넷 (유무선) 연결 기기: 이러한 프로세서들이 서로 클라우드를 통해 연결하여 통신할 수 있게 됨을 의미합니다.
  • 빅 데이터: 이들 기기에서 실행 되는 프로세서에서 수집 및 측정되는 정보를 모아 분석하는 것을 의미합니다.

또한, 최신 배터리 및 센서 기술을 통해 IoT 기술을 실현할 수 있습니다. 금방 공장, 자동차, 헬스 케어 시스템 및 주택 보안 기기 등에서 많은 인터넷 연결 “기기(Things)”들이 활성화 될 것입니다. 이러한 변화를 설명하는 두 개의 기사를 소개해 드립니다. 20 Real World Problems Solved by IoTSmart IoT: IoT as a Human Agent, Human Extension and Human Complement. 최근에 Sudha Jamthe는 IoT Distruptions에서 IoT 세상이 도래할 경우, 향후 새로운 직업 및 업무에 대해 자세히 다루었습니다.

이러한 트렌드가 말해주듯이 AWS도 여러 형태의 IoT 기기 및 애플리케이션을 지원할 준비를 하고 있으며 이를 위해 많은 노력을 기울여 왔습니다. 여기서는 인터넷 연결 디바이스로서의 사물(things)를 다루었지만, 많은 모바일 기기 위의 앱도 마찬가지입니다.

AWS IoT 신규 서비스 발표

오늘 AWS IoT 베타 서비스를 발표합니다.

IoT를 위한 새로운 매니지드 클라우드 서비스는 자동차, 공장, 비행기 엔진 등 다양한 센서가 들어가는 기기(AWS IoT에서는 Things) 사이에 더 쉽고 안전하게 상호 작용하고 글로벌 클라우드 서비스를 연결할 수 있습니다. 클라우드로 연결은 고속의 경량 프로토콜(MQTT 또는 REST)를 활용할 수 있고 제한된 메모리 및 프로세스 파워와 배터리 성능의 기기에도 최적화되어 있습니다.

AWS IoT 서비스의 몇 가지 주요 구성 서비스를 살펴 보겠습니다.

  • Things 물리적은 개체, 인터넷 기기, 애플리케이션 등을 포함한 어떤 형태의 디바이스로서 로컬 환경에서 우리가 관심 있는 것을 측정 및 제어합니다. AWS IoT 모델은 상태와 상태 변화를 확인하고, 연결이 일시적으로 멈추더라도 애플리케이션이 클라우드 기반의 Thing Shadows 기능을 활용하여 상호 작용할 수 있습니다. 각 Things는 이름(names), 속성(attributes) 및 섀도(shadows)를 가지게 됩니다.
  • Thing Shadows Things에 대한 가상 클라우드 기반 표현(represenation)입니다. 각 연결 기기의 상태를 추적하며, 일정 기간 연결이 끊기더라도 가능하도록 되어 있습니다.
  • Rule Engine 실시간으로 여러분이 정의한 표현으로 메시지를 변환해서 다양한 AWS 엔드포인트(Amazon DynamoDB, Amazon Simple Storage Service (S3)AWS Lambda, Amazon Simple Notification Service (SNS), Amazon Simple Queue Service (SQS), Amazon KinesisAmazon Kinesis Firehose) 등으로 SQL 문법 표현으로 전송하게 됩니다. 예를 들어, 온도 센서로 부터 기온 변화 정보를 받아 DynamoDB에 업데이트하거나 thing shadow에 저장된 값을 넘어서는 이상치를 얻을 때 AWS Lambda 함수를 실행(triggering)할 수 있습니다.
  • Message Broker MQTT (및 HTTP 1.1)를 통해 클라우드 백엔드가 응답을 하지 않더라도 대체 프로토콜을 사용할 수 있습니다. Message Broker는 각 사물 및 클라우드 애플리케이션 사이의 수십 억 건의 긴 연결(long-lived connection)을 처리할 수 있도록 확장이 가능합니다. 각 사물은 토픽 기반의 pub/sub 모델로 브로커와 통신할 수 있고 이는 HTTP 요청/응답 방식으로도 가능합니다. 상태를 표시할 수도 수신 메시지를 받을 수도 있습니다. Pub/sub 모델을 통하면 각 하나의 기기의 메시지를 다양한 (수천 혹은 수백 만 개의) 기기와도 쉽고 효율적으로 상태를 공유할 수 있습니다.
  • Device SDK 개별 기기의 형태에 따라 다양한 클라이언트 라이브러리가 제공됩니다. SDK 기기를 통해 AWS IoT Message Broker와 암호화된 연결 방식으로 통신할 수 있습니다. 각 기기들은 Amazon Cognito의 인증 방식이나 X.509 인증서를 통해 서로 인증이 가능합니다.
  • Thing Registry 개별 기기의 고유 식별을 부여하고, 기기의 속성 및 기능에 대한 메타 데이터를 관리합니다.

위의 구성 요소들은 AWS 관리 콘솔, AWS 커맨드라인 인터페이스IoT API를 통해 생성, 설정 변경 및 확인이 가능합니다.

AWS IoT 서비스를 통해 수 십억 개의 사물이 클라우드와 반응성 높은 연결을 만들고 클라우드 애플리케이션이 사물들과 (device shadows, rule engine 및 실시간 기능 등의) 상호 작용을 할 수 있게 됩니다. 사물로부터 메시지를 받아 필터링 및 기록 및 변환하고 이를 다른 AWS 서비스로 연결하거나 직접 코드로 제어할 수 있습니다.

AWS IoT 시작하기

아래 목록과 같이 AWS-powered 스타터킷을 만들기 위해 그동안 많은 IoT 파트너와 협력해왔으며, 향후에 계속해서 추가될 예정입니다.

일단 여러분의 위의 스타터킷 중에 하나를 받아 관심 있는 것을 만드신다면, AWS IoT를 이용한 첫 번째 IoT 앱을 만드실 수 있습니다. 이를 위해 몇 가지 SDK를 활용하실 수 있습니다.

AWS IoT 애플리케이션은 AWS 서비스 뿐만 아니라 Alexs Skills Kit을 통해 Amazon Echo와도 통신이 가능합니다. AWS IoT는 Lambda 함수를 통해 Alexa Skill의 기능을 수행할 수 있고, Alexa Skill은 Shadow와 상호 작용이 가능합니다. 따라서, Alaex Skill을 통해 AWS IoT와 양방향 메시지 처리를 할 수 있는 이점을 얻음으로서, 클라우드를 통해 (NAT 및 홈네트워크 내 방화벽을 넘어) 기기를 깨우거나 명령어를 전달할 수 있게 됩니다. 제조사 역시 특정 음성에 반응할 수 있는데 thing shadows를 활용할 수 있게 됩니다.

AWS IoT 콘솔 활용법

콘솔에는 다양한 AWS IoT 사용 설명서 및 샘플 코드도 포함하고 있습니다.

API엔드 포인트, MQTT 토픽, shadow의 콘텐츠 등 각 기기에 대한 상세한 정보도 확인해 볼 수 있습니다.

AWS IoT 토픽, 메시지 및 규칙

지금까지 설명한 모든 인프라는 AWS IoT의 핵심이 되는 메시지 및 규칙에 대한 지원 시스템입니다. 각 기기는 토픽 이름으로 메시지를 게시(publish)함으로서, 상태를 공개합니다. 토픽으로 메시지를 게시할 때 토픽이 만들어지며, 미리 만들 필요는 없습니다. 토픽 네임스페이스는 계층적 구조(myfactories/seattle/sensors/door)로 되어 있습니다.

규칙(Rules)은 SQL 기반의 SELECT 구문을 활용하여 메시지를 필터링합니다. IoT Rule Engine에서는 FROM절을 통해 MQTT 토픽을 참조하며, WHERE절을 통해 메시지에서 JSON 속성을 참조할 수 있습니다. 규칙에 맞는 메시지가 있으면, 하나 이상의 다른 동작을 수행할 수 있습니다. 예를 들면…

  • DynamoDB 테이블에 조회, 추가 및 변경
  • Lambda 함수 실행
  • S3 버킷에 쓰기
  • SNS 토픽 및 엔드포인트에 게시
  • SQS 큐에 게시
  • Amazon Kinesis Stream에 게시
  • Amazon Kinesis Firehose에 게시
  • 다른 토픽에 재게시

SELECT 구문에서 전체(*)를 선택하거나 특정 메시지 필드를 선택할 수 있습니다.

위에 언급한 엔드포인트를 통해 다른 AWS 서비스로 연결할 수 있는데, 예를 들면 Kinesis를 통해 Amazon Redshift로 DW용 데이터로 저장할 수도 있습니다. 뿐만 아니라 Lambda, SNS 또는 Kinesis 를 통해 외부 서버 엔드포인트로 전송도 가능합니다.

Thing Shadows 역시 메시징 시스템에 참여할 수 있고, JSON 형식의 HTTP GET 요청에 응답합니다(HTTP를 쓸 수 없는 환경에서는 MQTT 활용 가능). 각 JSON 문서에는 사물의 상태, 메타데이터 및 상태 버전 등이 담겨 있습니다. 각 상태 정보는 (기기의 최종 상태) “reported” 및 (애플리케이션이 원하는) “desired” 사항이 저장되어 있습니다. 각 Shadow가 원하는 상태(HTTP) POST에 대한 변화를 받아 “delta”와 “accepted” 메시지를 thing shadows와 연결된 토픽으로 게시합니다. 기기가 이들 토픽을 수신 대기하다가 상태 변경을 진행합니다.

IoT re:Invent 세션 소개
만약 여러분이 re:Invent에 계시다면 아래의 모바일 개발 및 IoT 트랙의 강연을 참고하시고 참여하시기 바랍니다.

  • MBL203 – From Drones to Cars: Connecting the Devices in Motion to the Cloud.
  • MBL204 -Connecting the Unconnected – State of the Union – Internet of Things Powered by AWS.
  • MBL303 -Build Mobile Apps for IoT Devices and IoT Apps for Mobile Devices.
  • MBL305 – You Have Date from the Devices, Now What? Getting Value of the IoT.
  • WRK202 – Build a Scalable Mobile App on Serverless, Event-Triggered, Back-End Logic.

향후 계획
이 소개 글에서 언급하지 못한 많은 내용들이 있습니다. AWS re:Invent가 끝나면, 여러분이 집에서 직접 하실 수 있도록 제가 코드를 직접 만들어서 여러분에게 공유해 드리겠습니다.

– Jeff;

AWS IoT Mega Contest에도 꼭 참여하세요!

이 글은 AWS IoT – Cloud Services for Connected Devices에 대한 한국어 번역이며, re:Invent 2015의 신규 서비스 소식입니다.