웹 공부

Node.js

insetto:) 2023. 10. 17. 18:45
반응형

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