관리 메뉴

HAMA 블로그

사물인터넷을 위한 빅데이터 처리를 위한 AWS ( IoT / 키네시스 / 람다 ) 본문

아마존 AWS & 클라우드

사물인터넷을 위한 빅데이터 처리를 위한 AWS ( IoT / 키네시스 / 람다 )

[하마] 이승현 (wowlsh93@gmail.com) 2016. 9. 2. 11:28

사물인터넷을 위한 빅데이터 처리를 위한 AWS 살펴보기


다양한 기기로 부터 거대하게 생산되는 스몰데이터들을 빠르고 정확하게 처리하기 위한
AWS 의 솔루션을 살펴보면 IoT / 키네시스 / 람다가 발견된다. 과연 이들이 무엇이고 어떻게 다른지 살펴본다.
아직 본인도 개념이 많이 부족하기때문에 차츰 차츰 보완해나갈 예정이다.

먼저 다음 그림을 보고 대략 느낌을 받아보자~ (다양한 시나리오를 살펴보자)

AWS IOT ->  AWS 키네시스 -> Lamda 로 보내진다.


1. AWS IOT에서 데이터를 수집후 (룰엔진을 거칠수도 있고 안거칠수도 있고)
2-1. 데이터 그대로 S3 에 저장 또는 
2-2.키네시스로 보내져서 분석한후에 스토리지에 저장. 

1. AWS IOT에서 데이터를 수집후 (룰엔진을 거칠수도 있고 안거칠수도 있고)
2. 키네시스에서 분석
3. S3 에 저장
4. 람다서비스를 통하여 다양한 DB 에 저장 


1. AWS IOT에서 데이터를 수집후 (룰엔진을 거칠수도 있고 안거칠수도 있고)
2. S3 , DynamoDB, 키네시스등을 거쳐서
3. 사용자 서비스



overview 

1. 엣지디바이스로 부터 오는 데이터를 인증서비스에서 거르고 디바이스게이트웨이로 받는다.
2-1. 게이트웨이에서 데이터는 룰엔진에게 전달되어 데이터를 간략하게 룰대로 분석하여 반응한다.
2-2. 메세지 그대로 클라이언트에게 보여준다. 

방식

클라이언트AWS IoT 에서 제공되는 클라이언트 라이브러리 (C, Python 등)를 이용하여 우리측 GW 에서 MQTT 등 프로토콜을 가지고 AWS IoT 와 연결하고, 인증하고, 메세지를 보내준다. => SDK 받기

AWS IoT 디바이스 게이트웨이 :  게시/구독모델을 사용하여 디바이스와 메세지를 교환 합니다. 디바이스 게이트웨이는 인프라 프로비저닝 없이 수십억 개의 디바이스를 지원하도록 자동으로 확장합니다.
프로비저닝(provisioning) : 사용자의 요구에 맞게 시스템 자원을 할당, 배치, 배포해 두었다가 필요 시 시스템을 즉시 사용할 수 있는 상태로 미리 준비해 두는 것을 말한다.

AWS IoT 인증/권한 : 디바이스와 AWS IoT 간에 입증된 자격 증명 없이는 데이터가 교환되지 않습니다.
AWS 의 인증방법 (SigV4) 뿐 아니라 X.509 인즈서 기반 인증을 지원합니다. MQTT를 사용하여 연결하면 인증 기반 인증서를 사용할 수 있으며,  AWS IoT 에서 생성한 인증서 뿐 아니라 선호하는 인증 기관 (CA) 에서 서명한 인증서도 사용 할 수 있습니다. 이런 디바이스 인증서는 AWS IAM 를 사용해 구성된 관련 정책으로 프로비저닝 및 활성화 하고 해당 정책과 연결 할 수 있습니다.
앱 사용자에 대한 고유 식별자를 생성하고 제한적인 임시 AWS 자격 증명을 가져오는 데 필요한 모든 단계를 처리하는 Amazon Cognito 를 사용하여 사용자의 모바일 앱으로부터의 연결도 지원. 

AWS IoT 레지스트리 : 디바이스에 대한 자격 증명을 설정하고 디바이스의 속성 및 기능 같은 메타데이터를 추적합니다. 예를 들어 센서가 온도를 보고하는지 그리고 데이터가 화씨인지 섭씨인지와 같은 디바이스의 기능을 설명하는 메타데이터를 지원합니다. 

AWS IoT 디바이스 쉐도우: 디바이스의 최신 상태가 포함된 각 디바이스의 영구,가상 버전 또는 "섀도" 를 생성하여 애플리케이션이나 다른 디바이스가 메세지를 읽고 해당 디바이스와 상호 작용 할 수 있습니다.

AWS IoT 룰 엔진: 인프라를 관리할 필요 없이 글로벌 규모로 연결된 디바이스에서 생성된 데이터를 수집,처리,분석하고 이를 기반으로 조치를 취할 수 있습니다. 규칙 엔진은 AWS IoT 에 게시된 수신 메세지를 평가하고 정의한 비지니스 규칙에 따라 다른 디바이스나 클라우드 서비스로 이를 변환 및 전송합니다. 
규칙엔진은 AWS Lamda, Kinesis, S3, ML , DynamoDB, CloudWatch, Elasticsearch 같은 AWS 엔드포인트로 메세지를 라우팅 할 수 있습니다.  또한 규칙은 AWS Lambda 에서 Java, Node.js 또는 Python 코드가 실행되도록 트리거 할 수 있습니다.

전기충전데이터 <-> 게이트웨어 <--> AWS 게이트웨이 <--> 룰엔진 <--> 람다,키네시스 
<--> RDB,NoSQL,웹서버 <--> 클라이언트


충전인증요청처리 :  키네시스? 람다? 웹서버?  요청받으면 확인해서 DB 상태변경하고 
                          ㅇㅋ 콜 기기로 보내고..클라Noti

하트비트처리 (5분) : 키네시스? 람다? 웹서버?   DB 에 기기 상태 체크.

미터량 (15분 혹은 사용자가 요청하면 즉시) : 키네시스? 람다? 웹서버?   DB 상태변경하고 클라에 Noti

착,탈착 이벤트 :  키네시스? 람다? 웹서버?   DB 상태변경

즉 클라에게 즉시 노티가 필요하면 웹서버에서 처리, 아니면 상위 레이어(키네시스,람다)에서 처리.


* 롤엔진은 그냥 AWS 서비스로 라우팅만 해주는것은 어떨까?

우리 GW 는 MPC-1 역할
AWS GW 는 MMARS 역할
AWS IoT 룰엔진은 TRAMS 역할 
AWS Lamda 는 TRAMS 역할 
AWS EC2 (BeansTalk) 는 TRAMSDriver, W-MOS 역할  
패턴분석을 룰엔진/키네시스/람다중 어디에서 할지 고민. 아마도 키네시스에서 해야하지 않을까..

* 사용자가 앱에서 직접 콜하는건 미터 사용량 즉시 알기위한 이벤트밖에 없다. 
* 사용자가 받는 정보는 충전상태정보. 


AWS 키네시스

키네시스는 클라우드에서 장착해 아마존의 클라우드 내 데이터베이스, 레드시프트(Redshift)같은 웨어하우스, NoSQL 데이터베이스인 다이나모DB 또는 관계형 데이터베이스 등 다양한 소스에서 데이터를 받을 수 있는 애플리케이션이다. 이 툴은 데이터를 분석하고 데이터를 원 상태로 되돌려 놓는다. AWS는 자사 하드웨어와 소프트웨어를 결합해 사용하면서 이 툴을 개발했다. 시스템 도 확장성이 우수하며 수 천 개의 소스에서 가져온 데이터를 한 시간에 수 테라바이트까지 처리할 수 있다.


AWS 키네시스 Firehose http://www.itworld.co.kr/news/95914

AWS의 새로운 키네시스 파이어호스(Kinesis Firehose) 서비스는 기업이 모든 종류의 디바이스로부터 데이터 스트림을 모을 수 있도록 하는 데 중점을 두고 있다. 이 서비스는 사물 인터넷의 일부인 임베디드 디바이스를 포함해 다양한 스트리밍 데이터 소스를 AWS의 스토리지와 연결해 준다.기업은 단일 PUT API 호출을 사용해 디바이스의 전체 데이터 스트림을 가져와 AWS의 레드시프트 데이터베이스 서비스나 S3로 보낼 수 있다. 일단 데이터가 파이어호스에 도달하면, AWS는 이들 데이터를 즉각 선택된 스토리지나 서비스로 전송한다.
아마존은 기존에도 키네시스 스트림(Kinesis Streams) 서비스를 통해 비슷한 기능을 제공하고 있지만, 실제로 IoT 디바이스와 애플리케이션을 서비스에 연결하기 위해서는 기업이 맞춤형 애플리케이션을 구축해야 한다. 하지만 이 과정에 상당한 시간이 걸리는 것이 문제인데, 새로운 키네시스 파이어호스는 이런 시간이 없거나 핵심 프로젝트에 집중하고자 하는 기업에 유용할 것으로 기대된다. 또한 AWS가 마이크로소프트 애저의 IoT 스위트와 경쟁하는 데도 일조할 것으로 보인다. 
잉?? AWS IoT 랑 뭔차이?  룰엔진없는거?  이놈도 디바이스를 직접 통신하네? 

AWS IoT 가 있는데 AWS Kinesis Firehose 는 왜 만든건가요? 
(AWS IoT + 기타등등) + AWS Kinesis = AWS Kinesis Firehose -.-a

서비스가 사물과의 통신이면 AWS IoT 만 쓰던지, AWS IoT + AWS Kinesis 를 쓰던지하고 , IoT 가 아니라면 GW 역활 + AWS kinesis 를 합쳐서 AWS firehose 를 써라. 라고 이해하고 있습니다. 맞는지요?

근데 AWS Kinesis firehose 가 AWS IoT 를 대체할 수도 있는지요? 만약 그렇다면 AWS IoT 를 사용했을때와 달라지는점은 무엇일까요?


질문을 던져봅니다.

AWS 람다  http://www.bloter.net/archives/221869 (블로터 참고) 

특정 이벤트가 발생했을 때만 함수가 작동된다. AWS가 람다를 ‘이벤트 기반 컴퓨팅 서비스(An event-driven computing service for dynamic applications)’라고 표현하는 것도 이 때문이다. 현재 람다는 ‘S3’ 버킷 알림, ‘다이나모DB’ 스트림이나 ‘키니시스’ 스트림 이벤트, 커스텀 이벤트에서 얻은 정보로 함수를 실행시킨다.

좀 더 자세히 살펴보자. 블로그 사진 썸네일을 만드는 함수가 있다고 치자. 사용자는 썸네일을 생성하는 애플리케이션을 만들 수 있다. 이 애플리케이션은 블로그에 있는 사진을 읽고 크기를 조절하고 웹 저장소에 올리는 기능을 수행한다. 작은 기능이지만 애플리케이션을 실행하려면 운영체제, 미들웨어, 네트워크 등 인프라가 필요하다.

람다를 이용하면 다르다. 코드만 있으면 된다. 해당 함수를 실행시키기 위한 인프라 자원은 걱정할 필요 없다. 보안도 알아서 관리해준다. 해당 함수가 잘 작동되는지 분석 그래프를 볼 수도 있다. 마쿠 레피스토 에반젤리스트는 “서버 없이도 원하는 서비스를 만들 수 있다”라고 설명했다.

AWS 람다 실습해보기 블로그 가기

Comments