63
© 2016, Amazon Web Services, Inc. or its Affiliates. All rights reserved.

서버리스 IoT 백엔드 개발 및 구현 사례 : 윤석찬 (AWS 테크에반젤리스트)

Embed Size (px)

Citation preview

Page 1: 서버리스 IoT 백엔드 개발 및 구현 사례 : 윤석찬 (AWS 테크에반젤리스트)

© 2016, Amazon Web Services, Inc. or its Affiliates. All rights reserved.

Page 2: 서버리스 IoT 백엔드 개발 및 구현 사례 : 윤석찬 (AWS 테크에반젤리스트)

••

••

••

Page 3: 서버리스 IoT 백엔드 개발 및 구현 사례 : 윤석찬 (AWS 테크에반젤리스트)
Page 4: 서버리스 IoT 백엔드 개발 및 구현 사례 : 윤석찬 (AWS 테크에반젤리스트)
Page 5: 서버리스 IoT 백엔드 개발 및 구현 사례 : 윤석찬 (AWS 테크에반젤리스트)

Unlimited Storage – Memory

Unlimited Compute – Logic

Cloud offers

Page 6: 서버리스 IoT 백엔드 개발 및 구현 사례 : 윤석찬 (AWS 테크에반젤리스트)
Page 7: 서버리스 IoT 백엔드 개발 및 구현 사례 : 윤석찬 (AWS 테크에반젤리스트)
Page 8: 서버리스 IoT 백엔드 개발 및 구현 사례 : 윤석찬 (AWS 테크에반젤리스트)

Dr. Werner Vogels, Amazon.com CTOre:Invent 2015 Keynote

Page 9: 서버리스 IoT 백엔드 개발 및 구현 사례 : 윤석찬 (AWS 테크에반젤리스트)

COMPUTE SERVICE

EVENT-DRIVEN

Page 10: 서버리스 IoT 백엔드 개발 및 구현 사례 : 윤석찬 (AWS 테크에반젤리스트)
Page 11: 서버리스 IoT 백엔드 개발 및 구현 사례 : 윤석찬 (AWS 테크에반젤리스트)

AWSLambda

Application-tier at Scale

Page 12: 서버리스 IoT 백엔드 개발 및 구현 사례 : 윤석찬 (AWS 테크에반젤리스트)
Page 13: 서버리스 IoT 백엔드 개발 및 구현 사례 : 윤석찬 (AWS 테크에반젤리스트)
Page 14: 서버리스 IoT 백엔드 개발 및 구현 사례 : 윤석찬 (AWS 테크에반젤리스트)
Page 15: 서버리스 IoT 백엔드 개발 및 구현 사례 : 윤석찬 (AWS 테크에반젤리스트)
Page 16: 서버리스 IoT 백엔드 개발 및 구현 사례 : 윤석찬 (AWS 테크에반젤리스트)
Page 17: 서버리스 IoT 백엔드 개발 및 구현 사례 : 윤석찬 (AWS 테크에반젤리스트)
Page 18: 서버리스 IoT 백엔드 개발 및 구현 사례 : 윤석찬 (AWS 테크에반젤리스트)
Page 19: 서버리스 IoT 백엔드 개발 및 구현 사례 : 윤석찬 (AWS 테크에반젤리스트)
Page 20: 서버리스 IoT 백엔드 개발 및 구현 사례 : 윤석찬 (AWS 테크에반젤리스트)
Page 21: 서버리스 IoT 백엔드 개발 및 구현 사례 : 윤석찬 (AWS 테크에반젤리스트)
Page 22: 서버리스 IoT 백엔드 개발 및 구현 사례 : 윤석찬 (AWS 테크에반젤리스트)
Page 23: 서버리스 IoT 백엔드 개발 및 구현 사례 : 윤석찬 (AWS 테크에반젤리스트)

디바이스 SDK클라이언트 인증 및 연결,

메시지 교환을 위한개발도구

디바이스 게이트웨이MQTT 및 HTTP 기반

디바이스 통신

보안 및 인증고급 인증 및 암호화를

통한 보안 제공

RULES ENGINE장치메시지를 규칙에 따라AWS 서비스와 연계 동작

AWS 서비스- - - - -

서드파티 서비스

DEVICE SHADOW네트웍 단절에도 응답하는

가상 장치

애플리케이션

AWS IoT API

디바이스 레지스트리IoT 장치 등록 및 관리

Page 24: 서버리스 IoT 백엔드 개발 및 구현 사례 : 윤석찬 (AWS 테크에반젤리스트)

SubscribersPublishers

Page 25: 서버리스 IoT 백엔드 개발 및 구현 사례 : 윤석찬 (AWS 테크에반젤리스트)

Page 26: 서버리스 IoT 백엔드 개발 및 구현 사례 : 윤석찬 (AWS 테크에반젤리스트)

•o

o

o

{"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/*"]}]}

Page 27: 서버리스 IoT 백엔드 개발 및 구현 사례 : 윤석찬 (AWS 테크에반젤리스트)
Page 28: 서버리스 IoT 백엔드 개발 및 구현 사례 : 윤석찬 (AWS 테크에반젤리스트)

•ü

ü

•ü

ü

ü

ü

SELECT * FROM ‘things/thing-2/color’ WHERE color = ‘red’

Page 29: 서버리스 IoT 백엔드 개발 및 구현 사례 : 윤석찬 (AWS 테크에반젤리스트)

{

"SELECT *, clientId() as MQTTClientId FROM 'room/ac/+' WHERE temperature > 30","actions": [{

”sns": {"roleArn": "arn:aws:iam::123456789012:role/SNSPutRole","topicArn": "arn:aws:sns:us-

east-1:123456789012:TempWarningNotification"}

]}

Page 30: 서버리스 IoT 백엔드 개발 및 구현 사례 : 윤석찬 (AWS 테크에반젤리스트)

AWS Lambda 함수 실행

S3 버킷에 객체 저장

DynamoDB 테이블에 데이터추가/변경

SNS 토픽으로 푸시 메시지

Amazon Kinesis 실시간 스트림

동작 실행

Amazon Kinesis Firehose 전달

AWS IoT에 전달

Page 31: 서버리스 IoT 백엔드 개발 및 구현 사례 : 윤석찬 (AWS 테크에반젤리스트)

••••

Page 32: 서버리스 IoT 백엔드 개발 및 구현 사례 : 윤석찬 (AWS 테크에반젤리스트)

{"state" : {

“desired" : {"lights": { "color": "RED" },"engine" : "ON"

},"reported" : {

"lights" : { "color": "GREEN" },"engine" : "ON"

},"delta" : {

"lights" : { "color": "RED" }}

},"version" : 10}

Thing

Mobile App

Shadow

••

•••

Page 33: 서버리스 IoT 백엔드 개발 및 구현 사례 : 윤석찬 (AWS 테크에반젤리스트)

desired: {“status”: “RUNNING”

}

shadow/update update/accepted

Republish vacuum/shadow/update

vacuum/update/delta

reported: {“AmbientLightValue”: 55

}

Rules Engine

Shadow

ShadowSelect * from $/update/accepted where AmbientLightValue <100

Page 34: 서버리스 IoT 백엔드 개발 및 구현 사례 : 윤석찬 (AWS 테크에반젤리스트)

C-SDK(Ideal for embedded

OS)

JS-SDK (Ideal for Embedded

Linux Platforms)

Arduino Library

(Arduino Yun)

Mobile SDK(Android and iOS)

Page 35: 서버리스 IoT 백엔드 개발 및 구현 사례 : 윤석찬 (AWS 테크에반젤리스트)

üü

AWS IoT

Page 36: 서버리스 IoT 백엔드 개발 및 구현 사례 : 윤석찬 (AWS 테크에반젤리스트)

DynamoDB 테이블: 전체 센서 데이터 받는 경우

데이터 확인: 모든 센서 데이터를 다 받는 경우

Page 37: 서버리스 IoT 백엔드 개발 및 구현 사례 : 윤석찬 (AWS 테크에반젤리스트)
Page 38: 서버리스 IoT 백엔드 개발 및 구현 사례 : 윤석찬 (AWS 테크에반젤리스트)

AWS IoT

Amazon CloudWatch

AWSCloudFormation

AmazonDynamoDB

Amazon ElastiCache

AmazonAurora

IoTshadow

Amazon API GatewayAWS Lambda

AmazonS3

Amazon Kinesis

AmazonSQS

Amazon SNS

AmazonQuicksight

Amazon ElasticSearch

AmazonMachineLearning

Amazon Redshift

Page 39: 서버리스 IoT 백엔드 개발 및 구현 사례 : 윤석찬 (AWS 테크에반젤리스트)
Page 40: 서버리스 IoT 백엔드 개발 및 구현 사례 : 윤석찬 (AWS 테크에반젤리스트)
Page 41: 서버리스 IoT 백엔드 개발 및 구현 사례 : 윤석찬 (AWS 테크에반젤리스트)
Page 42: 서버리스 IoT 백엔드 개발 및 구현 사례 : 윤석찬 (AWS 테크에반젤리스트)

Mobile

Beacon

Amazon echo

Window sensorPower Plug

Switch

Bulb

Doorlock

Gateway

Boiler

Siren

Camera

Page 43: 서버리스 IoT 백엔드 개발 및 구현 사례 : 윤석찬 (AWS 테크에반젤리스트)

Mobile

Beacon

API Gateway Lambda

AWS IoT

RDS SNS

S3DynamoDB

Certification Policy Shadow Rule Engine

Alexa Skills Kit – KOLON Home Service

Amazon echo

Page 44: 서버리스 IoT 백엔드 개발 및 구현 사례 : 윤석찬 (AWS 테크에반젤리스트)

Users

Skill Information

publishingAmazon Alexa Skill : Home IoT In Mode

Alexa Skill Kit

Model-intent-utterance

PublishingLambda ARN

TEST Skill

// DEVELOPER CONSOLE

Lambda RDS

Device Gateway

Device Shadow

AWS IoT

Amazon echo

Page 45: 서버리스 IoT 백엔드 개발 및 구현 사례 : 윤석찬 (AWS 테크에반젤리스트)

Users

Lambda RDS

Device Gateway

DeviceShadow

AWS IoT

Beacon

SELECT * FROM '$aws/things/p100002201/shadow/update/accepted' WHERE state.reported.detail.beacon_loc > 10

Rule Engine Query

RuleEngine

Page 46: 서버리스 IoT 백엔드 개발 및 구현 사례 : 윤석찬 (AWS 테크에반젤리스트)

Users

Lambda

RDS

SNS

S3

DynamoDB

Device Gateway

Device Shadow

AWS IoT

Mobile

API Gateway

PUT : ThingCtrlPUT : SecurityModePOST : SecurityMode ClearPUT : OutModePUT : Inmode

Restful API

RuleEngine

Door Sensor

Page 47: 서버리스 IoT 백엔드 개발 및 구현 사례 : 윤석찬 (AWS 테크에반젤리스트)
Page 48: 서버리스 IoT 백엔드 개발 및 구현 사례 : 윤석찬 (AWS 테크에반젤리스트)
Page 49: 서버리스 IoT 백엔드 개발 및 구현 사례 : 윤석찬 (AWS 테크에반젤리스트)
Page 50: 서버리스 IoT 백엔드 개발 및 구현 사례 : 윤석찬 (AWS 테크에반젤리스트)

def foo(input):quux = bar(input.baz)internalState.quux = quuxmysql_insert(quux)

def bar(input):# do workreturn result

Foo Bar

••

Page 51: 서버리스 IoT 백엔드 개발 및 구현 사례 : 윤석찬 (AWS 테크에반젤리스트)

def handler(event, context):quux = Lambda.Invoke(

'bar', event['baz'])DynamoDB.PutItem(

'quux', quux)

def handler(event, context):# do workreturn result

Foo Bar

••

Page 52: 서버리스 IoT 백엔드 개발 및 구현 사례 : 윤석찬 (AWS 테크에반젤리스트)

Monolithic/layered Microservices

Page 53: 서버리스 IoT 백엔드 개발 및 구현 사례 : 윤석찬 (AWS 테크에반젤리스트)

••

Page 54: 서버리스 IoT 백엔드 개발 및 구현 사례 : 윤석찬 (AWS 테크에반젤리스트)

App requestsover HTTPS

CRUDoperations

MQTT

CRUDoperations

MQTT

Page 55: 서버리스 IoT 백엔드 개발 및 구현 사례 : 윤석찬 (AWS 테크에반젤리스트)

CloudWatch eventevery 5 minutes

Lambda runsfor 5 minutes

Amazon SQS queue

Page 56: 서버리스 IoT 백엔드 개발 및 구현 사례 : 윤석찬 (AWS 테크에반젤리스트)

/register Checkcert

Robots toregister Queue

readerRegister

robot

Logging Lifecycle event

PermissionsCreate shadowDead letter queue

Page 57: 서버리스 IoT 백엔드 개발 및 구현 사례 : 윤석찬 (AWS 테크에반젤리스트)

Robotcertificate+ signed timestamp

CA certificate

UnauthenticatedHTTPS

Robotcertificate

AuthenticatedMQTT

Page 58: 서버리스 IoT 백엔드 개발 및 구현 사례 : 윤석찬 (AWS 테크에반젤리스트)

Request topicPresigned URL

Symmetricencryption key

Robotpublic key

Response topic

Presigned URL

Object encrypted withsymmetric key

HTTPS callto presigned URL

S3

KMS

Robotcertificate

S3bucket

+symmetric keyencrypted withrobot public key

Page 59: 서버리스 IoT 백엔드 개발 및 구현 사례 : 윤석찬 (AWS 테크에반젤리스트)
Page 60: 서버리스 IoT 백엔드 개발 및 구현 사례 : 윤석찬 (AWS 테크에반젤리스트)

Fleet of Sensors

OperatorAmazon SNS

AWSLambda

AWSIoT

AWSGreengrass

Core

•••••

AmazonDynamoDB

AWSLambda

AmazonRedshift

Page 61: 서버리스 IoT 백엔드 개발 및 구현 사례 : 윤석찬 (AWS 테크에반젤리스트)
Page 62: 서버리스 IoT 백엔드 개발 및 구현 사례 : 윤석찬 (AWS 테크에반젤리스트)

https://aws.amazon.com/ko/serverless/ https://aws.amazon.com/ko/iot/

Page 63: 서버리스 IoT 백엔드 개발 및 구현 사례 : 윤석찬 (AWS 테크에반젤리스트)

http://bit.ly/awskr-feedback