
코딩애플님의 Node.js, MongoDB로 2시간 만에 빠르게 웹서비스 만들기 강의를 듣고 복습의 목적으로 작성하였습니다
Node.js은 무엇인가
Html은 정적인 언어이다. 페이지에 글을 보이고 이미지를 보이고 움직임은 없는 화면에 출력만하는 언어이다.
Javascript는 그런 html을 움직이게 해주는 언어이다. html을 조작하고 변경할수 있다.
javascript언어는 각 브라우저에 존재하는 해석 엔진을 통해 실행을 한다
브라우저들중 chrome은 V8이라는 해석 엔진을 통해 JS를 이해한다.
Node.js는 chrome의 V8엔진으로 이루어져 있다. 기존 브라우저에서만 JS를 해석하는 기능을 뛰어넘기 위해서이다.
node.js는 브라우저 뿐만 아니라 서버 등에서 활용가능한 확장성이 있는 소프트웨어 플랫폼이고, 자바스크립트를 활용하며 논블로킹(Non-blocking) I/O와 단일 스레드 이벤트 루프를 통한 높은 처리 성능을 가지고 있다.
Node.js의 Non-blocking이라는 장점을 알아보자
개발자가 열심히 연구를 해서 햄버거 자판기를 만들었습니다.
A 자판기는 blocking방식으로 B 자판기는 non-blocking방식으로 만들었습니다.
4명의 고객이 존재하는데
1번 고객은 불고기버거 1개
2번 고객은 새우버거 2개
3번 고객은 치즈버거를 100개
4번 고객은 불고기버거 1개를 주문합니다.
A 자판기는 순서대로 주문을 받고 음식을 드립니다.
3번 고객의 주문을 받고 음식을 만들때 100개의 버거이기 때문에 1번,2번 고객의 주문 소요시간보다 오래 걸립니다.
4번 고객은 기다리다가 버거 하나만 시킬 건데 왜이렇게 오래 걸리냐고 화를 냅니다
버거가게 알바를 하다보면 자주 겪는 일입니다
B자판기는 고객의 주문부터 받습니다.
그리고 순서와 상관없이 가장 먼저 끝난 음식부터 고객에게 드립니다.
적절한 비유였는지 모르겠지만, non-blocking은 명령이 들어가 있어도 멈추지 않습니다.
그래서 blocking 방식보다 더 빠른 처리속도를 보여줍니다.
'백엔드 > node' 카테고리의 다른 글
| [Node.js/MongoDB] Html파일 전송하기 (0) | 2022.12.14 |
|---|---|
| [Node.js/MongoDB] nodemon (0) | 2022.12.14 |
| [Node.js/MongoDB] Express와 get으로 읽기 (0) | 2022.12.14 |
| [Node] fs로 HTML 읽기 (0) | 2022.11.27 |
| [Node] HTTP서버 만들기 (0) | 2022.11.27 |