해당 내용은 제로초님의 Node.js 강의를 정리한 글 입니다.
더 자세한 내용은 아래 링크는 해당 강의입니다.
https://www.inflearn.com/course/%EB%85%B8%EB%93%9C-js-%EA%B5%90%EA%B3%BC%EC%84%9C/dashboard
[개정3판] Node.js 교과서 - 기본부터 프로젝트 실습까지 강의 | 제로초(조현영) - 인프런
제로초(조현영) | 노드가 무엇인지부터, 자바스크립트 최신 문법, 노드의 API, npm, 모듈 시스템, 데이터베이스, 테스팅 등을 배우고 5가지 실전 예제로 프로젝트를 만들어 나갑니다. 클라우드에 서
www.inflearn.com
노드란?
: Node.js는 크롬 V8 자바스크립트 엔진으로 빌드된 자바스크립트 런타임이다.
- 런타임: 특정 언어로 만든 프로그램들을 실행할 수 있게 해주는 가상 머신의 상태
- ∴ 노드: 자바 스크립트로 만든 프로그램들을 실행할 수 있게 해줌
- 다른 런타임으로는 웹 브라우저가 있음
- 노드 이전에도 자바스크립트 런타임을 만들기 위한 많은 시도
- But, 엔진 속도 문제로 실패
노드의 특징
1. 이벤트 기반
: 이벤트가 발생할 때 미리 지정해둔 작업을 수행하는 방식
2. 논블로킹 I/O
논 블로킹: 오래 걸리는 함수를 백그라운드로 보내서 다음 코드가 먼저 실행하게 하고, 나중에 오래걸리는 함수를 실행
3. 프로세스 vs 스레드
- 프로세스: 운영체제에서 할당하는 작업의 단위, 프로세스 간 자원 공유 X
- 스레드: 프로세스 내에서 실행되는 작업의 단위, 부모 프로세스 자원 공유
4. 싱글 스레드
=> 싱글 스레드라 주어진 일을 하나 밖에 처리하지 못함
- 블로킹이 발생하는 경우 나머지 작업은 모두 대기해야 함 -> 비효율 발생
=> 대신 논 블로킹 모델을 채택하여 일부 코드를 백그라운드에서 실행 가능
- 요청을 먼저 받고, 완료될 때 응답함
- I/O 관련 코드가 아닌 경우 싱글 스레드 블로킹 모델과 같아짐
5. 멀티 스레드 모델과의 비교
⇒ 싱글 스레드 모델은 에러를 처리하지 못하는 경우 멈춤
- 프로그래밍 난이도 쉽고, CPU, 메모리 자원 적게 사용
⇒ 멀티 스레드 모델은 에러 발생 시 새로운 스레드를 생성하여 극복
- 단, 새로운 스레드 생성이나 놀고 있는 스레드 처리에 비용 발생
- 프로그래밍 난이도 어려움
- 스레드 수 만큼 자원을 많이 사용함
6. 멀티 스레드의 활용
⇒ 노드 14 버전
- 멀티 스레드를 사용할 수 있도록 worker_threads 모듈 도입
- CPU를 많이 사용하는 작업인 경우에 활용 가능
- 멀티 프로세싱만 가능했던 아쉬움을 달래줌
노드의 역할
1. 서버로서의 노드
⇒ 서버: 네트워크를 통해 클라이언트에 정보나 서비스를 제공하는 컴퓨터 또는 프로그램
⇒ 클라이언트: 서버에 요청을 보내는 주체
⇒ 예시
- 브라우저가 길벗 웹사이트에 접속
- 핸드폰을 통해 앱스토어에서 앱 다운로드
⇒ 노드 ≠ 서버
⇒ But, 노드는 서버를 구성할 수 있게 하는 모듈을 제공
2. 서버로서의 노드
⇒ 노드 서버의 장단점
⇒ CPU 작업을 위해 AWS Lambda나 Google Cloud Functions 같은 별도 서비스 사용
⇒ 페이팔, 넷플릭스, 나사, 월마트, 링크드인, 우버 등에서 메인 또는 서브 서버로 사용
3. 서버외의 노드
⇒ 자바스크립트 런타임이기 때문에 용도가 서버에만 한정되지 않음
⇒ 웹, 모바일, 데스크탑 애플리케이션에도 사용
- 웹 프레임 워크: Angular, React, Vue, Meteor 등
- 모바일 앱 프레임 워크: React Native
- 데스크탑 개발 도구: Electron(Atom, Slack, VScode, Discord 등 제작)
⇒ 위 프레임워크가 노드 기반으로 동작함
'백엔드 > Node' 카테고리의 다른 글
#5 cluster (1) | 2025.02.01 |
---|---|
#4 쿠키와 세션 이해하기 (0) | 2025.02.01 |
#3 REST API 와 라우팅 (2) | 2025.01.28 |
#2 요청과 응답 이해하기 (3) | 2025.01.25 |
#0 노드 설치하기 (3) | 2025.01.22 |