aws iot 서비스 활용하기- 윤석찬, aws 테크에반젤리스트 :: iot convergence...
TRANSCRIPT
© 2015, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
윤석찬 AWS코리아, 테크에반젤리스트
스타트업과 개발자를 위한 AWS IoT 서비스 활용하기
@channyun
아마존 웹 서비스 소개 Amazon Web Services
2006년 부터 클라우드 서비스 운영 경험
다양한 클라우드 업무를 지원하는 50여개 이상
고객의 피드백을 기반한 빠른 혁신 속도
11 리전, 30 가용영역 , 53 엣지 로케이션
50번의 자발적인 가격 인하
수천개 파트너사 및 마켓플레이스 제품
축적된 경험
폭넓은 전문 서비스
혁신의 속도
글로벌 인프라
가격 철학
파트너 생태계
다양한 벤더의 SDK 및 개발도구
별도 프로토콜 구현 문제
기기 확장성 및 데이터 노이즈
보안 및 통신 암호화
클라우드, 데이터 분석 모바일 앱과 통합
실시간 빅데이터 처리
예측 모델 및 적용
개발자에게 IoT 서비스 도전
AWS IoT
안전한 IoT 통신 가능
누구나 IoT 기기 연결 가능
손 쉽게 서비스 기능 구현
“수십억개의 IoT 장치를 AWS에 안전하게 연결하고, 애플리케이션 및 각 장치간 상호 작용할 수 있게 하는 서비스”
Demo- AWS IoT 맛보기
AWS IoT
디바이스 SDK 클라이언트 인증 및 연결, 메시지 교환을 위한 개발도구
디바이스 게이트웨이 MQTT 및 HTTP 기반
디바이스 통신
보안 및 인증 고급 인증 및 암호화를
통한 보안 제공
RULES ENGINE 장치메시지를 규칙에 따라 AWS 서비스와 연계 동작
AWS 서비스 - - - - -
서드파티 서비스
DEVICE SHADOW 네트웍 단절에도 응답하는
가상 장치
애플리케이션
AWS IoT API
디바이스 레지스트리 IoT 장치 등록 및 관리
AWS IoT 메시지 브로커
디바이스 게이트웨이 MQTT 및 HTTP 기반
디바이스 통신
AWS IoT Device Gateway 표준 프로토콜 제공 MQTT 및 HTTP 1.1를 기반으로 장치 및 애플리케이션 간 연결 가능 Pub/Sub을 통한 양방향 메시지 클라우드로 부터 클라이언트(장치 및 앱)에 명령 실행 가능 암호화 기본 제공 X509 인증서 및 TLS 1.2 Client Mutual Auth 기능 기본 제공
Topic Based Architecture
(lights/thing-2/color)
확장성 높은 디바이스 게이트웨이
MQTT OASIS 표준 프로토콜 (v3.1.1) – 기기 통신을 위해 고안
MQTT Broker
CONNECT SUBSCRIBE
to MQTT broker to thing3/data
CONNECT PUBLISH
to MQTT broker to thing3/data
recv
recv
pub
thing #3
thing #1
thing #2
TCP/IP
WebSocket
MQTT 브로커의 개발/유지/확장 및 클라우드에 적용 필요
MQTT simple to implement
Connect
Publish
Subscribe
Unsubscribe Disconnect
client=newMessaging.Client(hostname,port,clientId)client.onMessageArrived=messageArrived;client.onConnectionLost=connectionLost;client.connect({onSuccess:connectionSuccess});
functionconnectionSuccess(){ client.subscribe(“planets/earth");
varmsg=newMessaging.Message("Helloworld!");msg.destinationName="planets/earth";client.publish(msg);
}
functionmessageArrived(msg){ console.log(msg.payloadString);
client.unsubscribe("planets/earth");client.disconnect();
}
Eclipse Paho JavaScript MQTT client
AWS IoT 메시지 브로커: 매니지드 서비스
확장성 높은 디바이스 게이트웨이
수백만개 장치에서 수십억 메시지 양방향
전달 가능
Subscribers Publishers
AWS IoT 인증 보안 AUTHENTICATION
Secure with mutual authentication and encryption
보안 및 인증 고급 인증 및 암호화를
통한 보안 제공
AWS IoT 보안 강력한 인증 기술 – X509 인증기반
강력한 암호 통신 – TLS 기반
하나의 서비스, 두개의 프로토콜 MQTT + Mutual Auth TLS AWS Auth + HTTPS
Server Auth TLS + Cert TLS + Cert
Client Auth TLS + Cert AWS API Keys
Confidentiality TLS TLS
Protocol MQTT HTTP
Identification AWS ARNs AWS ARNs
Authorization AWS Policy AWS Policy
NEW
AWS IoT 권한 관리
• 세분화된 권한 관리: o 장치 관리 o Pub/Sub 데이터접근 o AWS 서비스 접근
{ "Version": "2012-10-17", "Statement": [ {
"Effect": "Allow", "Action": ["iot:Publish"], "Resource": ["arn:aws:iot:us-east-1::topic/foo"] }, {
"Effect": "Allow", "Action": ["iot:Subscribe"], "Resource": ["arn:aws:iot:us-east-1::topicfilter/foo/bar/*"] }]}
AWS IoT Rules Engine
RULES ENGINE 장치메시지를 규칙에 따라 AWS 서비스와 연계 동작
AWS IoT Rules Engine 기초
개발자 친화적인 문법 ü SQL로 정의 가능 ü WHERE 절 및 JSON 지원
시그널 탐지 가능 ü 문자열 탐색(regex지원) ü 수학 연산자 제공 ü 암호화 지원 ü UUID, Timestamp, rand, etc.
SELECT * FROM ‘things/thing-2/color’ WHERE color = ‘red’
AWS IoT – SQL 문법
SELECT DATA FROM TOPIC WHERE FILTER
• 데이터베이스 테이블 탐색과 비슷 • 기본 데이터 소스는 MQTT
예제: • FROM mqtt(‘my/topic’)
• FROM (‘my/topic’)
• WHERE temperature >=30
AWS IoT Rules Engine – JSON 포맷 {
"SELECT*,clientId()asMQTTClientIdFROM'room/ac/+'WHEREtemperature>30","actions":[{”sns":{"roleArn":"arn:aws:iam::123456789012:role/SNSPutRole","topicArn":"arn:aws:sns:us-east-1:123456789012:TempWarningNotification"}]}
온도가 30도가 넘었을 때 방안에 에어콘의 아이디
선택
모바일 폰으로 푸시 알림 동작 수행
AWS IoT Rules Engine 서비스 동작
RULES ENGINE Transform messages based on rules and
route to AWS Services
AWS Services - - - - -
3P Services
AWS 서비스 - - - - -
서드파티 서비스
1. AWS 서비스 (직접 연동)
Rules Engine
동작
AWS IoT Rules Engine: AWS 연동
AWS Lambda
Amazon SNS
Amazon SQS
Amazon S3
Amazon Kinesis
Amazon DynamoDB Amazon RDS
Amazon Redshift
Amazon Glacier
Amazon EC2
3. 외부 연결 지점 (via Lambda and SNS)
Rules Engine은 AWS IoT를 외부 및 AWS 내부 서비스 동작 제어
2. AWS 서비스 제어 (via Amazon Kinesis, AWS Lambda, Amazon S3…)
AWS IoT Rules Engine: AWS 연동
Rules Engine는 유입 메시지를 평가하여 AWS IoT에 제공함과 동시에 비지니스 규칙에 따라 적절한 엔드포인트로 전달하는 역할 수행
AWS Lambda 함수 실행
S3 버킷에 객체 저장
DynamoDB 테이블에 데이터 추가/변경
SNS 토픽으로 푸시 메시지
Amazon Kinesis 실시간 스트림
동작
Amazon Kinesis Firehose 전달
AWS IoT에 전달
AWS IoT 예제: 데이터 저장 및 시각화
Amazon DynamoDB Table
Rules Engine
Policy Private Key & Certificate
Thing/Device
Rule SDK
AWS IoT AWS Services
Policy
Dashboard
IAM Role
Select * from ‘iotthings/+’
Action DynamoDB S3 Website
The image cannot be displayed. Your computer may not have enough memory to open the image, or the image may have been corrupted. Restart your computer, and then open the file again. If the red x still appears, you may have to delete the image and then insert it again.
AWS IoT 예제: 스트리밍 데이터
N:1 센서 데이터 실시간 제어 가능 (잡음 제거 가능) Rules Engine는 데이터 필터 후, Amazon Kinesis로 실시간 전달 가능
Amazon Kinesis Streams을 통한 2차 연동 동시적 스트림은 데이터베이스, 애플리케이션 및 기타 서비스에서 서비스 수행
Ordered Stream
Amazon Kinesis
Amazon RDS
AWS IoT 예제: 머신러닝 활용
이상값 탐지 nomaly Detection Amazon Machine Learning은 Rules Engine에 예측 모델 평가 제공 가능 예측을 위한 지속적 업데이트 가능 데이터를 통한 지속적 모델 업데이트로 실시간 예측 활용
Send to S3
Amazon Machine Learning
Re-Train
Amazon S3
AWS IoT DeviceShadow
DEVICE SHADOW 네트웍 단절에도 응답하는
가상 장치
AWS IoT Device Shadow
Shadow
네트워크가 일시적으로 단절될 경우 상태 정보 처리 상태 정보, 메타 데이터(센서값) 등을 동기화하여, 네트워크가 활성화 될때까지제공
실제 IoT 기기를 대표하는 클라우드에서 가상 장치
AWS IoT Shadow Flow
Shadow
Device SDK
1. 장치가 현재 상태 정보 알림
2. 상태 정보 저장
3. 앱에서 현재 상태 정보 요청
4. 앱에서 상태 변경 요청 5. Device Shadow에서 상태 동기화
6. 장치가 상태 정보 알림 7. Device Shadow 상태 변경 확인 AWS IoT
AWS IoT Device Shadow Topics (MQTT)
Thing SDK (C-SDK, JS-SDK)를 통해 손쉽게 shadow 기능을 만들 수 있으며, 장치와 자동으로 동기화 가능
AWS IoT Thing Shadow
UPDATE: $aws/things/{thingName}/shadow/update DELTA: $aws/things/{thingName}/shadow/update/delta GET: $aws/things/{thingName}/shadow/get DELETE: $aws/things/{thingName}/shadow/delete
Sensor Reported Desired Delta
LED1 RED YELLOW LED1 = Yellow TEMP = 28
ACCEL X=1,Y=5,Z=4 X=1,Y=5,Z=4
TEMP 30도 28도
활용 예제: 자동 청소기
desired: { “status”: “RUNNING” }
shadow/update update/accepted
Republish vacuum/shadow/update
vacuum/update/delta
reported: { “AmbientLightValue”: 55 }
Rules Engine
Shadow
Shadow
One sensor automatically triggering the other device!
Select * from $/update/accepted where AmbientLightValue <100
활용 예제: 자동 청소기 (모바일 앱)
Android App
UpdateThingShadow
Desired: { “status”: “RUNNING” }
$aws/things/light/update
$a/vacuum/update/delta Shadow
Shadow
AWS IoT – 지금 시작하기
AWS IoT SDKs
IoT Starter Kits
AWS IoT Device SDK 시작하기
C-SDK (Ideal for embedded
OS)
JS-SDK (Ideal for Embedded
Linux Platforms)
Arduino Library
(Arduino Yun)
Mobile SDK (Android and iOS)
Arduino Yún SDK
Arduino IDE 라이브러리 다양한 하드웨어 생태계
https://aws.amazon.com/ko/iot/sdk/
Node.js SDK
NPM 기반 설치 임베디드 리눅스 보드 지원 손쉬운 개발 및 하드웨어 접근
https://aws.amazon.com/ko/iot/sdk/
Node.js SDK
Embedded C SDK
임베디드 개발용 플랫폼별 포팅 가능 소스 코드로 전달 가능 w/ POSIX port
https://aws.amazon.com/ko/iot/sdk/
Embedded C SDK
프로토콜, 클라이언트, 샘플 코드 등 모두 제공 TLS MQTT Client Shadow SDK Examples
https://aws.amazon.com/ko/iot/sdk/
AWS IoT 공식 스타터킷 제공 업체
https://aws.amazon.com/ko/iot/getting-started/#kits
AWS IoT 공식 스타터킷 제공 업체 Broadcom WICED BCM4343W On Threadx/Netx
Marvell EZConnect MW302 On FreeRTOS
Renasas RX63N On Micrium OS
TI CC3200 On TI-RTOS
Microchip WCM PIC32 Platform
Intel Edison on Yocto Linux
Mediatek LinkOne on Linkit OS
Dragonboard 410c on Ubuntu
Seeeduino Arduino on openWRT
Beaglebone Green on Debian
https://aws.amazon.com/ko/iot/getting-started/#kits
https://www.youtube.com/watch?v=txWTxAyhC78
Demo- IoT 그린하우스
사용한 만큼만 과금 (초기 비용 없음) 백만 메시지 당 $5 per million
ü US East (N. Virginia), US West (Oregon), EU (Ireland) $8 in Asia Pacific (Tokyo)
AWS IoT 무료 제공(Free-tier) 매월 250,000 메시지당 무료 (12개월 제공)
AWS IoT 과금 모델
100 sensors * 30 days * 24 hours * 60 minutes = 4.38 million messages
1 meter * 100 readings * 30 days * 24 hours * 60 minutes = 4.38 million messages
100 개의 센서: 분당 1개의 메시지 전송
DynamoDB 테이블: 전체 센서 데이터 받는 경우
데이터 확인: 모든 센서 데이터를 다 받는 경우
1 table * 100 readings * 30 days * 24 hours * 60 minutes = 4.38 million messages
4.38 million publishes from sensors: 4.38 * $5 = $21.90 4.38 million deliveries to a metering unit: 4.38 * $5 = $21.90
4.38 million deliveries to DynamoDB: $0 4.38 million storing to DynamoDB: 별도 과금
AWS IoT
AWS IoT 과금 예제
https://www.hackster.io/challenges/AWSIoTMegaContest
http://bit.ly/aws-iot-hack AWS IoT 시작하기
AWS IoT HackDay Seoul
여러분의 피드백을 기다립니다!
• AWSKRUG: http://awskr.org • AWS 공식 블로그: http://aws.amazon.com/ko/blogs/korea • AWS 공식 소셜 미디어
@AWSKorea
AmazonWebServices
AWSKorea
AWSKorea