Node.js란?
Node.js는 Chrome의 V8 JavaScript 엔진으로 빌드된 서버 사이드 JavaScript 실행 환경이야. 2009년에 출시됐고, JavaScript 코드를 브라우저가 아닌 서버에서 실행할 수 있도록 만들어졌어.
간단히 말하면, Node.js를 이용하면 JavaScript로 웹 서버를 만들고, 파일 시스템에 접근하고, 데이터베이스와 통신하고, 네트워크 프로그래밍도 할 수 있어.
Node.js의 주요 특징
1. 이벤트 기반 비동기 I/O
• 블로킹 없이 데이터를 처리
• 콜백, Promise, async/await 같은 방식으로 비동기 작업 처리
2. 단일 스레드
• 한 개의 스레드로 모든 클라이언트 요청을 처리하지만, 비동기 방식으로 높은 동시성을 가짐
3. 빠른 실행 속도
• Google V8 엔진 기반이라 자바스크립트 실행 속도가 매우 빠름
4. NPM (Node Package Manager)
• 세계에서 가장 큰 오픈 소스 패키지 저장소
• 다른 사람이 만든 모듈을 쉽게 설치하고 사용할 수 있음
Node.js의 주요 사용 분야
분야 |
설명 |
---|---|
웹 서버 개발 |
Express 등과 함께 빠르고 유연한 웹 서버 개발 가능 |
REST API 서버 |
비동기 처리가 쉬워 API 서버에 적합 |
실시간 서비스 |
채팅, 게임, 실시간 알림 시스템에 유리 |
CLI 도구 |
터미널 명령어 인터페이스 만들기 |
백엔드 처리 |
데이터베이스 연동, 파일 처리, 인증 처리 등 |
간단한 Node.js 예제
1. HTTP 서버 만들기
// server.js
const http = require('http');
const server = http.createServer((req, res) => {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('Hello, Node.js');
});
server.listen(3000, () => {
console.log('서버가 3000번 포트에서 실행 중');
});
node server.js
2. Express를 이용한 REST API
npm init -y
npm install express
// app.js
const express = require('express');
const app = express();
app.use(express.json());
app.get('/', (req, res) => {
res.send('Hello, Express');
});
app.post('/user', (req, res) => {
const user = req.body;
res.json({ message: '사용자 생성됨', user });
});
app.listen(3000, () => {
console.log('서버 실행 중');
});
Node.js에서 사용하는 주요 모듈
모듈 |
설명 |
---|---|
fs |
파일 읽기, 쓰기 등 파일 시스템 제어 |
http |
HTTP 서버 및 요청 처리 |
express |
가장 널리 사용되는 웹 프레임워크 |
path |
파일 경로 조작 |
crypto |
암호화 처리 |
dotenv |
환경 변수(.env 파일) 관리 |
mongoose |
MongoDB와 연동하는 ODM |
Node.js에서 자주 쓰이는 기술 스택
• Express: 라우팅, 미들웨어 등을 제공하는 경량 웹 프레임워크
• MongoDB + Mongoose: NoSQL 데이터베이스 연동
• JWT (jsonwebtoken): 로그인 및 인증 처리
• Socket.IO: 실시간 웹소켓 통신
• ES 모듈 + Babel: 최신 JavaScript 문법 사용
• TypeScript: 정적 타입을 추가해 더 안정적인 코드 작성
Node.js 장단점
장점
• JavaScript로 프론트와 백엔드를 모두 작성 가능
• 실시간 처리에 유리
• 빠른 응답성과 높은 동시성
• NPM을 통한 다양한 라이브러리 활용
단점
• CPU 집약적인 작업에는 부적합
• 콜백 지옥 등 비동기 처리의 복잡성
• 한 번의 코드 실수로 서버 전체가 다운될 수 있음
Node.js 프로젝트 구조 예시
myapp/
├── app.js
├── routes/
│ └── user.js
├── controllers/
│ └── userController.js
├── models/
│ └── userModel.js
├── middlewares/
├── config/
│ └── db.js
├── .env
└── package.json
더 알고 싶다면 다음 주제도 자세히 다룰 수 있어:
• REST API 서버 CRUD 완성하기
• JWT 기반 로그인 구현
• Node.js에서 MySQL 또는 MongoDB 연동하기
• 실시간 채팅 서버 만들기 (Socket.IO)
• Node.js 배포하기 (PM2, Docker, Nginx)