Server) Node.js 개념이해하기

백준우·2021년 10월 24일
0

Server

목록 보기
1/4
post-thumbnail

1. Node.js란

2. Node.js를 쓰는 이유

3. Node.js 특징

3.1 Event-driven
3.2 Non-blocking I/O


1.Node.js란

  • JS는 웹브라우저에서 여러요소를 동적으로 움직이게 하거나 외부와 통신을 할 수 있게 해주는 언어이다.
  • JS를 웹이 아닌 다른곳에서도 JS를 사용할 수 있도록 해주는 실행 환경이다.
  • V8이라는 JavaScript 엔진 위에서 동작하는 자바스크립트 런타임(환경)이다.
  • JS로 서버용 프로그램,데스크톱에서 실행되는 GUI,작은 로봇용 프로그램을 만들수 있다.
  • 단순히 웹에서 실행 가능한 게임을 만들려면 JavaScript 만으로도 가능하지만 온라인채팅,실시간 랭킹등 데이터베이스 기능을 활용 해야할경우 Node.js를 통해 만들 수 있다.

2. Node.js를 쓰는 이유

  1. 이렇게 Node.js를 이용하여 웹 브라우저와 무관한 프로그램을 만들 수 있게 되었으며 Node.js를 이용하여 서버를 만들 수 있다.
  2. 이전 Server-Client 웹사이트를 만들 때 프론트앤드는 JavaScript 를 사용하여 만들어야만 하며, 서버는 Reby, Java 등 다른 언어를 써서 만들었어야 했는데 마침내 한 가지 언어로 전체 웹 페이지를 만들 수 있게 된 것이다.

3. Node.js 특징

  • 이벤트 루프(event loop)를 사용한다.(여러 이벤트가 동시에 발생 했을때 어떤 순서로 콜백 함수를 호출 할지를 이벤트 루프가 결정하는것이다.)

3.1 Event-driven

  • 이벤트 기반(Event-driven)이란 이벤트가 발생할 때 미리 지정해둔 작업을 수행하는 방식을 의미
  • 이벤트 기반 시스템에서는 특정 이벤트가 발생할 때 무엇을 할지 미리 등록해두고, 이를 이벤트 리스너에 콜백함수를 등록한다.
  • 이후 이벤트가 발생하면 리스너에 등록해둔 콜백함수를 호출하며, 이벤트가 끝난 후 노드는 다음 이벤트가 발생할 때까지 대기

3.2 Non-blocking I/O

  • 이벤트 루프를 잘 활용하면 오래 걸리는 작업을 효율적으로 처리할 수 있다.
  • 특히 파일 시스템 접근, 네트워크를 통한 요청 작업은 입력(Input)/출력(Output)의 일종이며,
    이러한 작업을 할 때 노드는 논 블로킹 방식으로 처리한다.
  • 논블로킹이란 이전 작업이 완료될 때까지 대기하지 않고 다음 작업을 수행하는 것을 의미한다.

예시)

  • Node.js로 만든 영화예매 서버: 모든 요청을 다 받은 뒤 처리속도가 빠른 결과부터 처리해서 요청을 처리함
  • 일반 언어로 만든 영화예매 서버: 중간에 버거운 요청을 받을경우 서버는 멈춰서 받은 요청을 먼저 해결하고 다음요청을 받는다.

결론

  1. 노드는 싱글스레드,Non-blockin 모델을 채용하므로 I/O요청이 많이 필요할 경우 노드를 서버로 사용하는것이 좋다.
    BUT. CPU부하가 큰경우 적합하지 않다.
  2. 갯수는 많지만 크기가 작은 데이터를 실시간으로 주고받는경우 Node.js가 적합하다.(이미지처리,통계분석 서비스는 어려움)
    EX) SNS채팅 서비스
  3. 코드가 짧고 쉬워 빠른 개발이 가능하다.(start 기업들이 사업을 할때 Prototype으로 서버를 사용하기 위해 자주 사용함)
profile
이게 되네?

0개의 댓글