본문 바로가기
Node.js/Node.js | Express.js

Node JS란?

by CodeMia 2021. 9. 22.

일단 html과 javascript가 무엇인지 알아보자.

 

html 란?

웹페이지를 만들기 위한 언어이다 

워드와 비슷하게 글 쓰고 그림넣는 언어 정적인 페이지만 가능하다 

 

Javascript 란?

HTML페이지에 종속된 언어이며

HTML을 조작하는 언어이다.

연산을 위해 만든 언어가 아니다. 

 

자바스크립트는 누가 동작시키는 것일까?

브라우저가 동작시킨다.

각각 자바스크립트 동작시키는 브라우저 엔진들이 있다.

 

크롬: V8

인터넷익스플로어: Chakra

모질라: SpiderMonkey

 

 Node.js 의 시작 

여기서 크롬의 V8 엔진을 따로 떼서 출시하게 되는데

이 것이 Node.js이다. 

 

이로서 자바스크립트가 브라우저에서 벗어나 

컴퓨터 하드웨어와 직접 소통하게 되었다.

내 컴퓨터에 있는 파일 시스템이나 네트워킹 프로세스 등에 직접 접근이 가능하다. 

 

컴퓨터에서 사용하는 에플리케이션을 만들 수 있게 되었다. 

예를 들면 코드에디터 ATOM도 Node.js로 만들어졌는데

atom이 내 컴퓨터에 있는 파일을 불러오기 할 수 있다. 

 

Node.js는 그냥 자바스크립트 실행창, 실행 환경이라고 생각하면 된다 (=runtime)

그래서 NodeJS 설치하면 브라우저 콘솔말고도

컴퓨터 CLI(터미널)에서도 실행이 가능하다. 

 

 

웹사이트 만들 때도 Node.js 를 쓴다. 

Node.js를 내컴퓨터에서도 돌릴 수 있지만,

다른 사람의 컴퓨터에서도 돌릴수 있다. 

대표적으로 서버가 있다.

유저 사이드인 브라우저에서가 아닌

서버에서 자바스트립트의 코드를 실행해 유저에게 결과를 보낼 수 있게 되었다.

 

 

Node.js 를 서버 만들 때 많이 쓰는 이유

서버: 요청을 처리하는 기계 

1. 언어가 쉬어서 

2. Non-blocking I/O라서 

 

Non-blocking I/O 이란? 

예시로 설명해 보면

영화관 웹 서버를 하나 만들었다

 

일반 서버인 경우

고객1: 티켓 1장 예매요.

서버: 아라써~

고객2: 티켓 2장 예매요.

서버: 아라써~

고객3: 티켓 300장 예매요.

서버: ....(한참 걸림) 

단점: 다른 요청을 못받음.

고객4: (무한 기다림)..

 

Node.js 서버인 경우

일단 요청을 다 받음

고객1: 티켓 1장 예매요.

고객2: 티켓 2장 예매요.

고객3: 티켓 300장 예매요.

고객4: 티켓 2장 예매요.

 

순서 상관없이 빨리 처리 된 것부터 처리 해줌 

고객1님 티켓 1장 받아요

고객2님 티켓 2장 받아요 

고객4님 티켓 2장 받아요

...

고객3님 좀 기다리세요....(10초후) 여기요.

 

NodeJS 장점

1. 채팅, SNS 개발 할 때 많이 유용하다. 

일단 요청을 다 받아들이니 서버에 멈춤이 없다. 

일반 서버도 스케일링해서 카운터를 X16으로 늘리면 가능하긴 하다.

scale up: 서버 자체를 키움

scale out: 서버 갯수를 늘림

물론 NodeJS도 카운터 늘릴 수 있다. 

 

2. proto type 만들 때 좋다

스타트업에서 일단 만들어보고 반응볼 때 많이 씀

코드가 쉽고, pivoting도 잘된다.

 

3. 웹서비스에 특화 

웹서비스에 특화 되었다.

 

단점

1. 이미지 처리 어려움

이미지 처리 잘하는 API 없음

이미지 처리를 해야한다면 c계열이나 파이썬 써야 한다. 

 

2. 수학,통계, 분석 어려움

수학,통계, 분석은 파이썬을 써야한다. 

 

 

NodeJS 쓰는 회사

uber, netflix, tweetter, ebay.. 등등

점점 많은 회사에서 쓰고 있다. 

 

NodeJS 다운받기

https://nodejs.org/en/

 

 

-- 출처 -- 

https://youtu.be/k2GWnDb5zoQ

댓글