Node.js 란 무엇인지

바닷국·2021년 4월 6일
0

Node.js란?

웹 브라우저에 종속적인 자바스크립트에서 외부에서 실행할 수 있는 Runtime 환경을
Chrome V8 엔진을 제공하여 여러 OS 환경에서 실행할 수 있는 환경을 제공한다. 이것을 Node.js 라고 정의할 수 있다고 한다.

동기적인 처리를 할 때 자바스크립트는 컨텍스트 상 호출 스택(선입후출) 구조에서 가장 나중에 처리된 것이 가장 먼저 처리되는 현상을 볼 수 있다.

큐(선입선출)

function first() {
   second()
   console.log('첫 번째 실행')
}
function second() {
   third()
   console.log('두 번째 실행')
}
function third() {
   console.log('세 번째 실행')
}
first()

Javascript 의 싱글스레드를 개선한 형태

멀티스레드를 흉내 낸 정도 ?

참고 블로그 : https://medium.com/day34/node-js-%EB%85%B8%EB%93%9C%EB%8A%94-%EB%AC%B4%EC%97%87%EC%9D%B4%EA%B3%A0-%EC%96%B4%EB%96%A0%ED%95%9C-%EA%B8%B0%EB%8A%A5%EB%93%A4%EC%9D%B4-%EC%9E%88%EB%8A%94%EA%B0%80-1-98e49e1100ab

Node 모듈

모듈 기능을 가지고 기능별 모듈화가 가능하다.

// 참고해야하는 파일
module.exports = {
    pool, connectionNonTransaction
};
//모듈을 사용할 때
const {pool, connectionNonTransaction, transaction} = require('../../../config/database'); // 파일 위치

PM2 무중단 서비스

node.js 의 프로세스 매니저 pm2
클러스터 모듈을 사용해 단일 프로세스를 멀티 프로세스로 늘릴 수 있는 방법을 제공한다.

클러스터 모듈을 사용해서, 마스터 프로세스에서 CPU 코어 수만큼 워커 프로세스를 생성해서 모든 코어를 사용하게끔 개발하면 된다.

  1. node js 의 패키지 매니저 npm 으로 설치
npm install -g pm2@latest
  1. 아무런 옵션 없이 start , 기본 모드인 fork 모드로 application 실행.
pm2 start app.js 

나는 클러스터 모드로 실행한 경험은 없고 그냥 fork 로만 했다.

그러나 모든 CPU 를 사용하기 위해서는 클러스터 모드로 실행해야 한다.

pm2에 관해 자세히 설명된 라인블로그 참조.
https://engineering.linecorp.com/ko/blog/pm2-nodejs/

pm2를 활용해서 서비스 운영하기.

어플리케이션의 반영을 위해 재시작 해야한다. reload

그러나 무거운 어플리케이션을 무작정 reload 하게 된다면, 에러에 직면할 수 있다.

그렇다면, 진정한 서비스 무중단 이라고 할 수 없다.

서비스 무중단을 위해서는?

SIGNINT 시그널을 리스닝하다가, 해당 시그널이 전달되면 app.close 명령어로 프로세스가 새로운 요청을 받는 것을 거절하고 기존 연결을 처리하게 둔다.

그 후 사용자 요청을 처리하기 충분한 killtimeout 을 설정하고 기존 유지되고 있던 연결이 종료되면 프로세스가 종료되게 한다.

profile
주니어 벡엔드 개발자

0개의 댓글