WEB Front-End/Node.js

Node.js 학습 01 - 노드의 기본 개념 : node.js 이벤트 루프, 태스크 큐, 백그라운드, 싱글스레드

hyg4196 2021. 10. 18. 14:44
반응형

 

노드 js 의 핵심 개념 이해하기

 

1. node.js 는 chrome V8 javascript 엔진으로 빌드된 js 런타임이다.

       ㄴ 런타임이란 ? 특정 언어로 만든 프로그램을 실행할 수 있는 환경을 뜻한다.

       ㄴ 노드는 V8과 libuv 라는 라이브러리를 사용하며 c와 c++ 로 구현되어 있다. libuv는 이벤트키반, 논블로킹

           I/O 모델을 구현하고 있다. (I - input , O - out :  입출력)

 

2. 노드는 이벤트 기반이다. 

       ㄴ 이벤트 리스너에 콜백함수를 등록하여 사용한다.

       ㄴ 이벤트 루프는 호출 스택, 태스크 큐, 백그라운드를 이용한다.

 

 

3. 노드는 논 블로킹 I/O 를 구현하고 있다.

       ㄴ 보통 자바스크립트 코드는 동시에 실행 될 수 없다.

       ㄴ 파일 시스템 접근, 네트워크를 통한 요청 같은 I/O 작업은 동시에 처리할 수 있다.

            (JS 상에서 동작하는 것이 아닌 다른 작업들)

       ㄴ 논 블로킹 : 이전 작업이 완료될 때까지 대기하지 않고 다음 작업을 수행함을 뜻함.

       ㄴ 논 블로킹 방식으로 코딩하지 않으면 의마가 퇴색되므로 논 블로킹 방식으로 코딩하는 습관을 들여야한다.

 

4. 노드의 싱글 스레드

       ㄴ 프로세스와 스레드를 공부하세요.

       ㄴ 스레드풀 : 노드가 특정 동작을 수행할 때 스스로 멀티 스레드를 사용

       ㄴ 워커 스레드 : 노드 12버전에서 안정화된 기능으로 이제 노드에서도 멀티 스레드를 사용할 수 있게 되었다.

 

5. 서버로서의 노드

       ㄴ 서버에서도 싱글 스레드, 논 블로킹 모델이므로 위에 장단점과 크게 다르지 않다.

       ㄴ I/O 요청을 처리하는 서버로 이용하면 좋고 - cpu 부하가 큰 작업에는 적합하지 않다.

       ㄴ 서버 규모가 커지면 톰켓 같은 웹 서버를 연결해야만 한다. (효율적이지 못함)

 

6. 서버 외의 노드

       ㄴ 웹, 모바일, 데스크톱 애플리케이션 개발에서도 사용되기 시작

       ㄴ 대표적인 웹 프레임워크 앵귤러, 리액트, 뷰 등 노드 기반으로 돌아간다.

 

7. 개발환경 설정

       ㄴ https://nodejs.org/en/ 해당 사이트에서 다운로드

설치 완료 후, cmd 를 이용해 node -v , npm -v 를 통해 버전을 확인 가능

참고 : 윈도우에서 명령 프롬프트를 통해 노드를 설치하고 싶다면 초콜리트를 고려해볼 수 있다. 

npm 버전 업데이트 : npm install -g npm

 

노드의 장단점

장점

멀티 스레드 방식에 비해 적은 컴퓨터 자원 사용

I/O 작업이 많은 서버로 적합

멀티 스레드 방식보다 쉬움

웹 서버가 내장 되어 있음

자바스크립트를 사용함

JSON  형식과 쉽게 호환

 

단점

기본적으로 싱글 스레드라서 CPU코어 하나만 사용

CPU 작업이 많은 서버로는 부적합

하나뿐인 스레드가 멈추지않도록 관리가 필요

서버 규모가 커졌을때 관리가 어려움

어중간한 성능

반응형