Node.js 교과서


Node.js는

Chrome V8 Javacript 엔진으로 빌드된 자바스크립트 런타임이다.
쉽게 말하면 자바스크립트 실행기라고 할 수 있다.

서버란?

테트워크를 통해 클라이언트에 정보나 서비스를 제공하는 컴퓨터 혹은 프로그램

클라인트란 요청을 보내는 주체로 브라우저, 데스크톱 앱, 모바일 앱 혹은 다른 서버에 요청을 보내는 서버일 수도 있다.

→ 서버는 클라이언트의 요청에 대해 응답을 한다. 응답은 Yes / No

자바스크립트 런타임

런타임은 특정 언어로 만든 프로그램들을 실행할 수 있는 환경을 뜻한다. 따라서 노드는 자바스크립트 프로그램들을 컴퓨터에서 실행할 수 있다.

특성

이벤트 기반(event-driven)

: 이벤트가 발생할 때 미리 지정해둔 작업을 수행하는 방식.

이벤트 기반 시스템에서는 특정 이벤트가 발생할 때 무엇을 할지 미리 이벤트 리스너(event listener)에 콜백(call back)함수를 등록한다.

논블로킹 I/O

  • I/O는 입력(Input)/출력(Output)을 의미한다. 파일 시스텝 접근(파일 읽기 및 쓰기, 폴더 만들기 등)이나 네트워크를 통한 요청 같은 작업이 있다. 이러한 작업을 할 때 노드는 논블로킹 방식으로 처리하는 방법을 제공한다.

  • 논블로킹(non-blocking)이란 이전 작업이 완료될 때까지 대기하지 않고 다음 작업을 수행하는 것을 의미한다. 반대로 블로킹(blocking)은 이전 작업이 끝나야만 다음 작업을 수행하는 것을 믜한다.

작업들이 모두 동시에 처리될 수 있는 작업이라는 전제하에 논블로킹 방식이 같은 작업을 더 짧은 시간에 처리한다.

싱글 스레드

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

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

스레드와 프로세스

노드를 실행하면 먼저 프로세스가 하나 생성되고 내부적으로 스레드를 여러 개 생성한다. 그 중에서 직접 제어할 수 있는 스레드는 하나이기 때문에 싱글 스레드라고 여겨지는 것이다.

노드의 장단점

장점단점
멀티 스레드 방식에 비해 적은 컴퓨터 자원 사용기본적으로 싱글 스레드라서 CPU 코어를 하나만 사용
I/O 작업이 많은 서버로 적합CPU 작업이 많은 서버로는 부적합
멀티 스레드 방식보다 쉬움하나뿐인 스레드가 멈추지 않도록 관리 필요
웹 서버가 내장되어 있음서버 규모가 커졌을 때 서버를 관리하기 어려움
자바스크립트를 사용함어중간한 성능
JSON 형식과 쉽게 호환됨

0개의 댓글