[Node.js] Node.js란?

KIM SOO MIN·2023년 11월 27일

learning

목록 보기
1/16

잠깐 내가 취업을 하게 된 계기를 말해보자면,
나는 java로 학원을 다녔었고, javascript라면 프론트단만 작성할 수 있는 줄 알았다.
그런데 면접을 봐서 합격한 곳이 Node.js를 쓰고 있어서 백엔드도 javascript를 쓰다니..! ㅈ댔다!를 외쳤다. 하지만 이제는 java를 까먹은 상태이다..

Node.js란?

  • Node.js는 Chrome V8 Javascript 엔진으로 빌드된 Javascript 런타임이다.
  1. 서버 실행
  • 자바스크립트 프로그램이 서버로서 기능하기 위한 도구 제공
  • 자바스크립트 애플리케이션을 실행할 수 있으며 서버 애플리케이션을 실행할 수 있다.
  1. 런타임
  • 자바스크립트 프로그램을 컴퓨터에서 실행할 수 있다.
  • V8과 libuv 라이브러리 사용
  1. 이벤트 기반
  • 이벤트가 발생할 때 미리 지정해둔 작업을 수행하는 방식
  • 이벤트 루프 : 호출할 콜백 함수들 관리, 호출된 콜백 함수의 실행 순서 결정, 노드가 종료될 때까지 이벤트 처리를 위한 작업 반복
  • 백그라운드 : 타이머나 이벤트 리스너들 대기, 여러작업이 동시에 실행될 수 있음
  • 태스크 큐 : 정해진 순서대로 콜백들이 줄을 서 있음
  1. 논 블로킹 I/O
  • I/O : 입력(input)/출력(Output)
  • 이전 작업이 완료될 때까지 대기하지 않고 다음 작업 수행
  • 블로킹 : 이전 작업이 끝나야만 다음 작업 수행
  • 논 블로킹방식과 블로킹 방식은 성능이 크게 달라지며, 논 블로킹 방식으로 코딩하는 습관을 들여야 함
  1. 싱글 스레드
  • 프로세스 : 운영체제에서 할당하는 작업의 단위, 프로세스 간에는 메모리 등의 자원을 공유하지 않음, 스레드를 여러 개 생성해 여러 작업 동시에 처리 가능
  • 스레드 : 프로세스 내에서 실행되는 흐름의 단위, 부모 프로세스의 자원을 공유, 같은 주소의 메모리에 접근 가능하므로 데이터 공유 가능
  • Node.js는 싱글 스레드이지만 논 블로킹 모델이므로 스레드 혼자서 많은 일을 처리할 수 있다.
  • 노드가 싱글 스레드로 동작하지 않는 경우 : 스레드풀, 워커 스레드
  • 멀티 스레딩보다 멀티 프로세싱이 효율적이므로 멀티 프로세싱을 많이 사용
  1. 서버로서의 노드
  • 개수는 많지만 크기는 작은 데이터를 실시간으로 주고받는 데 적합함
  • CPU 연산을 많이 요구하면 스레드 하나가 혼자서 감당하기 어려움
  • 웹 서버가 내장되어 있음
  1. 서버 외의 노드
  • 노드 기반 웹 프레임워크 : 앵귤러, 리액트, 뷰 등
profile
3년차 풀스택 엔지니어입니다.

0개의 댓글