Web/Node.JS
Node.js 입문 기본 개념과 설치 방법
이영훈닷컴
2025. 2. 5. 11:45
728x90
Node.js 정의
- Node.js: 크롬 V8 자바스크립트 엔진으로 빌드된 자바스크립트 런타임
- 서버 역할 가능: http/https/http2 모듈 제공하여 서버 실행 가능
- 런타임이란?: 특정 언어 프로그램을 실행할 수 있도록 해주는 환경 (ex. 크롬, 엣지 등)
- Node.js 내부구조
- 2008년 V8 엔진 출시, 2009년 Node.js 프로젝트 시작
- V8 엔진: 자바스크립트 실행 속도 향상
- libuv: 이벤트 기반, 논블로킹 I/O 모델 지원
Node.js 특성
- 이벤트 기반(Event-driven)
- 이벤트(클릭, 네트워크 요청 등)가 발생하면 미리 지정된 작업 수행
- 이벤트 리스너, 콜백 함수 활용
- 논블로킹 I/O (Non-blocking I/O)
- 오래 걸리는 I/O 작업(파일 시스템 접근, 네트워크 요청 등)을 백그라운드에서 실행
- Node.js는 I/O 작업이 많을 때 성능 극대화
- 프로세스 vs 스레드
- 프로세스: OS에서 할당하는 작업 단위, 자원 공유 X
- 스레드: 프로세스 내 실행 단위, 자원 공유 O
- Node.js는 싱글 스레드 기반이지만 내부적으로 멀티 프로세스 활용
- 싱글 스레드 모델
- 한 번에 하나의 작업만 처리 (블로킹 발생 시 전체 작업 대기)
- 논블로킹 모델 덕분에 I/O 작업은 백그라운드에서 처리 가능
- 멀티 스레드 모델과 비교
- 싱글 스레드: 프로그래밍 난이도 낮음, CPU/메모리 자원 적게 사용
- 멀티 스레드: 복잡하지만, 스레드 생성 비용 증가
- 멀티 스레드 활용
- Node.js 14버전부터 worker_threads 모듈 도입
- CPU 집중 작업에서 유용하게 활용 가능
Node.js 역할
- 서버 개발
- 클라이언트 요청을 처리하는 서버 역할 가능
- 넷플릭스, 페이팔, 링크드인, 우버 등에서 사용
- CPU 작업이 많으면 AWS Lambda 같은 별도 서비스와 함께 사용
- 서버 외의 용도
- 웹, 모바일, 데스크탑 애플리케이션 개발에도 활용 가능
- 프레임워크
- 웹: Angular, React, Vue, Meteor
- 모바일: React Native
- 데스크탑: Electron (VSCode, Slack, Discord 등 제작 가능)
개발 환경 설정
- 리눅스 설치
sudo apt-get update
sudo apt-get install -y build-essential
sudo apt-get install -y curl
curl -sL https://deb.nodesource.com/setup_18.x | sudo -E bash --
sudo apt-get install -y nodejs
#콘솔
node -v
#18.7.0
npm -v
#8.15.0
npm install -g npm
- Node.js 설치
- Windows/Mac은 GUI 설치, Linux(Ubuntu)는 CLI 명령어 사용
- 공식 사이트에서 LTS 버전 다운로드 (https://nodejs.org)
- VS Code 설치
- 자바스크립트, Node.js 지원 강력
- Microsoft 제공 오픈소스 에디터 (https://code.visualstudio.com)
오늘의 인사이트
- Node.js는 싱글 스레드 기반이지만, 논블로킹 I/O 덕분에 성능이 뛰어나며 서버, 웹/모바일/데스크탑 애플리케이션 등 다양한 환경에서 활용 가능.
- 멀티 스레드가 필요한 경우에는 worker_threads를 사용하면 해결 가능.
- Electron.js도 Node.js 기반이라, 앞으로 사용할 프로젝트에 유용할 것 같다.
- 다음 목표: 실제 Node.js 서버를 간단히 만들어보기!
728x90