1. Node.js란?
Node.js란 Chrome V8 Javascript엔진으로 빌드된 JavaScript 런타임(프로그래밍 언어가 구동되는 환경)이다.
예전에는 자바스크립트 런타임이 브라우저 밖에 존재하지 않았는데 이를 극복하기 위해 Node.js가 나온 것이다.
https://perfectacle.github.io/2017/06/18/what-is-node-js/
1) Node.js의 특성
가. 비동기 이벤트 기반(event가 동작하면 action 발생 - vs 쓰레드 기반의 동시성 모델)
cf. 쓰레드 기반의 동시성 모델 : 쓰레드 여러 개가 빠른 시간 안에 전환하면서 일처리를 진행- 다수의 작업이 동시에 진행되는 것 처럼
나. 논 블로킹 I/O모델 구현
https://hanamon.kr/nodejs-%EA%B0%9C%EB%85%90-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0/
이벤트가 발생할 때 미리 지정해둔 작업을 수행하는 방식으로 특정 이벤트가 발생할 때 무엇을 할지 미리 등록해 두고, 이를 이벤트 리스너에 콜백함수로 등록한다. 이벤트가 발생하면 콜백함수를 호출하고 이벤트가 끝난 후 노드는 다음 이벤트가 발생할 때까지 대기한다.
Node.js는 싱글스레드, 논 블로킹 모델로 싱글 스레드가 혼자서 일을 처리하지만 들어오는 요청 순서가 아닌 논 블로킹 방식으로 이전 작업이 완료될 때까지 대기하지 않고 다음 작업을 수행한다.
2) NODE_ENV : production ( 배포 ) 모드, development ( 개발 ) 모드
가. production 모드 일때는
- 파일 캐싱, 에러 메시지 감추기 등 배포의 적합한 환경 설정
나. development 모드 일 때는
- 파일 캐싱 방지, 디버그를 위한 상세한 에러 메시지 보이기 등 개발에 도움을 줄 수 있는 환경으로 설정
다. scripts에 사용
{
"scripts": {
"build": "cross-env NODE_ENV=production webpack --config build/webpack.config.js"
}
}
https://www.npmjs.com/package/cross-env
Node.js - Node.js & NPM - https://sjparkk-dev1og.tistory.com/m/38
라. cross-env
https://inpa.tistory.com/entry/NODE-%F0%9F%93%9A-cross-env-%EB%AA%A8%EB%93%88-%EC%82%AC%EC%9A%A9%EB%B2%95
2. require(), module.exports(), exports()
1) require() :
node.js에서 모듈을 불러오기 위해 require()함수를 사용한다.
https://medium.com/@chullino/require-exports-module-exports-%EA%B3%B5%EC%8B%9D%EB%AC%B8%EC%84%9C%EB%A1%9C-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0-1d024ec5aca3
3. 자바스크립트 런타임 환경
4. nginx와 node.js의 관계
https://sjparkk-dev1og.tistory.com/53
'DevOps' 카테고리의 다른 글
PM2, Nginx //front app 배포 (0) | 2023.06.13 |
---|---|
Docker & Kubernetes (0) | 2023.01.29 |
AWS EC2 + Docker + AWS ECS를 통한 orchestration (1) | 2023.01.23 |
CI(Continuous Integration)/CD(Continuous Delivery) (0) | 2023.01.11 |
Infra 인프라 (0) | 2022.11.19 |