Notice
Recent Posts
Recent Comments
Today
Total
05-05 00:00
Archives
관리 메뉴

Jeongchul Kim

10 개방형 플랫폼 - Node-RED 본문

사물인터넷

10 개방형 플랫폼 - Node-RED

김 정출 2016. 2. 1. 21:49

10 개방형 플랫폼 - Node-RED


시각화 도구 소개

1. 비주얼 개발 도구의 필요성

시각화 도구 소개

비주얼 개발 도구는 왜 필요할까요? 먼저, 사물인터넷에서 이벤트를 다루는 간단한 도구가 필요한데, 이때 이벤트란, 트윗, 알림, 온도, 날씨 등 매우 다양합니다. 이러한 이벤트가 발생했을 때 누군가에게 알리거나 무엇 인가를 실행하는, 즉 상황을 다루는 응용 개발 도구가 필요하게 되었습니다.

특히 사물인터넷은 낮은 수준의 하드웨어와 온라인 서비스를 동시에 다루는 일이 많습니다.

예를 들어, 화분의 습도를 모니터링하고 물을 주어야 하는 상황 이벤트를 소셜 서비스 API를 통하여 알림을 발생 시키도록 하는 것입니다. 이렇듯 다양한 수준의 이벤트 흐름을 쉽게 다루는 도구가 필요함에 따라 다양한 시각화 도구가 등장하게 되었습니다.



2. Node.js

시각화 도구 중 하나인 Node.js에 대해 알아보도록 하겠습니다. Node.js는 Joyent사에서 개발한 서버 측 자바스크립트 플랫폼으로 구글의 V8 자바스크립트 런타임을 이용한 오픈소스 서버 플랫폼입니다. 빠른 실시간 네트워크 응용을 목적으로 개발되었습니다.

Node.js의 특징을 살펴보면, 이벤트 처리와 Non-blocking, 비동기 입/출력을 지원합니다. 장점으로는, 자바스크립트 언어로 클라이언트, 서버 소프트웨어를 모두 개발할 수 있으며, 생산적인 종단 스택을 구현합니다. 그리고 이벤트 처리와 단일 스레드(thread) 모델로 동시성을 높이고, 멀티 스레드 프로그램의 복잡성을 제거했습니다. 또한, 많은 연결에 대하여 작은 오버 헤드(Over-Head)만 발생한다는 장점이 있습니다. 이러한 장점 때문에 프로그램 생산성과 고성능 서버 성능을 업계에서 입증받아, Node.js를 사용하는 기업에는 월마트, 이베이, 페이팔, Netflix 등이 있습니다.

프로그램 모듈을 실시간으로 체크하는 그래프를 살펴보면, Node.js가 10만 개 이상으로, 패키지/모듈을 지원하는 공동체에서 가장 급속도로 모듈이 증가하고 있는 것을 확인할 수 있습니다.



3. Node-RED

Node.js 외에도 시각화 도구에는 Node-RED가 있습니다. 자바 기반의 OSGi 환경보다 경량화된 비주얼도구가 개발된 것입니다. Node-RED는 초보자도 쉽게 사용할 수 있는 장점이 있습니다. 또한, 자바스크립트 언어로 스크립팅을 하고 비주얼 도구로 브라우저에서 가볍게 사물인터넷 서비스를 개발할 수 있습니다.


Node-RED는 Node.js를 이용한 비주얼 저작 도구입니다.

스크래치 스타일의 비주얼 툴을 이용하여 프로그램을 작성하게 됩니다. 이클립스의 비주얼 개발 환경이, 그래픽을 이용하고 자바 가상 언어로 결과를 생성하며, 자바 가상 머신의 런타임을 이용하듯 Node-RED는 Node.js라는 자바스크립트 런타임을 이용합니다. 브라우저에서 드래그 앤 드랍의 GUI로 응용을 작성하고 배포할 수 있습니다. 이러한 편의성 때문에 클라우드 기반의 서비스화가 용이한 장점을 가집니다.


Node-RED는 노드와 와이어로 응용을 그리는 비주얼 도구입니다. 노드는 사물을 추상화하거나 서비스를 추상화한 것이고 노드와 노드를 연결하는 와이어는 정보의 흐름을 추상화하는 것으로 보면 됩니다.


노드는 자바 스크립트 언어로 기능이 표현되고 화면 상의 표현은 html로 기술됩니다. 또한, 노드와 노드를 연결하는 와이어는 JSON으로 기술됩니다. 이 흐름은 앞 노드의 출력이 뒤 노드 입력으로 작동하는 연결입니다.


Node-RED의 특징을 정리해 보면,

첫째, 사물인터넷 응용을 제작하는 비주얼 도구입니다. 둘째 간단한 런타임 배포, 시작품 제작에 적합합니다. 셋째 간단한 자동 실행 런타임을 쉽게 작성할 수 있습니다. 넷째 다양한 연동을 간단하게 그려서 확장합니다. 다섯째 낮은 진입 장벽으로 인해 누구나 쉽게 배우고 사용할 수 있습니다. 마지막으로 개방형 표준, 유연성, 공유의 특징이 있습니다.





Node-RED 실습

1. Node.js 설치

Node-RED 실습

Node-RED를 설치하여 보도록 하겠습니다. Node-RED를 설치하기 위하여 Node.js가 필요합니다.

Node-RED 웹 페이지에 접속하면 다운로드 받을 수 있습니다.

http://nodered.org/docs/getting-started/installation.html


사용하는 OS에 알맞은 프로그램을 다운로드 합니다. 다운로드 받은 파일을 실행하고,

Next 버튼을 클릭하여 설치를 진행합니다.


라이선스 동의에 체크합니다.

다음으로 설치할 위치를 지정하고, 설치파일을

확인 후 계속 진행합니다. 다음과 같이 설치 준비가 완료됩니다.


Install 버튼을 클릭해보세요.

다음과 같은 화면이 뜨면서 설치가 완료됩니다.

2. Node-RED 설치

Node.js의 설치가 완료되었다면, 이번에는 Node-RED를 설치하여 보도록 하겠습니다.

Node-RED를 설치를 위하여 명령

프롬프트를 실행합니다. node -v를 입력하여 Node.js 버전을 확인합니다. 그다음, npm install -g node-red를 입력합니다.


이때, ‘-g’는 Node-RED를 시스템 어디에나 사용할 수 있게 글로벌로 설치한다는 의미입니다.

설치 완료 후,

node-red를 입력하면, Node-RED가 실행됩니다. 화면에 보이는 주소는 나중에 브라우저에서 접근할 서버의 URL입니다.

Node-RED가 실행되면 방화벽 접근 허용 창이 뜹니다. Node-RED는 서버 프로그램이므로 방화벽을 통과할 수 있도록 액세스 허용을 클릭합니다.


서버에 접속할 URL을 입력하여 Node-RED 페이지로 이동하면, Node-RED를 시작할 수 있습니다.

127.0.0.1은 루프백 주소로 자기 자신을 의미하며, 1880포트 넘버는 임의의 값으로 Default 값입니다.



화면이 나오면 설치와 실행이 완료된 것입니다.


3. 주요 명령어 살펴보기

Node-RED의 주요 명령어에는 어떤 것들이 있을까요? 먼저 왼쪽에는 미리 만들어진 노드가 있습니다.

다양한 종류의 노드들이 준비되어 있으며, 이것을 중앙의 화면에 드래그해 넣을 수 있습니다.

화면에 보이는 선은 노드를 연결하는 와이어입니다. 마우스로 드래그하여 노드를 연결할 수 있습니다.

오른쪽 위에 보이는 Deploy 버튼은 작성된 서비스를 시작하는 버튼입니다. 클릭하면 응용 서비스가 시작됩니다.

그리고 오른쪽에 보이는 창을 통해 디버그 메시지가 표시됩니다.

Node-RED에서 노드 만드는 법을 살펴보겠습니다.

화면의 재생 버튼을 클릭해 보세요.

Node-RED는 행위를 정의하는 자바스크립트 파일과 속성, 편집창, 도움말을 구성하는 HTML 파일로 구성

Node-RED 웹페이지(http://nodered.org/) > documentation > Creating your first node


밑에는 예제 lower-case.js 이다.


function의 파라미터로 RED가 입력, RED를 이용하여 런타임에 제공하는 API 호출

RED.nodes.createNode => 노드를 생성

this. on(‘input’, function(msg) { } => 콜백 함수

RED.nodes.registerType(“lower-case”,LowerCaseNode) =>RED를에 노드를 등록



lower-case.html

첫 번째 script는 편집창을 정의함

두 번째 script는 도움말을 정의


inject노드는 입력은 없고 출력만 있음.










Comments