클라이언트의 요청에 대해 정보나 서비스를 제공하는 컴퓨터 장치
클라이언트와 서버는 상대적인 것 -> 누구나 서버 또는 클라이언트가 될 수 있음.
서버의 부하 : 많은 요청에 대해 서버가 처리하면서 부하가 걸림
스케일업(수직스케일링) : 서버의 사양을 높이는 방법
스케일아웃(수평스케일링) : 서버의 개수를 늘려 처리를 분산시키는 방법
로드벨런싱 : 컴퓨터 자원들에게 작업을 분산시키는 방법 (한 곳에 반복적으로 처리를 시키기보다 골고루 처리를 부담하는 것)
마이크로서비스 : 각 기능에 대해 구조화하는 소프트웨어 개발 기법 (기능별로 전문화시킴)
< NodeJS는 V8엔진으로 빌드된 JS 런타임입니다. >
: 웹브라우저 없이 웹서버를 실행할 수 있는 JS의 실행환경
브라우저에서만 동작하는 JS를 웹브라우저 없이 자바스크립트를 실행하기 위해 만들어짐. (웹서버가 내장되어 있음)
멀티 스레드 방식보다 쉬움, I/O작업이 많은 서버로 적합, JSON형식을 다루기 편함, 빠른 서버 개발이 가능(?)
이벤트 기반 : 이벤트 기반의 서버 작동 방식. 다음과 같은 방법으로 이벤트가 실행됨.
이벤트 등록 -> 이벤트 발생 -> 콜백함수 호출 -> 성공 결과
싱글 스레드 : OS의 프로세스를 관리하는 것이 스레드 -> 단일 스레드로, 비용이 적게 들지만 처리 양이 많아질수록 추가적인 처리 시간이 늘어남.
NVM : 협업에서 버전이 다를 때의 문제를 미리 방지하기 위해 사용하는 nodeJS의 버전관리 도구
파일 하나에 작업하는 것 보다 잘게 쪼개서 모듈화하면 더 편리하게 작업할 수 있다.
방법
module.exports = { // 모듈 파일에서 데이터를 리턴
data
}
.
.
.
const {data} = require("adress"); // 모듈에서 data를 불러옴
현재폴더에 위치해 있는 경우 : "./index.js"
'현재폴더 -> module폴더'의 경로에 있는 경우 : : "./module/index.js"
현재폴더보다 상위폴더에 있는 경우 : "../index.js"
<js파일이 실행되는 위치를 확인하고 실행해줄 것>