반응형
Node.js
개념
- 확장성이 있는 네트워크 애플리케이션 개발에 사용되는 소프트웨어 플랫폼
- 내장 HTTP 서버 라이브러리를 포함하고 있어 웹 서버에서 아파치 등의 별도의 소프트웨어 없이 동작하는 것이 가능
핵심 키워드
- 구글 V8 자바스크립트 엔진
- 고성능 네트워크 서버
- 단일 쓰레드(Single Thread) 이벤트 루프(Event Loop) 기반
- 비동기 I/O 처리(Non-Blocking I/O)
- 자바스크립트
- 개발 생산성 향상
- 방대한 모듈 제공(NPM - Node Packaged Manager)
쓰레드 기반 동기방식(Blocking I/O)
- 하나의 쓰레드가 request를 받으면 모든 처리가 완료될때까지 기다리다가 처리 결과가 완료되면 다시 응답을 보냄
- 기존 업무 처리가 완료되기 전에 또다른 request가 있으면 새로운 쓰레드가 업무를 처리함
- 동시 request가 많은 경우 많은 쓰레드가 필요하게 되어 서버 과부하
단일 쓰레드 이벤트 루프 기반 비동기방식(Non-Blocking I/O)
- 하나의 쓰레드가 request를 받으면 바로 다음 처리에 요청을 보내놓고 다른 작업을 처리하다가 먼저 요청한 작업이 끝나면 이벤트르 받아서 응답을 보냄
- 동시 request가 오더라도 처리가 완료될때까지 기다리지 않아도 되기 때문에 서버 부하가 적음
장점
- 자바스크립트를 동일하게 사용해서 서버단 로직을 처리할 수 있으며, 자바스크립트를 활용해 서버기술을 개발/응용할 수 있다
- 개발이 빠르고 쉽다.
- Non-Blocking I/O와 단일 스레드 이벤트 루프를 통한 높은 처리 성능
- 이벤트 기반 비동기 방식이라 서버 무리가 적다
- java는 쓰레드에 의함 동기 방식이라 요청이 오면 반드시 결과를 받은 후에 다음 로직이 처리 될 수 있다
- npm을 통한 다양한 패키지 제공
단점
- 이벤트 기반 비동기 방식이라 서버단 로직이 복잡한 경우 콜백 함수의 늪에 빠질 수 있다.
- 코드를 순차적으로 실행하는 것이 아니라 비동기 방식으로 이벤트를 보내고, 응답이 오면 처리하는 방식이기 때문에 java개발을 했던 방식으로 설계하고 프로그래밍하면 큰 문제가 발생
- 단일 쓰레드(Single Thread)이기 때문에 하나의 작업 자체가 많이 걸리는 웹 서비스에 어울리지 않음
- 코드가 수행되어야 코드에 에러가 있는지 알 수 있으며, 에러가 날 경우 프로세스가 내려가기 때문에 테스트가 중요함
NPM
- Node.js에서 사용할 수 있는 모듈들을 패키지화 하여 모아둔 저장소 역할과 패키지 설치 및 관리를 위한 CLI(Command Line Interface)를 제공함
반응형
'웹 공부' 카테고리의 다른 글
SOP, CORS, CSP (0) | 2023.11.13 |
---|---|
XSS (0) | 2023.11.13 |
XML Http Request (0) | 2023.10.17 |
JS Callback, Async 함수 (0) | 2023.10.12 |
CDN&JS (0) | 2023.10.12 |