(Node.js) Server Building

Mirrer·2022년 9월 3일
0

Node.js

목록 보기
1/12
post-thumbnail

Node.js

Node.js는 서버가 아닌 JavaScript 실행기

Node.jsV8이라는 JavaScript 엔진 위에서 동작하는 JavaScript Runtime으로 JavaScript를 서버에서도 사용할 수 있도록 만든 프로그램이다.

서버를 구성할 때는 Node.js가 자체적으로 제공하는 http 모듈을 사용한다.

Node.jsJavaScript를 사용하기 때문에 Front-End, Back-End 모두 같은 언어로 처리할 수 있다.


Server Scaling

서버에 비대칭적으로 많은 양의 요청이 오는 경우에 CPU, 메모리...등이 부족해서 서버가 터지는 현상이 발생한다.

그래서 대규모 프로젝트에서는 특정 API에 요청이 집중되었을 때를 대비하여 Server Scaling 작업을 한다.

Server Scaling새로운 컴퓨터를 생성해 기존 컴퓨터를 복사하여 한쪽으로 몰리는 요청을 분산시켜 문제를 해결한다.

하지만 Server Scaling은 한쪽에 집중되는 요청만을 위해 필요없는 부분까지 복사하기 때문에 불필요한 낭비가 발생한다.

그래서 프로젝트에서는 Front, Back을 분리하여 Front에서는 SSR(Server Side Rendering), Back에서는 API 서버로서 데이터만 가공하여 전달하는 역활만 담당한다.


Server Building

서버의 기본은 Front 서버가 요청을 보내면 응답을 하는것이다.

요청과 응답은 1:1대응되어야 하며 응답을 보내지 않는다면 특정 시간(30초정도) 후에 브라우저가 자동으로 응답 실패로 처리한다.

또한 여러 데이터가 필요하다면 한번에 묶어서 응답하거나, 여러번 요청을 보내 조금씩 응답하는 방법을 사용해야 한다.

Node.js를 사용해 서버를 구현하는 방법은 다음과 같다.


Back폴더 생성

프로젝트에 Front와는 개별적인 Back폴더를 생성한 뒤 아래 명령어를 통해 package.json파일을 생성한다.

npm init

http모듈 생성

루트 디렉토리에 app.js파일을 생성하여 아래와 같이 http모듈을 생성한다.

이 때 주의해야할 점은 Front와 달리 Node.js에서는 Webpack을 사용하지 않기 때문에 import문이 아닌 require문을 그대로 사용한다.

const http = require('http');
// req(request) = 브라우저, 프론트서버에서의 요청에 대한 정보
// res(response) = 응답에 대한 정보
const server = http.createServer((req, res) => {
  // req.url = URL 경로
  // req. method = HTTP가 지원하는 요청 방식
  console.log(req.url, req.method);
  
  if (req.method === 'GET') {
    if (req.url === '/api/posts') {

    }
  } else if (req.method === 'POST') {
    if (req.url === 'api/post') {

    }
  } else if (req.method === 'DELETE') {
    if (req.url === 'api/post') {
      
    }
  }
  
  res.write('<h1>Hello Node1</h1>');
  res.write('<h2>Hello Node2</h2>');  
  res.write('<h3>Hello Node3</h3>'); // write는 여러줄사용할때
  res.end('<h4>Hello Node4</h4>'); // end는 마지막에만
});

server.listen(3065, () => {
  console.log('서버 실행 중');
});

http모듈 실행

아래 명령어를 통해 http모듈을 실행하면 모듈 Runtime이 코드를 실행하여 http가 서벼역활을 다음과 같이 수행한다.

node app.js


Nodemon

Node.js가 실행하는 파일이 속한 디렉터리를 감시하며 파일이 수정되면 자동으로 애플리케이션을 재시작하는 확장 모듈

서버의 코드를 변경하면 서버는 이전 코드를 기억하고 있기 때문에 자동으로 반영이 되지 않는다.

그래서 코드를 수정하면 서버를 재실행해야하는 번거로움이 있는데 Nodemon을 사용하면 이러한 단점을 해결하여 재시작 없이 코드를 자동 반영 할수 있다.

NodemonNode Monitor의 약자로, 이름 그대로 디렉터리를 감시하면서 파일이 수정되면 자동으로 노드 애플리케이션을 재시작한다.


사용 방법

  1. 아래 npm명령어를 통해 Nodemon을 설치
npm i -D nodemon
  1. package.jsonscripts부분을 아래와 같이 수정
"scripts" {
  "dev": "nodemon app"
}
  1. 아래 npm명령어를 통해 Nodemon을 실행
npm run dev

참고 자료

Node.js 공식문서
Node.js 교과서 - 조현영
React로 NodeBird SNS 만들기 - 제로초

profile
memories Of A front-end web developer

0개의 댓글