티스토리 뷰

책/nodejs 교과서

1. 노드 시작하기

안양사람 2021. 2. 18. 19:17
728x90
SMALL

nodejs는 Chorme V8 Javascript 엔진으로 빌드된 Javascript 런타임입니다.

(런타임 : 특정 언어로 만든 프로그램들을 실행할 수 있는 환경)

 

이벤트 기반(event-driven) : 이벤트가 발생할 때 미리 지정해둔 작업을 수행하는 방식

이벤트 루프 : 이벤트 발생 시 호출할 콜백 함수들을 관리하고, 호출된 콜백 함수의 실행 순서를 결정하는 역할을 담당합니다. 노드가 종료될 때까지 이벤트 처리를 위한 작업을 반복하므로 루프라고 부릅니다.

백그라운드 : setTimeout 같은 타이머나 이벤트 리스너들이 대기하는 곳입니다. 자바스크립트가 아닌 다른 언어로 작성된 프로그램이라고 봐도 됩니다. 여러 작업이 동시에 실행될 수 있습니다.

태스크 큐 : 이벤트 발생 후, 백그라운드에서는 태스크 큐로 타이머나 이벤트 리스너의 콜백 함수를 보냅니다. 정해진 순서대로 콜백들이 줄을 서 있으므로 콜백 큐라고도 부릅니다. 콜백들은 보통 완료된 순서대로 줄을 서 있지만 특정한 경우에는 순서가 바뀌기도 합니다.

논 블로킹 I/O

이벤트 루프를 잘 활용하면 오래 걸리는 작업을 효율적으로 처리할 수 있습니다. 작업에는 기본적으로 동시에 실행될 수 있는 작업과 동시에 실행될 수 없는 작업이 있습니다. 기본적으로 여러분이 작성한 자스 코드는 동시에 실행될 수 없습니다. 하지만 I/O 작업 같은 것은 동시에 처리될 수 있습니다.(input, output)

파일 시스템 접근이나 네트워크를 통한 요청 같은 작업이 I/O의 일종입니다. 이러한 작업을 할 때 노드는 논 블로킹 방식으로 처리.

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

블로킹이란 이전 작업이 끝나야만 다음 작업을 수행하는 것을 의미.

setTimeout, setImmediate는 논 블로킹을 만들기 위한 기법

다만, 논 블로킹으로 코드를 작성하더라도 코드가 전부 여러분이 작성한 것이라면 전체 소요 시간 짧아지지 않는다.

단지 실행 순서만 바뀜.

그렇다고 I/O 작업이 없다고 해서 논 블로킹이 의미가 없는 것은 아니다. 또한 논 블로킹과 동시는 다른 의미다.

노드에서는 동기와 블로킹이 유사, 비동기와 논 블로킹이 유사.(3절에서 설명)

 

예시 블로그

siyoon210.tistory.com/147

alnet.tistory.com/9

 

싱글 스레드

프로세스 : 운영체제에서 할당하는 작업의 단위. 토드나 웹 브라우저 같은 프로그램은 개별적인 프로세스. 프로세스 간에는 메모리 등의 자원을 공유하지 않는다.

스레드 : 프로세스 내에서 실행되는 흐름의 단위. 프로세스는 스레드를 여러 개 생성해 여러 작업을 동시에 처리할 수 있다. 스레드들은 부모 프로세스의 자원을 공유한다. 같은 주소의 메모리에 접근 가능하므로 데이터를 공유할 수 있다.

노드는 싱글 스레드라고 불린다. 하지만 싱글 스레드로 동작하지는 않는다. 노드를 실행하면 프로세스가 하나 생성. 그리고 그 프로세스에서 스레드를 내부적으로 여러 개 생성. 그중에서 여러분이 직접 제어할 수 있는 스레드는 하나. 그래서 싱글 스레드라고 여겨진다.

 

노드가 싱글 스레드로 동작하지 않는 두 가지 경우

1. 스레드풀 : 노드가 특정 동작을 수행할 때 스스로 멀티 스레드를 사용(암호화, 파일입출력, 압축)

2. 워커 스레드 : 노드12버전에서 이제 노드에서도 멀티 스레드를 사용하는 것이 가능

 

 

node설치

안된다면 환경벼수 확인

 

npm 버전 업데이트하기

npm install -g npm

(맥과 리눅스는 명령어 앞에 sudo, 계정 비밀번호 입력해야 하 수도)

 

함께 보면 좋은 자료

노드 공식 사이트

https://nodejs.org/ko 

 

Node.js

Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine.

nodejs.org

 

노드 공식 사이트의 가이드

https://nodejs.org/ko/docs/guides/ 

 

가이드 | Node.js

Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine.

nodejs.org

 

노드에 대한 전반적인 설명

https://nodejs.dev/ 

 

Run JavaScript Everywhere.

Welcome to Node.js!

nodejs.dev

 

이벤트 루프 설명

https://nodejs.org/ko/docs/guides/event-loop-timers-and-nexttick/ 

 

Node.js 이벤트 루프, 타이머, `process.nextTick()` | Node.js

Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine.

nodejs.org

 

이벤트 루프에 대한 시각적 설명

https://latentflip.com/loupe 

 

http://latentflip.com/loupe/

 

latentflip.com

 

vs code 공식 사이트

https://code.visualstudio.com/ 

 

Visual Studio Code - Code Editing. Redefined

Visual Studio Code is a code editor redefined and optimized for building and debugging modern web and cloud applications.  Visual Studio Code is free and available on your favorite platform - Linux, macOS, and Windows.

code.visualstudio.com

 

Homebrew 사이트

https://brew.sh/index_ko 

 

Homebrew

The Missing Package Manager for macOS (or Linux).

brew.sh

 

 

728x90
LIST

' > nodejs 교과서' 카테고리의 다른 글

6. 익스프레스 웹 서버 만들기  (0) 2021.02.21
5. 패키지 매니저  (0) 2021.02.20
4. http 모듈로 서버 만들기  (0) 2021.02.20
3. 노드 기능 알아보기  (0) 2021.02.19
2. 알아두어야 할 자바스크립트  (0) 2021.02.18
댓글
공지사항