1. Node.js 정의
Node.js는 서버가 아니다.
Node.js는 자바스크립트 런타임이다.
그렇다면 런타임은 뭘까?
런타임은 프로그램이 구동되는 환경을 뜻하는데,
간단히 말해 '실행환경'과 같다.
실행환경이란 말이 잘 와닿지 않을 수 있다.
실행환경을 바다, 혹은 공기라고 생각해보자.
물고기는 바다라는 (실행)환경 속에서 살아갈 수 있다.
사람은 공기라는 (실행) 환경 속에서 살아갈 수 있다.
자바스크립트의 경우 Node.js란 (실행)환경이 나오기 전엔
브라우저란 환경 속에서 살아갈 수 있었다.
위의 이미지는 console.log라는 자바스크립트 코드를
(크롬)브라우저에서 작성한 뒤 실행했을 때의 모습이다.
안녕 세상아!란 문자가 출력된 게 보일 것이다.
이렇게 자바스크립트가 돌아가는 (실행)환경이 예전엔 브라우저였었다.
그런데 Node.js가 등장한 후부턴 브라우저가 아닌 다른 환경에서도 돌아갈 수 있게 되었다.
마치 물고기가 바다라는 환경 뿐만 아니라
공기 중에서도 살아갈 수 있게 된 것과 비슷하다.
자바스크립트 코드를 브라우저가 아닌 다른 환경에서
작성해도 실행할 수 있도록 해준 게 Node.js다.
위에서 Node.js가 자바스크립트의 런타임이라고 했었다.
이 말은 Node.js가 자바스크립트의 실행환경이란 말과 같다.
즉 자바스크립트 코드가 돌아갈 수 있도록 해주는 환경이 Node.js란 거다.
2. Node.js를 왜 사용할까?
자바스크립트 코드가 돌아갈 수 있도록 해주는 환경을
제공해주는 게 Node.js라고 했다.
이 Node.js를 통해 우리는 웹 서버를 개발할 수 있다.
여기서 웹 서버란?
클라이언트에서 보내는 요청을 처리하고
결과를 보내주는 프로그램이란 뜻이다.
예) 내가 주소창에 naver.com을 입력해서 naver 사이트를 보여줘!라고 했다 하자.
내가 사이트를 보여달라고 요청(request)한 것이니,
내 요청에 대한 답을 누군가 해줘야 한다.
여기선 그 누군가가 네이버 컴퓨터(서버)가 된다.
네이버 컴퓨터가 내 요청에 대한 답으로
네이버 웹 페이지 파일을 내 브라우저로 보내준다.
즉 네이버 웹사이트를 내 눈 앞에 보여줌으로서
내 요청에 응답(response)을 해준 것이다.
이렇게 클라이언트(=나)에서 보내는 요청(=네이버 사이트 보여줘!)을
처리하고 적절한 결과(=네이버 사이트 보여줌)를 보내주는 프로그램이 웹 서버다.
Node.js의 경우 빠른 성능을 자랑한다.
그래서 아래와 같은 경우 Node.js를 사용하는 것이 좋다.
- 내가 만들 웹이 리얼타임이다.
여기서 리얼타임이란 어떤 요청을 신속하게 처리하여 응답 하는 것을 뜻한다.
- 내가 만들 웹은 빠른 실행과 성능이 중요하다.
왜 Node.js는 빠른 처리가 가능한 걸까?
그 이유는 Node.js가 비동기적 방식을 사용하고 있기 때문이다.
비동기적 방식의 반대되는 말이 동기적 방식인데
동기적 방식은 하나씩 순차적으로 일을 해결해 나가는 것이고
비동기적 처리 방법은 한번에 여러 일을 시작하는 것이다.
비동기라는 친구는 전화를 하면서 동시에 메일도 쓰고, 보고서도 읽는 게 가능하다.
동기라는 친구는 전화가 다 끝난 후에야 메일을 쓸 수 있고,
메일을 다 쓰고 난 뒤에야 보고서 읽는 게 가능한 것이다.
Node.js가 비동기적 처리 방법을 사용하기에,
즉 한번에 여러가지 일을 할 수 있기에 빠른 처리가 가능한 것이다.
'IT > Node.js' 카테고리의 다른 글
[Node.js] __dirname이 뭘까? (0) | 2023.02.14 |
---|---|
[Node.js] express가 뭘까? (0) | 2023.02.10 |
[Node.js] http 모듈은 뭐고, req와 res는 또 뭘까? @@ (0) | 2023.02.09 |
[Node.js] 모듈이 뭘까? - 레고로 설명하는 모듈 개념 (0) | 2023.02.09 |
[Node.js] 'npm'이 도대체 뭘까? - 5분 만에 npm을 이해해 보자! (0) | 2023.02.04 |