▪ 노드는 기본적으로 싱글 스레도, 논 블로킹 모델을 사용.
▪ libuv 라이브러리 사용하여 I/O 작업을 논 블로킹 방식으로 처리하므로 스레드 하나가 많은 수의 I/O 작업을 혼자 감당 가능.
▪ 작성한 코드가 모두 스레드 하나에서 처리되기 때문에 CPU 부하가 큰 작업에는 적합하지 않음.
▪ 개수는 많지만 크기는 작은 데이터를 실시간으로 주고받는 데 적합.
▪ 네트워크나 데이터베이스, 디스크 작업 같은 I/O에 특화.
▪ 실시간 채팅 애플리케이션이나 주식차트, Json 데이터를 제공하는 API 서버.
▪ 자바스크립트 사용. (웹 브라우저도 자바스크립트를 사용하므로 하나의 언어로 웹 사이트 개발 가능.) -> 생산성 높아짐.
▪ 멀티 스레드 방식에 비해 적은 컴퓨터 자원 사용.
▪ I/O작업이 많은 서버로 적합.
▪ 멀티 스레드 방식보다 쉬움.
▪ 웹 서버가 내장되어 있음.
▪ JSON 형식과 쉽게 호환됨.
▪ 기본적으로 싱글 스레드라서 CPU 코어를 하나만 사용.
▪ CPU 작업이 많은 서버로는 부적합.
▪ 하나뿐인 스레드가 멈추지 않도록 관리가 필요함.
▪ 서버 규모가 커졌을 때 서버를 관리하기 어려움.
▪ 어중간한 성능.
노드는 웹, 모바일, 데스크톱 애플리케이션 개발에도 사용됨.
▪ 노드기반으로 돌아가는 대표적인 웹 프레임워크: 앵귤러, 리액트, 뷰
앵귤러
구글 진영에서 프런트엔드 앱을 만들 때 주로 사용.
리액트
페이스 북 진영에서 주로 사용
▪ 모바일 개발 도구: 리액트 네이티브
▪ 데스크톱 개발 도구: 일렉트론
📒Node.js 교과서 개정2판 책을 참고하여 작성하였습니다.
https://www.gilbut.co.kr/book/view?bookcode=BN002827