솔적솔적

node.js + 망고DB 본문

Front-end/node.js + mongoDB

node.js + 망고DB

카드값줘체리 2022. 9. 5. 21:18

node.js + mongoDB를 이용하여 투두리스트를 만드는 것을 목표 진행하기전에

#node.js가 무엇인지에 대해서 알아보고 시작해요.

 

 

목표1. node.js는 무엇인지 이해하기
목표2. node.js로 서버를 만드는 이유는?

 

node.js란

javascript를 브라우저말고도 로컬pc에서도 실행시킬 수 있는 실행환경

여기서 javascript란 뭐죠?
네, 자바스크립트는 html에 종속된 언어로 웹페이지안에서 바꿔주는 기능을 합니다.
그럼 이 html조작과 변경이 가능한 자바스크립트는 누가 실행시키는지 아십니까?
맞아요, 브라우저예요.

요 브라우저가 자바스크립트 해석을 담당하지요.
또한 브라우저마다 자바스크립트를 해석하는 엔진이 각각있는데,

 

 

javascript의 해석엔진들은
크롬 👉 V8
모질라 👉 SpiderMonkey
익스플로우 👉 chakra

이있습니다.

 

 

여기서
자바스트립트 해석빠른 크롬의 V8을

똑! 떼어내서 이 자체로 출시를 하게되고..

그게 바로 'node.js' 인겁니다.

 

node.js는 원래 크롬의 자바스크립트의 해석엔진

이렇게 따로 node.js는
js언어를 꼭 브라우저 내에서 사용하는 것이 아닌, 다른 환경에서도 실행할 수 있게 하기 위해만들어졌습니다.

(브라우저를 안켜도 Node.js만 있으면 자바스크립트 문법실행이 된다는 것.)

Node.js 덕분에 JavaScript를 프로그래밍 언어처럼 사용하기 시작함(서버도 만들 수 있음)

그리고 사람들은 이 node.js로 서버를 만들기도합니다.

 

 


그럼 왜 node.js로 서버를 만들까요?

그건 바로 Non-blocking I/O 의 장점 때문입니다.

예를 들어서 요청처리하는 2개의 서버가 있다.

일반 서버 vs node.js로 만든 서버를 비교해봅시다.

샌드위치가게 서버(일반 서버)가 있는데


사람들이 한 명당 주문을 하는데 주문함과 동시에 차례대로 요청을 받고 응답을 해줍니다.

 

근데 이 사람들 중 한 사람이

저, 샌드위치 300개 포장 을 요청하면 그 응답대로 걸리는 시간이 많이듭니다.
그럼, 그 50개 포장하는 사람의 다음 사람은 그 걸리는 시간을 같이 기다려야하는 것이고요,

중간에 버거운 요청을 만나면, 서버가 다른 요청을 받을 수 없는 단점이 보이지요?

그럼 이제 노드.js로 만든 서버, 샌드위치가게가 있어요.

이 가게는 요청을 먼저 다 받습니다.
그 후 처리하는 것이 빠른 것부터 응답해주고 어려운 작업들은 나중에 처리하게하죠.

이게 바로 Node.js의 non-blocking i/o특징입니다.

 

 

 

요즘은 SNS, 채팅서비스개발을 많이하는데 이 특징은 서버가 몇 십만개의 요청을 처리할 수 있어야합니다. 이 몇십만건의 데이터요청을 처리해야하는데, 그럴려면 전통적인 서버인 경우에 서버가 멈출 수 있으나,
node.js의 경우에는 무거운 요청, 오래걸리는 요청이 있어도 멈추거나 요청 대기시간이 없다는 장점이 있다는 것입니다.

근데 사실 이런 SNS,채팅 서비스 작업을 꼭 node.js만 할 수 있다는 것은 아닙니다.
서버 스케일링 or 멀티 쓰레딩으로 동시응답처리를 할 수 있어요.

 

 

 

다시 돌아가서,

논블로킹 덕분에 채팅/SNS에 요즘 자주 이 node.js를 쓴다하며
또 다른 강점은 몇줄만 입력하면 비교적 쉽게 개발할 수 있는 다는 것입니다. (코드가 매우 짧고 쉬움)

또 node.js는

  • 빠르게 시범을 보여야할 때도 특히 프로토타입을 만들기에도 좋습니다.
  • 자바스크립트 문법만으로 프론트와 백엔드를 전부 할 수 있다는 것과
  • 비교적 코드들이 짧기 때문에 초보단계에서 쉽게 접할 수 있으며,
  • 갑자기 유저의 대량 요청이 들어와도 서버가 꼴까닥 죽지않고 감당가능하지요.

 

 

 

그럼 이렇게 다양한 장점을 가지고 있는 node.js.

다음부턴 이 node.js가 위 말이 정말인지 직접 만들어가며 알아보도록하겠습니다.

 

 

 

< 오늘의 기억거리 >

🍖 목표1. node.js는 무엇인지 이해하기
      👉 자바스크립트를 브라우저 없이 사용할 수 있는 실행창, 실행환경이며

           원래 각 크롬안의 자바스크립트 해석엔진(V8)이었으나 해석능력이 출중하여
           따로 똑 떼어서 만들어낸 v8의 진화버전

 

 

🍖 목표2. node.js로 서버를 만드는 이유는?

     👉 node.js는 무거운 요청, 오래걸리는 요청이 있어도 멈추거나

          요청 대기시간이 없다는 장점과 몇줄만 입력하면 비교적 쉽게 개발할 수 있다. (코드가 매우 짧고 쉬움)