Node.js란 무엇인가?

YOOJIN PARK·2021년 12월 26일
0

node.js공부하기

목록 보기
1/3

수업을 통해 node.js를 배웠다.
자바스크립트의 런타임이다.
저걸로는 잘이해가 가지 않아서,node.js가 뭔지, 어디서, 어떻게 쓰는 건지 정리해보려 한다.

1. Node.js는 무엇인가?

Node.js는 chrome v8 JavaScript 엔진으로 빌드된 JavaScript 런타임이다.

사실 나의 고민은 저 말뜻이 잘이해가 가지 않는것부터 시작했으니, 저 말뜻을 해석하는 것부터 시작하려 한다.

  • 일단, 웹애플리케이션을 개발할때 우리는 자바스크립트를 사용하는데, 모든 브라우저는 자바스크립트 코드를 해석하기 위해 자바스크립트 엔진을 내장하고 있다. 이때 크롬에서 사용 하고 있는 것이 v8 자바스크립트 엔진 이다.

  • Node.js는 크롬이 v8을 이용하여 자바스크립트를 해석하듯이, 서버에서 자바스크립트가 동작할 수 있도록 하는 환경을 만들어주는 것 을 말한다.
    + 모두 알고있겠지만, 런타임은 프로그램이 실행되고, 존재하는 그 곳, 즉 프로그램 언어가 구현되는 환경을 말한다.

결론적으로 내가 이해한 Node.js는 v8을 이용해서 서버가 자바스크립트를 해석하게 해줄 수 있도록 한것이다.


2. Node.js를 왜 써야 하는가?

자바스크립트는 원래 웹 브라우저 안에서만 사용할 수 있도록 제작 되었다.
이를 웹 브라우저에서 독립적으로 사용하기 위해 만들어 낸것이 Node.js이다.
Node.js를 이용하면 웹브라우저 없이 프로그램을 만들 수 있고, 서버도 만들 수가 있다.
그래서 이전에는 서버, 클라이언트를 만들때, 웹에서 표시되는 부분은 따로 자바스크립트로 만들고, 서버는 Java같은 다른 언어로 만들었는데, 이제는 자바스크립트로 전체 웹페이지를 만들 수 있다.

(출처: 위키피디아)


3. Node.js는 어떤게 좋은가?

  • 새로운 언어를 배울 필요 없이 알고 있는 언어를 쓸 수 있다.

  • 자바스크립트 기반으로 되어 있어서, 클라이언트/서버에 고려하지 않으며 독립적 수행이 가능하다

  • 구글의 자바스크립트 엔진을 사용하기 때문에 구글이 엔진 성능 업그레이드를 계속 하고 있다, 속도도 빠르다.

  • 이벤트 기반 비동기 방식

    • 의미 : 싱글 스레드 기반으로 동작하는 서버에 이벤트를 사용하여 비동기 방식으로 요청 처리
    • 장점 : 요청을 처리하는 동시에 다음요청을 받을 수 있어 빠른 처리가 가능하다.
    • 예시 : 까페에서 주문을 받고 음료를 주는 점원은 한명이고, 바리스타는 여러명, 내가 아아을 시키고 뒤에 사람이 라떼을 시켰으면, 내가 아아을 주문하고 아아가 만들어지는 동안 라떼 주문이 들어가고, 동시에 냉면이 만들어 질 수 있다.--> 계산하는 점원== 싱글 스레드, 바리스타==스레드 풀
    • 이벤트 기반: 이벤트가 발생하면 입력장치로 데이터를 전송할때만 작동
    • non-blocking I/O : 작업 중이라도 다른 작업을 할 수 있도록 준비
  • 하지만 결론적으로는 싱글 스레드기 때문에 메모리 사용량이나 시스템 리소스 사용량은 변화가 거의 없다.

  • npm을 이용해 다양한 모듈 제공



4. Node.js로 언제쓰지?

  • 기존의 프론트엔드의 기술과 Node.js를 접목하여 프론트 엔드뿐아니라 백엔드를 포괄하는 애플리케이션을 만들 수 있다.
  • 최근 SPA가 당연해지면서, Node.js에 대한 관심인 많아 지고 있다.
  • 간단한 로직, 빠른 응답시간, 비동기가 필요한 네트워크 스트리밍 서비스, 채팅 비스 등은 Node.js을 사용해서 제작 할 수 있다.

🙋‍♀️ 그럼 프론트엔드 개발자를 바라보는 우리에게는 Node.js로 서버를 어떻게 만드는지가 궁금해 진다.

const http = require('http'); 
http.createServer((request, response) => { 
  console.log('server가 만들어졌습니다!!');  
}).listen(8080);
  • 일단 Node.js는 웹서버('http')가 내장되어 있기때문에 코드를 통해 서버를 만들 수있다. 이를
    require('http')를 통해 불러와준다.
  • 그리고 createServer를 이용해서 서버를 만들어 주고, 서버가 실행된 후의 동작을 콜백함수로 등록해확인한다
  • 마지막으로 listen을 통해 포트에 연결해준다
  • 80은 다른 프로그램이 많이 쓰고 있어서 충돌이 자주 발생한다고 하니, 자기 컴퓨터에서는 다른 포트를 쓰고, 서버에 올릴때는 80번으로 올리는게 좋다.

const http = require('http');
http.createServer((request, response) => {
  return request
    .on('error', (err) => { // 요청에 에러가 있으면
      console.error(err);
    })
    .on('data', (data) => { // 요청에 데이터가 있😁으면
      console.log(data);
    })
    

그럼 이제 request와 responese를 이용해서 필요한 정보를 요청하고 전달 받는 과정을 만들게 된다.
이때 에러가 있을 수도 있으니, 에러 처리를 꼭 해줘야 한다..


이런식으로 서버를 만들어서 필요한 정보를 요청하고 전달받을 수 있다.
우선은 node.js에 대한 정보는 이쯤으로 정리하고, 실제로 여러가지 실행해보면서 정리를 좀 더 해봐야겠다.

profile
개발자를 꿈꾸는 개린이입니다.

0개의 댓글