Node.js 섹션0 FAQ & 1강

_upper·2023년 9월 24일

노드의 정의

Node.js

: 크롬 V8 자바스크립트 엔진으로 빌드된 자바스크립트 런타임

노드는 서버가 아님

  • 서버의 역할도 수행할 수 있는 자바스크립트 런타임
  • 노드로 자바스크립트로 작성된 서버를 실행할 수 있음
  • 서버 실행을 위해 필요한 http/https/htpp2 모듈을 제공

런타인: 특정언어로 만든 프로그램들을 실행할 수 있게 해주는 가상 머신(크롬의 V8 엔진 사용)의 상태


노드의 특성

이벤트가 발생할 때 미리 저장해둔 작업을 수행하는 방식

이벤트의 예: 클릭, 네트워크 요청, 타이머
이벤트 리스너: 이벤트를 등록하는 함수
콜백 함수: 이벤트가 발생했을 때 실행될 함수

논블로킹 I/O

논블로킹: 오래 걸리는 함수를 백그라운드로 보내서 다음 코드가 먼저 실행되게 하고, 나중에 오래 걸리는 함수를 실행

블로킹을 하면 코드가 순서대로 실행되고 논블로킹이면 코드가 순서대로 실행되지 않을 수도 있다

프로세스 vs 스레드

프로세스: 운영체제에서 할당하는 작업의 단위, 프로세스 간 자원 공유X
스레드: 프로세스 내에서 실행되는 작업의 단위, 부모 프로세스 자원 공유

싱글 스레드

싱글 스레드라 주어진 일을 하나밖에 처리하지 못함

  • 프로그래밍 난이도가 쉽고, CPU, 메모리 자원 적게 사용
멀티스레드 모델과의 비교

싱글 스레드 모델을 에러를 처리하지 못하는 경우 멈춤
멀티 스레드 모델은 에러 발생 시 새로운 스레드를 생성하여 극복


서버로서의 노드

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

클라이언트: 서버에 요청을 보내는 주체(브라웢, 데스크탑 프로그램, 모바일 앱, 다른 서버에 요청을 보내는 서버)

노드 != 서버 But, 노드는 서버를 구성할 수 있게 하는 모듈을 제공

노드 서버의 장단점

장점:
멀티 스레드 방식에 비해 컴퓨터 자원을 적게 사용함
I/O 작업이 많은 서버로 적합
멀티 스레드 방식보다 쉬움웹 서버가 내장되어 있음
자바스크립트를 사용함
JSON 형식과 호환하기 쉬움

단점:
싱글 스레드라서 CPU 코어를 하나만 사용함
CPU 작업이 많은 서버로는 부적합
하나뿐인 스레드가 멈추지 않도록 관리해야 함
서버 규모가 커졌을 때 서버를 관리하기 어려움
어중간한 성능


서버외의 노드

자바스크립트 런타임이기 때문에 용도가 서버에만 한정되지 않음

웹, 모바일, 데스크탑 애플리케이션에도 사용

  • 웹 프레잌워크: Angular, React, Vue, Meteor 등
  • 모바일 앱 프레임워크: React Native
  • 데스크탑 개발 도구: Electron(Atom, Slack, VSCode, Discord등 제작)

노드, VS code 설치하기

노드 설치

https://nodejs.org/en
LTS는 안정적인 버전(3년)

vs code 설치

https://code.visualstudio.com/download

0개의 댓글