개발바닥

Node.js 개념 정리 본문

node.js

Node.js 개념 정리

라이언 2019. 2. 1. 13:37
반응형

Node.js란?

 비동기 이벤트 주도 JavaScript 런타임으로써 Node는 확장성있는 네트워크 애플리케이션을 만들 수 있도록 설계되었습니다.

크롬 V8 자바스크립트 엔진으로 빌드된 자바스크립트 런타임입니다. Node.js는 이벤트 기반,논블로킹 I/O 모델을 사용해 가볍고 효율적이다.


서버와 클라이언트란 무엇인가?


서버란?

네트워크를 통해 클라이언트에 정보나 서비스를 제공하는 컴퓨터 또는 프로그램을 말합니다.


클라이언트란?

요청을 보내는 주체로 웹 브라우저나 앱, 서버일 수도 있습니다.


클라이언트가 요청을 보내면 서버는 요청을 받아서 처리 후  클라이언트에게 응답합니다.



노드는 V8libuv 라이브러리를 사용한다.

libuv 라이브러리는 노드의 특성인 이벤트 기반, 논블로킹 I/O 모델을 구현하고 있다. 


이벤트 기반이란 무엇인가?

이벤트가 발생할 대 미리 지정해둔 작업을 수행하는 방식을 의미한다. 이벤트로는 클릭이나 네트워크 요청 등이 있을 수 있다.

이벤트 기반 시스템에서는 특정 이벤트가 발생할 때 무엇을 할지 미리 등록해두어야 한다. 이것을 이벤트 리스너(event listener)에 콜백(callback) 함수를 등록한다고 표현한다.


노드는 이벤트 기반 방식으로 동작하므로 이벤트가 발생하면 이벤트 리스너에 등록해둔 콜백 함수를 호출합니다.


이벤트 기반 모델에서는 이벤트 루프라는 개념이 등장하는데요.  

이벤트 루프를 이해하기 위해서 이벤트 루프, 태스크 큐, 백그라운드에 대해서 알아보겠습니다.


  • 이벤트 루프 : 이벤트 발생 시 호출할 콜백 함수들을 관리하고, 호출된 콜백 함수의 실행 순서를 결정하는 역할을 담당합니다. 노드가 종료될 때까지 이벤트 처리를 위한 작업을 반복하므로 루프라고 부른다.
  • 태스크 큐 : 이벤트 발생 후 호출되어야 할 콜백 함수들이 기다리는 공간입니다. 콜백들이 이벤트 루프가 정한 순서대로 줄을 서 있으므로 콜백 큐라고도 부릅니다.
  • 백그라운드 : 타이머나 I/O 작업 콜백 또는 이벤트 리스너들이 대기하는 곳입니다.




논블로킹 I/O 에 대해서 알아보겠습니다.

논블로킹이란?

오래 걸리는 함수를 백그라운드로 보내서 다음 코드가 먼저 실행되게 하고, 그 함수가 다시 태스크 큐를 거쳐 호출 스택으로 올라오기를 기다리는 방식이다. 다시말하면 이전 작업이 완료될 때까지 멈추지 않고 다음 작업을 수행함을 뜻합니다.


I/O는 입력/출력을 의미하며, 파일 시스템 접근(파일 읽기, 쓰기, 만들기 등) 이나 네트워크 요청 같은 작업이 I/O의 일종입니다.



반응형

'node.js' 카테고리의 다른 글

프로세스와 스레드  (0) 2019.02.01
Comments