
1. Node.js
- Node.js는 JavaScript 런타임 환경
- 런타임 환경 : 소프트웨어 애플리케이션을 구축하고 실행하기 위한 인프라를 의미
- Node.js는 JavaScript로 애플리케이션을 빌드
1-1. Node.js의 특징
- 서버 프레임워크이며 무료 이용 가능
- Windows, Linux, Mac OS 등에서 실행됨
- 서버에서 JavaScript를 사용
- 이벤트 기반 비동기 방식 > 서버의 무리가 적음
1-2. Node.js의 작동 방식
- 작업이 파일 시스템으로 이동
- 시스템이 다음 요청을 위해 대기
- 파일을 열고 읽을 때 시스템은 클라이언트에 내용을 보냄
1-3. Node JS 파일이란
- 작업을 포함하고 설정된 이벤트에 따라 실행
- 누군가가 서버에 액세스하려고 할 때 이벤트 발생
- 파일은 서버에서 시작되어야 함
- 파일 확장자는 '.js'
1-4. Node.js 활용
- 동적 콘텐츠 생성 가능
- 서버에서 파일 생성, 열기 및 읽기 또는 삭제
- 데이터베이스에서 데이터 수집 및 수정
2. Node.js 사용하는 이유
- 높은 처리 성능 : Non-blocking I/O와 단일 스레드 이벤트 루프
- 가장 큰 장점은 JavaScript 언어가 I/O를 차단하지 않는 것 (NodeJS 개발자 Ryan Dahi)
- 단일 스레드 이벤트 루프임
- node가 시작될 때 이벤트 루프를 시작하고 입력을 처리, 작업 순서를 시작함
2-1. Node.js의 장점
- Google JavaScript 엔진
- 서버 측 애플리케이션용
- 노드는 특정 이벤트(사용자 작업, 메시지 등)에 의해 흐름이 결정되는 이벤트 기반 프로그래밍 모델
- 쉽게 확장 가능
- 각 프로세스 또는 서버끼리, 노드는 멀티 코어 서버에 부하를 분산시키는 개별 프로세스 기반으로 확장 가능
2-2. Node.js의 장점
- JavaScript는 배우기 간단하고 수많은 프레임워크를 가지고 있어 초심자에게 좋음
- Node를 구글에서 관리하기 때문에 빠름
- DB에서 데이터를 순수 JSON으로 관리할 수 있음
- 다양한 모듈이 지원됨 (ex. NPM, Grunt 등)
- SNS, 채팅, 게임 등 실시간 어플을 만들기 좋음
- 데이터 스트리밍에 적합 (ex. 오디오, 비디오 파일)
2-3. Non-blocking I/O
- 일반 프로그래밍 언어 : 여러 요청이 동시에 들어왔을 때 요청이 들어온 순서대로 일을 처리
- Non-blocking I/O : 금방 완료될 수 있는 것부터 처리하게 설계된 런타임
3. 설치
nvm list
nvm use 20.10.0
nvm list available
nvm install 20.10.0
nvm use 20.10.0