Node.js로 서버를 만들 때 특징적인 점은?

Patrick·2021년 6월 20일
0

Node.js

목록 보기
2/3
post-thumbnail

서버를 만드는 방식은 크게 두 가지로 구분 될 수 있다.
바로 전통적인 서버 동작 방식과 Node.js를 통해서 만든 서버동작 방식 이렇게 두 가지를 구분해보려고 한다.

우선 전통적인 서버 동작 방식 즉, Monolith Server 방식을 보자!
서버는 한 서버 내에서 Database를 가지고 있거나, Cloud나 다른 서버에서 Database를 가지고 있는 경우도 있고, 하나의 서버가 아니라 여러 개의 서버를 두게 됨으로써 데이터를 공유하는 방식 등이 있다.

이런 서버는 멀티스레드(Multi Thread) 방식이기 때문에 스레드 풀(Thread pool)이 있다.
한 서버에 만들 수 있는 Thread 갯수는 제한적이기 떄문에 만들 수 있는 Thread를 보관하고 있는 Thread pool이라는 것이 존재한다.

클라이언트에서 요청(request)이 들어오면 이를 실행하기 위해서 하나의 Thread를 할당하게 되고, 또 다른 요청이 들어오면 그 요청을 처리하기 위해서 또 다른 Thread를 할당하게 된다.

그렇다면 Node.js를 이용해서 만든 서버는 어떨까?
Node.js는 하나의 메인 싱글 스레드(Main Single Thread) 방식을 이용한다.
요청이 들어오면 Database, Network 등에게 일을 처리해달라고 패스하고 다른 요청을 또 받게 된다.
하나의 Main Thread가 요청을 받아서 이 후 처리해야하는 것들에 던져놓고, 그것에서 해결을 하면 해당하는 요청을 보낸 클라이언트에게 그 정보를 전달해주게 된다.

즉, Node.js에서는 하나의 Thread가 다양한 요청을 받아서 그 요청이 완료될 때까지 기다리는 것이 아니라, 그 일을 처리할 수 있는 Database, Network 등에게 일을 위임해둠으로써 여러가지 요청을 빠르게 처리할 수 있도록 한다.

물론 일을 처리할 수 있는 얼마나 많은 Database 등이 있는지에 따라 다르지만 기본적으로 다수의 요청을 받아들일 수 있다는 점에서 차이가 있다고 할 수 있다!

profile
예술을 사랑하는 개발자

0개의 댓글