일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- JAVA_HOME
- n진법게임
- 자바
- 전공자따라잡기
- 이진트리
- 동적계획법
- 인오더
- 백준
- 웹개발
- 순회
- 11724
- 포스트오더
- Bottom Up
- 링킹
- 프로그래머스
- 9093
- 포화이진트리
- 이분그래프
- 완전이진트리
- 1707
- 그래프
- 바인딩
- 연결요소
- Java
- 피보나치
- 도커
- DynamicProgramming
- BFS
- 알고리즘
- dfs
- Today
- Total
물음표 살인마
Node란 > 쉽게 설명하는 노드JS 특징과 장단점 본문
1. Node.js란?
자바스크립트는 정적이던 html 페이지를 동적으로 만들기 위해 만들어졌다.
즉 html을 위한, html에 종속된 언어였다.
그리고 자바스크립트 해석은 웹브라우저가 담당하는데,
그렇기 때문에 브라우저 안에 자바스크립트 해석 엔진이 내재되어 있다.
(크롬-v8, 파이어폭스-spider monkey, 익플-chakra 등)
여기서 크롬이 자바스크립트 해석 엔진인 v8만 똑 떼서 출시한 게 node.js다.
node.js는 브라우저말고 로컬pc에서도 자바스크립트를 실행할 수 있게 도와준다.
즉, node.js는 자바스크립트 실행환경(=런타임) 이다.
* 런타임: 프로그래밍 언어는 주로 고급 언어로, 기계가 바로 이해할 수 없기 때문에 고급 언어로 작성된 소스 코드를 기계어로 변환하는 과정을 런타임이라고 한다.
node.js덕분에 자바스크립트를 일반 프로그래밍 언어처럼 사용하기 시작했다.
2. Node.js의 특징
(1) 장점
- non-blocking I/O
Node.js는 application 자체에서는 단일 스레드로 실행되지만 Background에서 thread pool을 구성해 작업을 수행한다.
요청이 많거나 오래걸려도 멈추거나 대기하지 않는다.
한 번에 많은 요청을 감당할 수 있다.
SNS, 채팅서비스 웹에 유리
일반 서버의 경우 많은 요청을 처리하는 경우 Scaling, CPU 멀티쓰레딩, non-blocking 스타일로 코드 작성
- 코드가 짧고 쉽다
빠르고 쉽게 프로토타입 만들기 좋다.
자바스크립트 문법만으로 프론트, 백엔드까지 전부 가능하다.
피보팅에 유리
-별도의 소프트웨어 없이 http 서버 라이브러리를 포함하여 웹 서버 동작이 가능하다.
(대표적으로 express를 사용)
(2) 단점
- 연산 속도가 느리다.
- 수학연산이나 이미지처리 같은 라이브러리가 부족하다.
- non-blocking 처리방식은 다른 언어에서도 비슷하게 구현 가능.
- node.js의 api는 비동기 처리 기반이라, 콜백함수의 늪에 빠질 수 있다.
- 코드를 수행해야 오류 확인이 가능하며 오류가 날 경우 프로세스 자체가 내려갈 수 있다.
- 단일쓰레드이기 때문에 하나의 작업 자체가 많이 걸리는 웹서비스에는 어울리지 않는다.
가벼운 I/O가 많은 웹서비스에 적합.
공식 api 문서
'개발지식 > Node.js' 카테고리의 다른 글
npm+express를 이용해 node.js 웹개발 환경세팅 하기 (0) | 2023.05.30 |
---|