-
[Node.js] Node.js란Node.js 2022. 3. 7. 17:27
Node.js
Chrome V8 JavaScript 엔진으로 빌드된 JavaScript 런타임이다. 싱글스레드이며, 이벤트 루프를 기반으로 논블로킹 I/O 처리와 npm을 이용한 다양한 라이브러리 및 패키지 사용이 가능한 특징이 있다.
Node.js 특징
1. 이벤트 루프
- 콜백 이벤트 큐에서 하나씩 꺼내서 동작시키는 Loop를 말한다.
- 이벤트 루프에서는 이벤트 발생 시 호출 되는 콜백 함수들을 테스크 큐에 전달하고, 테스크 큐에 담겨져있는 콜백 함수들을 콜스택에 넘겨준다.
2. 논블로킹 I/O
- 이전 작업이 완료될 때까지 기다리면서 멈추지 않고, 다음 작업이 지연되지 않게 동작하는 패러다임이다.
- 오래 걸리는 작업은 백그라운드에서 진행하며, 완료 후 이벤트 루프를 통해 테스크 큐를 거쳐 호출 스택에 올라오길 기다리는 방식이다.
3. 싱글스레드
- 스레드는 프로세스 내에서 실행되는 흐름의 단위이다. 프로세스는 스레드를 여러 개 생성해서 여러 작업을 동시에 처리할 수 있는데, 스레드들은 부모 프로세스의 자원을 공유한다.
- JavaScript같은 경우에는 동시에 실행될 수 없기 때문에, Node가 싱글 스레드기반인 것이다.
Node.js 적합과 부적합
적합
- 간단한 로직 -> 알림 등
- 대용량 -> 동시에 여러 요청들을 처리
- 빠른 응답시간 요구 -> 알림 및 실시간 채팅 등
- 빠른 개발 요구
- 비동기 방식에 어울리는 서비스 -> 네트워크 스트리밍 서비스, 채팅 서비스 등
부적합
- 단일 처리가 오래 걸리는 경우 -> 싱글스레드 기반이기 때문이다.
- 서버 체크 로직이 많은 경우 -> 논블로킹 I/O 기반이기 떄문에 콜백 헬에 빠지기 쉽다.
- 업무 복잡도/난이도가 높은 경우 -> 에러 발생 시 서버가 다운되기 때문에 코드 품질이 중요하다.
출처: https://velog.io/@vermonter/JS-Node.js%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80
'Node.js' 카테고리의 다른 글
[Node.js] Socket.io란 (0) 2022.03.10 Node.js 장점 및 단점 (0) 2022.02.17 node.js sequelize migration 생성 및 Column 추가하기 (0) 2022.01.10 req.body, req.params, req.query (0) 2022.01.03