IoT 관련 고찰 ( 보안 및 데이터 전송, 처리 및 저장 )

2020. 2. 3. 22:36카테고리 없음

IoT 보안(데이터) 및 전송 이슈

데이터 전송 중 기기/앱 등의 오류로 인하여 전송이 중단되면

측정 혹은 전송 중이던 데이터는 어떻게 되는가( 처리해야 하는가 ) ?

 

1. 전송의 완전한 성공 혹은 완전한 실패

2. 전송중 데이터 암호화

3. 데이터의 소유권?

4. ... 진행중

 

트랜잭션( Transaction )이란??

데이터베이스의 상태를 변화시키는 하나의 논리적 기능을 수행하는

하나 혹은 일련의 작업(연산) 단위

 

--> 데이터 스트림 전송 중 에러발생 --> 트랜잭션 rollback으로 작업이 수행되기 전 상태로 돌아감.

 

참고자료 링크 :
https://coding-factory.tistory.com/226

https://docs.microsoft.com/ko-kr/azure/architecture/data-guide/relational-data/online-transaction-processing

 

특징 : ( 간단한 표현 )

  • 하나의 트랜잭션은 commit 혹은 rollback 둘 중 하나가 된다.
    ( 0 또는 1, 성공 혹은 실패 정도로 표현할 수 있다. )
    데이터의 전송에 있어서 완전한 성공 혹은 완전한 실패 뿐이다.|

IoT 의 센싱된 Data의 저장 : RDBMS vs NoSQL ?? 

( IoT는 기본적으로 시계열 데이터 )

 

NoSQL 참고자료 링크 : https://www.samsungsds.com/global/ko/support/insights/1195843_2284.html

IoT 참고자료 링크 : https://blog.timescale.com/blog/use-relational-database-instead-of-nosql-for-iot-application/

 

db에 따른 관리 효율?

기준은?

시간당 몇건의 데이터를 입력받는지?

실시간 처리? ( 실시간 화면에 뿌려줌 )

통계

 

IoT는 기본적으로 방대한 양의 데이터를 다룬다.

RDBMS는 성숙하고, 유연하고 다루기 쉽다. but 데이터의 규모가 문제가 된다.

-> but 이미 대중적이며, 여러 함수 등의 편의 기능이 많이 구현되어있다.

스키마 설계는 상당히 유용하지만 잘못된 설계는 성능저하의 원인이 됨.

 

 

 

RDBMS는 분산처리가 어렵다.

데이터의 사이즈가 커지면 필요 데이터를 찾는데 시간이 오래 걸린다.

몽고db, 하둡기반 -> 분산처리에 강하다. ( 맵리듀스 기능? )

 

RDBMS는 데이터를 쓰는 횟수보다 읽는 횟수가 많을 때 효율적이다.

 

** 데이터 모델의 종류들

: relational, key/value, document, graph, time-series, etc...

 

RDBMS의 주요 특성 :

ACID( Atomic, Consistency, Integrity, Duarabity ), ... => 트랜잭션 처리의 신뢰성

 

원자성 :

트랜잭션의 연산은 데이터베이스에 모두 반영되든지 아니면 전혀 반영되지 않아야 함

 

일관성 :

트랜잭션이 그 실행을 성공적으로 완료하면 언제나 일관성 있는 데이터베이스 상태로 변환함.

 

독립성 :

둘 이상의 트랜잭션이 동시에 병행 실행되는 경우 어느 하나의 트랜잭션 실행중에

다른 트랜잭션의 연산이 끼어들 수 없다.

 

지속성 :

성공적으로 완료된 트랜잭션의 결과는 시스템이 고장나더라도 영구적으로 반영되어야 한다.

 

 

NoSQL의 주요 특성 :
뛰어난 확장성, 분산DB, 비관계형(비정형), 등등...

 

NoSQL 사용의 목적 : 

초고용량 데이터 처리 등 성능 특화 목적,

비관계형 데이터, 비구조적 데이터 저장하기위한 분산 저장 시스템

 

-> 인터넷의 활성화 -> 다양한 서비스의 등장 -> 비정형데이터의 활성화

 

융통성(보다 자유로운) 데이터 모델,

데이터의 저장 및 검색에 특화 ( 응답속도, 처리효율 증가 )

 

IoT ==> PostgreSQL , TimescaleDB ?

 

 

** 클라우드 및 도커관련 개념잡기 영상 (NomadCoder Youtube)
: https://www.youtube.com/watch?v=chnCcGCTyBg

IoT의 클라우드 환경

IoT 클라우드 서비스 관련 참고링크 :

https://www.ncloud.com/solution/iot

 

IoT는 실시간으로 수집되는 모든 디바이스로부터의 대규모의 데이터를 처리함에도 불구하고 언제나 안정적인 서비스를 제공할 수 있어야 함.

클라우드 컴퓨팅 환경은 이러한 디바이스와의 연결을 위한 안정적인 네트워크 환경을 제공하며, IoT서비스를 구현하고 운영할 수 있는 다수의 서버그룹까지오토스켈링과 로드밸런서등을 통해서 수분내 구현 및 운영할 수 있음.
디바이스로부터 발생하는 빅데이터를 저장할 수 있는 다양한 저장소를 제공하여 데이터를 안전하게 저장하고 실시간으로 분석 가능함.

 

왜 클라우드 서비스를 이용하는가?

1. 하드웨어, 소프트웨어 유지보수 측면

2. 사업( 솔루션 모델 )의 확장, 다양성 -> 클라우드 서비스의 뛰어난 확장성

윈도우/리눅스/안드로이드 등에 대한 환경 제공 및 관리

3. 협업 - 개발 혹은 권한 부여 등 

4. 보안성 - 클라우드 서비스에서 제공하는 보안기술, 서비스 / 중요 데이터 복제 경우의 수 방지

 

Docker

도커 개념설명 참고자료 링크 :

http://dev.youngkyu.kr/32 [조영규의 블로그], 

https://subicura.com/2017/01/19/docker-guide-for-beginners-1.html

 

***도커란 : 오픈소스 컨테이너 프로젝트

'환경 격차( environment disparity )를 해소해 줌.

-> 도커 : 다른 머신(ex-윈도우/리눅스)에서 같은 환경을 구현할수 있게 해줌.

 

각 docker 파일에 구현환경을 설정하여 서버와 컴퓨터 양쪽에 건네주면

도커는 해당 설정환경과 같은 가상의 컨테이너를 생성함.

 

-> 각 컨테이너는 서로 분리, 독립적

-> 하나의 서버에서 여러개의 다양한 컨테이너/환경(node/java/python/...)을 활용할 수 있음

-> 새로운 서비스를 만들때마다 새로운 서버를 구입하고 설정할 필요가 없어짐

 

==> 정리

1. 원하는 개발환경을 도커파일에 세팅하면, 어떤 머신에서든 해당 환경을 시뮬레이션 가능

2. 각기 독립적이기 때문에 원하는 어떤 환경이든 모듈식으로 관리 가능

    ( ex - python 서버, java 서버, db 서버 등 따로 구입할 필요 x )

 

* 클라우드 컴퓨팅이란?

인터넷(클라우드)을 통해 서버, 스토리지, 데이터베이스, 네트워킹, 소프트웨어, 분석, 인텔리전스 등의 컴퓨팅 서비스를 제공하는 것.

-> 더 빠른 혁신과 유연한 리소스를 제공하고 대규모 경영의 이익 효과

 

도커 탄생 배경 :

서버시장이 클라우드 환경으로 옮겨가게 되면서 우리는 가상서버를 손쉽게 수백대를 구매하여 바로 사용할 수 있게 되었다. 그런데, 서버 갯수가 많아지면서 각각의 서버에 소프트웨어 설치와 설정이 큰 귀찮음으로 다가오게 됐다. 몇개 안됐다면 직접 할텐데 갯수가 엄청나니 이것을 처리할 무언가가 필요했다

 

-> Immutable Infrastructure 개념 도입

 

-> 서버에 깔린 OS(호스트 OS)와 서비스 운영을 위한 환경(서버 운영을 위해 필요한 프로그램들; node js, mysql, java등)을 분리해 서비스 운영환경을 패키징 해 배포 ==> 도커

 

-> 클라우드 플랫폼에 이것을 적용하면 자동 확장이 가능해짐.

 

-> 서비스 확장이 매우 쉬워짐.

 

출처: http://dev.youngkyu.kr/32 [조영규의 블로그]

 

Data Silo (데이터 사일로) 란?

 

데이터 사일로를 단일 부서의 관할 하에 있어 나머지 구성원이 고립되는 결과를 불러오는 고정 데이터 보관소 또는 저장소로 정의한다.

이러한 현상은 조직의 생산성을 저해하고 데이터 완전성에도 부정적인 영향을 미친다.
간단히 말해, 데이터 사일로는 효율적인 조직 및 사업 운영을 방해하는 요소다.