[node.js] server와 node.js의 개념

들블리셔·2022년 10월 21일
0

Node.js를 알기 전 server에 대한 개념을 알아야 한다.

server란?

HTTP요청을 하면 요청한 내용을 보내주는 프로그램이다.
쉽게말해 요청 처리를 해주는 기계이다.

식당을 빗대어 말하면 식당 종업원과 같은 역할이다. 손님(클라이언트)으로서 어떤 메뉴를 요청하고 그 요청을 처리를 하는 종업원 이 종업원을 server라고 생각하면 쉽게 이해가 된다.

HTTP요청에는 4가지 형식이 있다

  1. 쓰기 (POST요청)
    • 댓글 작성
    • 게시글 작성

  2. 읽기 (GET요청)
    • url 네이버 뉴스 페이지 접속 => news.html 보내줘

  3. 수정 (PUT요청)
    • 게시글 수정

  4. 삭제 (DELETE요청)
    • 게시글 삭제

REST API에서는 이것을 crud라고 하는 것 같더라.





Node.js란?

공식 사이트에서는 Chrome V8 Javascript엔진으로 빌드된 Javascript 런타임이고 Node.js는 논 블로킹i/o모델을 사용 한다고 정의되어있다.


내가 보는 강의에서 배운대로 쉽게 풀어서 말해보겠다..

모든 인터넷 브라우저는 javascript를 해석하는 엔진이 있다.
Chrome 브라우저가 유난히 다른 브라우저보다 더 빠른 이유인 이유는
V8이라는 엔진을 사용해서이다.
V8엔진은 다른 브라우저의 엔진 보다 빠르고 깔끔하다고 평가가 된다고 하더라.

좋게 평가되는 V8엔진만 따로빼서 만든 것이 Node.js라는 실행 플랫폼이다.

자바스크립트 언어를 브라우저내를 제외하고도
다른환경에서도 실행할 수 있게 하기 위해 만들었다.

장점으로 코드가 매우 짧고, 쉬워서 서버를 쉽게 만들 수 있다.

쉽게 말해서 그냥 자바스크립트 실행창,실행환경 이다.

Non-blocking i/o란?

설명을 들었을때 비동기랑 비슷하다고 생각했다. 무슨 차이점인지는 당장 내 영역을 벗어난 개념인 것 같다.

본론으로 Non-blocking i/o의 개념에 대한 예를 들어보자

예를 들어 음료주문 서버가 있고
a,b,c,d 서로다른 4명의 손님이 요청(주문)을 한다고 가정해보자.

1. 일반 프로그래밍 언어로 개발시

4명의 클라이언트가 차례로 줄을 서서 요청을 했다.

a는 a라는 음료를, b는 b라는 음료를 요청한다.

그런데 c가 c라는 음료를 대량 주문으로 100잔을 요청을 한다.

100잔 요청을 받고 다 만들어 지기 전까지 다음 사람의 요청을 중단한다.

기다리는 동안 d 이후의 요청은 계속 미루어져 있는 상태이다.


2. node.js로 개발시

일단 모든 요청만 다 받아놓는다.

빨리 처리되는 요청 먼저 보내주고 나서 오래 걸리는 요청을 처리한다.

이런 특징이 Non-blocking i/o의 특성이다.



결론

Non-blocking i/o의 특성으로 sns,채팅서비스처럼 요청이 많거나 오래걸려도 멈추거나 요청 대기시간이 없다.

그렇다고 일반적인 프로그래밍 언어로 만든 서버라고 해서 느린 것이 아니다.

서버의 인스턴스 수를 늘리면 된다고 한다. (주문 창구 늘리는 개념)

profile
나의 공부방

0개의 댓글