Node.js 교과서 개정 2판 1장 요약

Nari.·2020년 12월 6일
0

Node.js

목록 보기
1/10
post-thumbnail

1장 노드 시작하기

1.1 핵심 개념 이해하기

1.1.1 서버

노드를 통해 다양한 자바크립트 애플리케이션을 실행할 수 있지만, 노드는 서버 애플케이션을 실행하는데 제일 많이 사용한다.
서버는 네트워크를 통해 클라이언트에 정보나 서비스를 제공하는 컴퓨터 또는 프로그램.
서버는 클라이언트의 요청에 대해 응답한다. 그래서 노드는 자바스크립트 프로그램이 서버로서 기능하기 위한 도구를 제공하므로 서버 역할을 수행할 수 있다.

1.1.2 자바스크립트 런타임

Node.js 는 Chrome V8 Javascript 엔진으로 빌드된 Javascript 런타임 입니다.

  • 공식 사이트에 게시된 노드 소개글.

1.1.3 이벤트 기반

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

“이벤트 리스너(Event Listener)에 콜백(callback) 함수를 등록한다.” 는 말은,
이벤트 기반 시스템에서는 특정 이벤트가 발생할 때 무엇을 할지 미리 등록해두는 것을 의미한다.

  • 이벤트 루프 : 이벤트 발생시 호출할 콜백 함수들을 관리하고, 호출된 콜백 함수의 실행 순서를 결정하는 역할을 담당
  • 백그라운드 : setTimeout 과 같은 타이머나 이벤트 리스너들이 대기하는 곳
  • 태스크 큐 : 이벤트 발생 후, 백그라운드에서는 태스크 큐로 타이머나 이벤트 리스너의 콜백 함수를 보낸다. 정해진 순서대로 콜백들이 줄을 서 있어서 콜백 큐라고도 부른다.

1.1.4 논 블로킹 I/O

  • 논블로킹이란 ?
    이전 작업이 완료 될 때까지 대기하지 않고 다음 작업을 수행하는 것을 의미한다.
    즉, 작업들이 모두 동시에 처리될 수 있는 작업이며, 같은 작업을 더 짧은 시간안에 처리할 수 있다.

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

  • setTimeout(callback, 0) 은 코드를 논 블로킹으로 만들기 위해 사용하는 기법 중 하나.

노드에서는 동기와 블로킹, 비동기와 논블로킹이 서로 유사하다는 것만 알아두자.

1.1.5 싱글 스레드

스레드가 하나뿐이라는 의미. 자바스크립트 코드가 동시에 실행될 수 없는 이유이기도 함.

  • 프로세스와 스레드의 차이
  1. 프로세스
  • 운영체제에서 할당하는 작업의 단위
  • 노드나 웹 브라우저 같은 프로그램은 개별적인 프로세스
  • 프로세스 간에는 메모리 등의 자원을 공유하지 않음
  1. 스레드
  • 프로세스 내에서 실행되는 흐름의 단위
  • 프로세스는 스레드를 여러개 생성해서 여러 작업을 동시에 처리할 수 있음
  • 스레드들은 부모 프로세스의 자원을 공유
  • 같은 주소의 메모리에 접근 가능하므로 데이터를 공유할 수 있음

1.2 서버로서의 노드

노드 서버의 장단점은 싱글 스레드, 논 블로킹 모델의 장단점과 크게 다르지 않다.
노드 사용자들이 말하는 가장 큰 장점은 언어로 자바스크립트를 사용한다는 것이다. 이것이 생산성이 중요한 기업이 노드를 채택하는 이유이다. 하지만 로드 밸런싱에 특화된 웹 서버에 비해서는 속도가 느리다.

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

1.3 서버 외의 노드

노드 기반으로 돌아가는 대표적인 웹 프레임워크는 앵귤러(Angular), 리액트(React), 뷰(Vue) 등이 있다.

1.4 개발 환경 설정하기

1.5 함께 보면 좋은 자료

0개의 댓글