Node란 무엇인가

Eunsu·2024년 12월 10일

Node란 무엇일까요

Node는 크롬 V8 자바스크립트 엔진으로 빌드된 자바스크립트 런타임이다.

▪️ 런타임이란 (runtime)

런타임(Runtime)은 프로그램이 실행되는 "운영 시간"을 의미한다. 일반적으로 컴퓨터 프로그램이 작성되고 실행되는 과정을 다음 세 단계로 나눌 수 있다.

  • 실행 시간: 런타임은 코드가 실행 중인 상태. 즉, 프로그램이 사용자의 입력을 받고 결과를 반환하는 시점.
  • 런타임 환경: 프로그램이 실행되기 위해 필요한 모든 요소(운영체제, 메모리, 라이브러리 등)가 제공되는 환경.
  • 런타임 오류: 프로그램이 실행 중에 발생하는 오류. ex) 잘못된 사용자 입력, 파일 누락, 네트워크 연결 문제

자바스크립트는 브라우저에서 돌아가는 언어였다. HTML에 종속되어 있었는데, 노드가 생겨나면서 종속되지 않고 독립적으로 사용할 수 있는 언어가 되었다.

  • 서버의 역활도 수행할 수 있는 자바스크립트 런타임이다.
  • 노드로 자바스크립트로 작성된 서버를 실행 할 수 있다.

싱글쓰레드 , libuv 비동기 프로그래밍을 할 수 있게 해줌.

노드의 특성

1. 이벤트 기반

메모리에 등록을 해놓듯, 이벤트가 발생할 때 미리 지정해둔 작업을 수행하는 방식.
클릭, 요청, 타이머, 듯 이벤트가 발생할 때 대처할 콜백함수를 미리 등록해놓음.

2. 논블로킹 I/O

다른 작업이 중단되지 않고 계속 실행될 수 있도록 처리하는 방식을 말한다. 이는 주로 병렬 처리나 비동기 프로그래밍에서 중요한 개념으로 사용된다.

예를들어 네트워크 통신을 할 때, 데이터를 요청한 뒤 응답이 올때까지 기다리지 않고 다른 작업을 계속 처리한다. 비동기 네트워크가 이에 해당됨.

파일을 읽거나 쓰는 작업이 진행될 때 다른코드를 먼저 실행한다. fs.readFile이 이에 해당

3. 싱글스레드 아키텍쳐

프로세스 안에 4개의 스레드가 있는데, 프로그래머가 컨트롤할 수 있는 스레드는 1개이다.
나머지는 코드가 실행되기를 기다리고, 어떤 명령어에 의해 실행되면 3개의 스레드가 실행된다.
(멀티 스레드 방식)
이 방식에서 논 블로킹 모델을 채택해 일부코드를 백그라운드에서 실행 가능하게 만들었다.
요청을 먼저 받고, 완료될 때 응답함.

예를들어 식당에서 매우 똑똑한 점원 한명만 있다고 생각하면 된다.

14버전에서 멀티스레드 기능이 추가됨.

싱글스레드일 경우 스레드간의 컨텍스트 스위칭 비용이 없어 가볍고, 코드가 단순하며,ㅡ비동기로 대부분 처리되어 블로킹을 최소화한다.

서버로서의 노드

  • 서버 : 넽,워크를 통해 클라이언트에 정보나 서비스를 제공하는 컴퓨터 혹은 프로그램
  • 클라이언트 : 서버에 요청을 보내는 주체 ex) 핸드폰, 컴퓨터 등등

▪️ 장점

  1. 멀티스레드 보다 자원을 적게 사용
  2. I/O 작업이 많은 서버로 적함.
  3. 멀티스레드보다 쉽고, 웹 서버가 내장되어 있음.
  4. JSON 형식과 호환이 쉬움.
profile
function = (Develope) => 'Hello World'

0개의 댓글