Node.js 설명
posted on 30 Aug 2024 under category nodejs
💫 Node.js
💫 싱글 스레드, 이벤트 기반, 논블로킹 I/O
요리사가 한 명이면!
싱글 스레드 -> 주문이 밀려도 한 명이 악으로 깡으로 해야함..😭
즉 하나의 클라이언트가 하나의 작업을 함!
논블로킹 I/O -> 한명이 일을 하는데, 요리를 순차적으로 X, 중간중간 비는 시간이 있다면 다른 요리O
ex) 라면 1개(10분 중 물 끓는 시간 5분: 요리사는 물만 쳐다봄.), 볶음밥(완성 5분)
라면 물 끓여놓고 => 볶음밥 요리 => 라면 요리
즉 다른 작업이 완료되는 걸 기다리지않고, 다른 작업을 수행!
따라서 Node.js는 싱글 스레드로 동작 but 비동기 I/O 작업을 통해 요청들을 서로 블로킹X
즉, 동시에 많은 요청들을 비동기로 수행하여 싱글스레드일지라도 논블로킹O
클러스터링을 통해 프로세스를 포크(fork)하여 멀티스레드인것 처럼 사용O
트래픽에 따라, 프로세스를 포크할 수 있으므로 확장성이 용이함.
이벤트 기반 -> 주문이 들어와야만 일을 함.(없으면 안함!!!)
이벤트가 발생할 때 미리 지정해둔 작업을 수행하는 방식.
이벤트 리스너에 등록해둔 콜백함수 실행.
스레드(Thread) : 프로세스 내에서 실행되는 흐름의 단위.
하나의 프로세스는 스레드를 여러개 가질 수 있음. 스레드들은 부모 프로세스의 자원 공유
프로세스(Process) : 운영체제에서 할당하는 작업의 단위.
Node.js나 인터넷 브라우저 같은 프로그램은 개별적인 프로세스. 프로세스 간 메모리 자원 공유 X
💫 패키지 매니저란?
모든 소스 코드의 파일이 특정 버전을 사용할 수 있도록 함!
package.json의 dependancy에 명시
💫 패키지 매니저의 동작 단계
종류 | 장점 | 단점 |
---|---|---|
npm Linker | 단순함, node 설치 시 자동설치 | 디렉토리 너무 커짐. node_modules 디렉토리로 인해 패키지 하나 찾으려면 속도가 느림 |
pnpm | 디렉토리 크기가 작음. npm에 비해 빠르고, 기존 npm linker와 호환성도 좋음 | node_modules 디렉토리는 유지하기 때문에 , 여전히 느림 |
PnP(Plug’n’Play) | 빠름 | node_modules가 문제라 버전을 MAP 방식으로 관리하기로 함 |
yarn | 빠름 + 보안강화 / yarn.lock 이나 package.json에 있는 것만 설치함 | npm, yarn 모두 설치해야 함 |
💫 npm
npm은 빠르고 간편하게 삭제도 가능 = npm uninstall 모듈
💫 모듈이란?
💫 모듈을 가져가 쓰고 싶을 때는?
“Node.js 덕분에 자바스크립트 모듈을 만들 수도 있게 되었고 사용도 가능하게 됨!”