Node.js로 만들어나가는 IoT세상 Node.js는 왜 주목을 받는가 Korea University of Technology and Education UoC Laboratory Raejin Jeong
1.1 Concept of IoT “주변의 모든 사물이 인터넷으로 연결되어 서로 통신하면서 사용자들에게 유익한 서비스를 제공”
1.1 Concept of IoT IoT 시대의 도래 – “평범한 물건들이 IoT와 접목되어 새로운 가치를 창출” 무선네트워크 기술의 발달, 센서 및 컴퓨팅의 소형화 등으로 인한 스마트 기기의 출현
1.2 Definition of IoT 케빈 애쉬튼(Kevin Ashton) “Internet of Things / 사물인터넷”을 처음으로 제시 <That ‘Internet of Things’ Things> - “대부분의 정보는 사람에 기인하지만 사람은 정보를 생성하고 처리하는 것에 적합하지 않다. 따라서 사람의 개입 없이 정보를 수집하고 재가공하는 시스템이 IoT이다.” 기타 몇 가지 정의 모든 사물에게 까지 연결을 제공하는 네트워크의 네트워크. (ITU, 2005) 대상물들(objects) 간의 통신이 가능한 네트워크와 서비스. (EU policy Outlook RFID, 2007) 데이터 수집과 통신능력을 이용해 물리적, 가상적 대상들을 연결하는 글로벌 네트워크 인프라. (CASAGRAS Final Report, 2009) 표준통신 프로토콜 기반이면서 독자적인 자체 주소로 상호 연결된 물건들의 세계적인 네트워크. (EU IoT in 2020, 2008)
칼로리 체크를 해주는 스마트 컵 - Vessyl 1.3 Factor of IoT 사물 : Sensing 및 데이터 전송 능력을 가진 사물. 칼로리 체크를 해주는 스마트 컵 - Vessyl 네트워크 서비스 사물 네트워크 : 사물간의 연결. - Blutooth LE(Low Energy)가 각광받음 서비스 : 수집된 정보를 분석하여 어떤 판단을 내림.
1.3 Factor of IoT 네트워크를 이용하여 사람과 사물, 사물과 사물간의 지능 통신을 할 수 있는 M2M(Machine to Machine)의 개념 현실과 가상세계의 모든 정보와 상호작용 인간 서비스 사물 공간
1.4 Element Technology of IoT 센싱 및 액츄레이터 기술 센서를 통해 외부의 상황을 인지(Context-Awareness), 액츄레이터를 통해 사용자와 상호작용 온도/습도/열/가스/초음파 센서와 더불어 레이더, GPS, 모션, 영상 등 주변 환경에서 얻는 정보를 포함
1.4 Element Technology of IoT 유무선 네트워크 인프라를 통한 데이터 처리 기술 WiFi, 3G/4G/LTE, Bluetooth 등을 통해 인간과 사물, 서비스를 연결 시킬 수 있는 네트워크를 통해 데이터를 수집 센서를 통해 얻은 내용으로 부터 특정 정보를 추출하는 빅 데이터 분석을 통해 지능적이고 고차원적인 정보를 추출 지능화된 기능 서비스 제공을 위한 데이터 저장, 처리, 변환 등의 역할 수행 외부에서의 정보를 분석하여 자체적으로 판단을 내리는 기능
1.5 Structure of IoT 디바이스 - 서버와의 연결방식 디바이스 - 서버와의 연결방식 직접 서버 연결 : 디바이스에 직접 연결하여 접속할 네트워크 설정 스마트 폰을 통한 간접 연결 : 직접 방식보다 간단하지만 디바이스를 인터넷으로 제어 불가 전용 게이트웨이를 통한 연결 : 디바이스들을 연결하는 AP를 구성
1.5 Structure of IoT 서버 – 데이터 처리 어플리케이션 – 서버의 데이터 활용 수많은 디바이스로 부터 전송된 작은 데이터 처리 연결된 디바이스의 효과적인 연결 및 관리 (인증, 적합성 검사 등) 오픈 소스 IoT 플랫폼 Xively (xively.com) 어플리케이션 – 서버의 데이터 활용 RESTful방식을 통한 오픈 API 활용 (ex : 다음 개발자 네트워크)
2.1 Node.js 라이언 달(Ryan Dahl) Node.js Creator / Software Engineer at Joyent 크롬 웹 브라우저의 자바스크립트 엔진인 V8을 이용해 이벤트 기반의 TCP라이브러리와 HTTP서버를 만드는 아이디어 제시 “자바스크립트로 네트워크 애플리케이션을 작성 할 수 있는 플랫폼” “서버사이드 자바스크립트”
2.1 IoT & Node.js 개발 관점에서 본 Node.js의 특징 NPM 모듈을 통한 기능 확장 (Node Package Manager) 모듈을 통한 기능 확장 Npmjs.org 에 등록된 모듈 약 10만개 다수의 개발자를 통한 검증, 높은 생산성
2.1 IoT & Node.js 개발 관점에서 본 Node.js의 특징 고급자료 구조 비동기I/O 성능실험 문자열, 객체, 해시, 배열 등의 고급 자료구조 제공 가비지 셀렉션 제공 중요 이벤트가 발생할 때 시스템이 호출 함수를 정의 하는 방식 이벤트 루프를 통해 이벤트 감지와 이벤트 핸들러 트리거 수행 클로저(Closure)를 통하여 자신의 범위 밖에 있는 변수 접근 비동기I/O (이벤트 기반 방식) 성능실험 100,000,000개의 32비트 정수형 난수데이터를 정렬하는데 걸리는 소요시간 비교
2.1 IoT & Node.js 관리 관점에서 본 Node.js의 특징 Java Script 단일언어 대중적인 언어를 통한 개발자 확보 측면에서 유리 프로그래밍 언어 인기순위 현재 12위 (tiobe.com) 단일언어 서버와 클라이언트를 하나의 언어로 개발 가능 서버, 클라이언트간 데이터를 이동할 때 자료 변환에 따른 오류 방지 특정한 로직에 대해 서버와 단말이 나누어 처리 가능 개발자가 새로운 언어에 적응하는 시간 최소화
2.1 IoT & Node.js 비즈니스 관점에서 본 Node.js의 특징 저사양 고성능 크롬의 V8 자바스크립트 엔진을 통한 JS 최적화 및 JIT(Just-In-Time) 실행. 소스코드 중간코드 (바이트코드) 기계어 컴파일 런타임 스크립트 언어 컴파일 불필요, 인터프리터를 통한 런타임 실행. 자바스크립트를 동적으로 서버에서 다운로드 하여 업데이트.
“실시간 시스템 구축 하기 위해 Node.js와 펌웨어를 활용하는 시스템을 연계” 2.2 Constraint of Node.js IoT 시스템에서 Node.js가 극복해야 할 과제 비교적 고사양의 하드웨어가 필요 연산에 필요한 소요시간이 일정하지 않다. ( ↔ RTOS(Real Time Operating System) “실시간 시스템 구축 하기 위해 Node.js와 펌웨어를 활용하는 시스템을 연계” 싱글 시스템 : OS로 리눅스 탑재, Node.js를 통한 IO제어 ex) 라즈베리파이, 비글본 듀얼 시스템 : IO제어는 펌웨어, 통신 및 응용은 Node.js 활용 ex)아두이노, 갈릴레오
2.3 Node.js Open Source Project duino와 firmata – 아두이노를 제어하기 위한 Node.js 모듈 duino vs firmata duino firmata 연결방식 시리얼 firmata(표준프로토콜)
2.3 Node.js Open Source Project - 라이브러리 Heimcontrol – 아두이노 + 라즈베리파이 Node.js의 모듈을 활용한 웹 인터페이스 제어 아두이노와 라즈베리파이를 통한 GPIO(General Purpose IO) 제어 Bonescript 1GHz 프로세서, 512MB RAM, 3D 가속 가능 비글본 블랙을 제어할 수 있는Node.js의 모듈 제공 아두이노와 API가 유사
2.3 Node.js Open Source Project - 제작도구 Node-RED Node.js를 이용하는 비주얼 저작도구 기능들을 박스형태로 만들고 관계를 선으로 연결하여 프로그래밍 Espruino 아두이노를 C/C++대신 자바스크립트를 이용해서 개발 할 수 있는 환경 제공 자바스크립트 엔진을 칩에 내장 웹브라우저를 통해 프로그래밍과 디버깅 가능 스크래치, Blockly와 같은 개발 환경 제공