[Node.js] Node.js란?, 특징, 역활

노성준·2022년 4월 5일
0

Node.js

목록 보기
2/2
post-thumbnail

Node.js

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

Node.js는 서버가 아니다. 일종의 자바스크립트 실행기이다.
Node.js자체가 서버가 아니라 자바스크립트로 구현한 서버 코드를 실행시켜주는 것이다.

Node.js의 특성

1. 이벤트 기반

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

이벤트 리스너 : 이벤트를 등록하는 함수
콜백 함수 : 이벤트가 발생했을 때 실행될 함수

이벤트 리스너에 이벤트에 대한 콜백 함수를 등록,
해당 이벤트가 발생하면 이벤트 리스너에 등록된 콜백 함수 호츨

2. 논블로킹 I/O

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

노드는 일부 코드를 논블로킹 방식 하에서 일부 코드는 백그라운드에서 병렬로 실행, 나머지 코드는 블로킹 방식으로 실행
일부 코드 : I/O작업(파일 시스템 접근, 네트워크 요청), 압축, 암호화 등
I/O작업이 많을 수록 노드의 장점이 극대화됨

3. 하나의 스레드만 제어가능

노드 프로세스는 멀티스레드 이지만 직접 다룰 수 있는 스레드는 하나이기 때문에 싱글 스레드라고 표현

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

노드 자체는 멀티 스레드 이지만 자바스크립트를 실행하는 스레드는 하나이기때문에 싱글 스레드라고 표현
노드 자체는 멀티 스레드이기 때문에 여러 스레드를 활용가능 따라서 사용자가 제어하는 하나의 스레드를 제외한 다른 스레드들은 코드를 동시에 동작시키기 위한 준비를 하고 있음

싱글 스레드보단 멀티 스레드가 이상적이지만 싱글 스레드에 비해 많은 자원을 사용하고, 프로그래밍 난이도가 어렵다는 단점이 있음, 노드는 싱글 스레드의 단점을 해결하고자 논 블로킹 모델을 사용하고 멀티 프로세스를 활용함

14버전부터 멀티 스레드 사용 가능
노드는 주로 멀티 스레드 대신 멀티 프로세스 활용

Node.js의 역활

서버로서의 Node.js

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

노드 서버의 장단점


CPU 작업을 위해 AWS Lambda나 Google Cloud Functions같은 별도 서비스 사용

서버 외의 Node.js

웹, 모바일 데스크탑 애플리케이션

웹 프레임워크 : Angular, React, Vue, Meteor등
모바일 앱 프레임워크 : React Native
데스크탑 개발 도구 : Electron

0개의 댓글