Image
Image

DAY1-1.Node.js 소개 및 개발환경 구축하기

1.Node.js 소개 및 개발환경 구축하기

1) Node.js

-노드는 구글 크롬 브라우저의 v8 자바스크립 엔진으로 빌드 된 자바스크립트 런타임 환경으로 시작되었습니다.
-런타임이란?  특정 개발언어로 작성된 프로그램을 실행할 수 있는 환경을 말합니다.
-노드는 자바스크립트로 개발된 프로그램을 각종 컴퓨터(서버포함)에서 실행할 수 있게 런타임 환경을 지원합니다.
-구글은 2008년 V8 자바스크립트 엔진을 이용 크롬 브라우저를 출시할 때 V8 자바스크립트 엔진을 최초 공개되었고  이후 오픈소스화 되었습니다.
-2009년 V8엔진 기반 노드 프로젝트가 시작되었습니다.


2)Node.js Framework 주요 특징

-이벤트 기반 개발 모델
-논 블록킹 I/O 모델 제공
-가볍고 효율적인 백 엔드 스크립트 개발 프레임워크 
-NPM 이라고 하는 자바스크립트 오픈소스 라이브러리 팩키지 저장소 생태계 제공

https://nodejs.org/en/
https://nodejs.org/ko/


 

가.자바스크립트 코드 실행환경(런타임환경) 제공

- Node.js Framework은 자바스크립트 언어로 개발된 코드를 실행할 수 있는 v8 자바스크립트 엔진기반 런타임 환경을 제공
-자바스크립트 언어로 개발된 프로그램들을 Node.js Framework이 설치된 각종 사용자컴퓨터 또는 서버 컴퓨터 등에서 실행할 수 있는 환경(런타임 환경)제공


나)이벤트 기반 프로그래밍 방식 지원

-특정 이벤트가 발생할 때 미리 지정해둔 작업이 수행되게 하는 개발방식 지원
-이벤트는 Node.js Framework 자체에서 제공하는 이벤트이거나 개발자가 정의한 이벤트일수도 있다.
-일반적으로 이벤트가 발생하면 미리 등록해둔 이벤트 리스너 함수가 실행되는 구조로 작동된다.


다)싱글 쓰레드 기반 작업 흐름 처리

컴퓨터에서 특정 프로그램이 실행되면 O/S는 해당 프로그램 관리를 위한 독립된 CPU 프로세스를 생성시켜 해당 CPU 프로세스를 통해 프로그램의 연산 및 메모리를 관리합니다.
일반적인 경우 프로세스와 프로세스간 자원 접근(CPU,메모리)은 불가하지만 프로세스간 통신을 이용하면 가능 하기도 하며 프로세스가 생성되면 최소 1개의 쓰레드(작업처리단위)가 자동 생성됩니다. 

쓰레드는 프로세스에서 실행되는 작업처리 흐름의 기본 단위를 말한다.
프로그램은 빠르게 처리해야할 여러 작업으로 구성된 작업목록의 빠른 처리를 위해서 프로그램에 할당된 프로세스 공간내에서 여러 쓰레드를 생성하고 각각의 작업을 해당 쓰레드에 동시 할당해 처리하게 하여 보다 빠른 작업의 처리가 가능합니다. 이를 보통 멀티 쓰레드 비동기 프로그래밍이라고 합니다.

불행히도 Node.js Framework은 특정 작업을 처리하기 위해서는 싱글 쓰레드 환경만을 지원합니다.
노드 어플리케이션이 실행되면 해당 노드 어플리케이션 관리를 위해 단일 CPU 프로세스가 생성되고 해당 CPU프로세스는 단일 쓰레드 기반에서 특정 작업을 처리하게 됩니다. 노드 프로세스에서는 멀티 쓰레드 생성이 불가합니다.
노드는 싱글 쓰레드 기반에서 다중작업을 처리 속도를 높이기 위해 논블로킹IO모델 환경을 지원합니다.
또한 멀티 쓰레드 대신 멀티 프로세싱 방식으로 대량의 사용자 요청에 대해 분산 처리방식을 사용할 수도 있습니다.
노드는 자바스크립트 기반 개발생산성은 좋지만 안정적인 서비스 운영 및 고 성능은 담보하지 못합니다.

라)동기/비동기 처리방식 및 논 블로킹 I/0 모델

 A.동기 처리방식 이란

작업의 처리단위인 쓰레드가 하나의 작업만을 담당하고 처리하게 하는 방식을 말합니다.
동기 방식에서 쓰레드는 여러 작업을 동시에 진행하지 못합니다. 
하나의 쓰레드가 하나의 작업만을 처리하는 방식이라 여러 작업을 처리하려면 처리하고자 하는 작업 수 만큼 쓰레드를 각각 만들어 할당하거나 하나의 쓰레드에서 각 작업을 순차적으로 처리해야합니다.

-싱글 쓰레드-동기방식의 경우 
여러 작업목록을 처리 시 WaterFall(폭포수)방식으로 하나의 함수 작업이 끝나야 다음 함수작업이 실행되고 그 다음 함수가 작업이 순차적으로 실행 되는 방식을 취하며 해당방식은 선행 함수의 작업이 완료되지 않으면 후속 작업이 더 이상 진행되지 않는 블로킹 상태가 일반적으로 발생하여 작업 시간이 전체 작업처리 시간과 같아져 모든 작업이 완료되기 전까지는 다른 추가적인 작업을 진행할 수 없는 상황이 발생합니다.


C.비동기 처리방식 이란
처리해야 하는 여러 작업목록이 중간에 지체없이 지속적으로 작업이 진행되게 하는 방식을 말합니다.

-싱글 쓰레드-비동기 처리방식은 순차적으로 함수는 호출하되 각 함수의 작업처리는 쓰레드 영역과 별개로 분리된 백그라운드 영역 이란곳에서 처리하게 하고 처리된 결과는 쓰레드내 콜백함수를 통해 처리결과를 확인하는 구조로 진행하여 전체 작업의 진행에 있어 특정 작업의 진행으로 다른 작업의 진행이 대기하는 블로킹 되는 상황을 만들지 않고 좀더 효율적으로 하나의 쓰레드로 전체 작업처리 속도를 개선할 수 있습니다.

-멀티 쓰레드-비동기 처리 방식
작업을 처리할 수 있는 몇 개의 쓰레드를 먼저 만들고 각각의 쓰레드에 처리해야 하는 작업을 할당하여 동시에 작업처리를 진행하여 전체 작업처리속도를 높일 수 있는 방법을 제공합니다.


D.논블로킹 I/O 방식이란
싱글 쓰레드 기반에서 
다음과 같이 함수A->함수B->함수C 순서대로 처리되어야 하는 작업단위가 있는 경우 함수B가 오랜 시간이 걸린다고 가정할 때 함수A의 작업이 완료 된 후 함수B가 수행해야하는 작업을 백그라운드라는 별도 작업처리영역으로 보내어 함수B의 작업이쓰레드와 별개로 처리되게 조치하고 함수B의 처리결과 여부와 상관없이 바로 다음 함수C를 먼저 실행 되게 하여 함수B로 인해 전체 IN/OUT PUT 작업을 블록킹 되지 않게 처리 프로그래밍하는 방식을 말하며 함수B 작업은 백그라운드에서 완료되면 완료된 결과가 쓰레드내 함수B의 콜백함수에서 받아볼수 있게하여 전체 작업을 좀 더 효율적으로 빠르게 진행될 수 있게하는 비동기 처리방식입니다.

Node 어플리케이션은 기본적으로  싱글 쓰레드 환경에서 작동되기 때문에 다른 개발언어에서 흔히 제공하는 멀티 쓰레딩 대신에 단일 쓰레드 안에서 비동기 방식으로 전체 작업처리의 지연없이 진행될 수 있는 논블로킹IO모델를 만들어 작업처리속도를 개선하고 있습니다.

Node.js Framework에서 논블로킹 IO모델 기반으로 주로 사용하는 비동기처리 코딩 지원방식은 콜백함수방식, promise방식,async/await 방식 3가지를 제공합니다.


3)노드 개발환경 구축하기

가)Visual Studio Code : 개발 툴 - 코드 에디터 다운로드 설치
-구글에서 Visual Studio Code 를 입력하고 검색합니다.
- https://code.visualstudio.com/ 에 접속하고
-Download for Windows(Stable Build) 버전을 다운로드 하고 설치를 진행합니다.
-설치는 디폴트로 진행합니다. 

나) NODE.JS 설치파일(NPM포함)  다운로드 설치
https://nodejs.org/en/download/


다)node/ npm 버전 확인하기

Visual Studio Code 상단 메뉴>Terminal> New Terminal 메뉴를 클릭하면 화면 하단에 터미널 영역이 표시됩니다.
해당 터미널 영역에서 아래 명령어를 입력하고 엔터를 칩니다.

node –v
v12.16.1

npm -v
6.13.4

각각의 버전명이 터미널창에 표시됩니다.

라)Visual Studio Code 확장 툴 설치하기

-Visual Studio Code의 장점은 개발언어별로 다양한 확장 툴을 제공합니다.
-Visual Studio Code 화면의 좌측 Activity Bar내 Extensions(확장) 메뉴를 클릭합니다.
-Extensions(확장) 메뉴에서 ”view-in-browser” 확장툴을 조회하고 설치합니다.  (Koppt Ho 제작)
-”view-in-browser” 확장툴은 편집기에서 작성된 HTML 페이지를 웹 브라우저로 바로 확인할 수 있는 기능 제공. 
-설치가 완료된 확장툴은 확장툴바에 표기됩니다.

 

마)크롬 브라우저 설치

-이미 크롬이 설치되 신분들은 설치 안하셔도 됩니다.
https://www.google.com/intl/ko/chrome/


바)작업 폴더 구성하고 샘플 웹페이지 작성하기

-여러분의 개발 컴퓨터 지정 경로에 작업폴더(Node)를 생성합니다.
-저는 D:\Eddy\Node 폴더를 생성했습니다.
-Visual Studio Code를 오픈하고 상단 메뉴 File>Open Folder를 선택하고 상기 Node 폴더를 선택합니다.
-Activity Bar의 Exploer(탐색기) 바를 선택하면 현재 오픈된 폴더의 구조가 탭으로 표시됩니다.
-해당 Node 탭을 선택하고 탭 헤더영역내 NewFolder아이콘을 클릭하여 DAY1 폴더를 생성합니다.
- Node 탭내 생성된 DAY1폴더를 선택하고 오른쪽 마우스 클릭 New File 또는 탭 헤더 영역내 NewFile 을 선택합니다.
- 파일명을 helloWorld.js로 입력하고 해당 helloWorld.js 파일을 선택해 해당 파일내에 아래 코드를 작성합니다.
- Control+S 키를 눌러 저장하거나 상단메뉴>File>Save 메뉴를 클릭하여 작성내용을 저장한다.

function helloWorld(){
    console.log('Hello World');
    helloNode();
}


function helloNode(){
    console.log('Hello Node');
}

//메인 메소드 실행
helloWorld();


-Visual Studio Code 상단 메뉴>Terminal> New Terminal 메뉴를 클릭하면 화면 하단에 터미널 영역이 표시됩니다.
-해당 터미널 안에서 해당 helloWorld.js파일이 존재하는 폴더 위치로 cd 폴더명 명령어를 통해 이동합니다.
-터미널창에서 아래 명령어를 입력하고 엔터로 명령어를 실행합니다.

cd D:\Eddy\Node\DAY1 엔터 

node helloWorld.js  엔터

Hello World
Hello Node

상기 결과물이 터미널창에 표시되면 정상적으로 helloWorld.js 프로그램이 실행된 것입니다.


Image

댓글목록

Image