목차
1. Node.js란?
Node.js는 브라우저 밖에서도 JavaScript를 실행할 수 있도록 만들어진 서버 사이드 JavaScript 런타임입니다.
기존 JavaScript는 웹 브라우저 내부에서만 실행되는 언어였습니다.
console.log("Hello Browser");위 코드는 원래 Chrome, Firefox 같은 브라우저에서 실행되는 JavaScript 코드였습니다. 하지만 Node.js가 등장하면서 JavaScript는 서버와 도구 개발 영역에서도 사용할 수 있게 되었습니다.
- 웹 서버 개발
- REST API 개발
- 실시간 채팅 서비스
- IoT 시스템
- AI 서비스 Backend
- CLI(Command Line Tool)
- 마이크로서비스
- 서버리스(Serverless)
즉, Node.js는 JavaScript를 이용하여 서버를 개발할 수 있게 만든 플랫폼이라고 이해하면 됩니다.
2. Node.js의 탄생 배경과 역사
등장 이전
2000년대 중반까지 웹 서버는 대부분 PHP, Java Servlet, ASP.NET, Python Django, Ruby on Rails 같은 기술로 개발되었습니다.
이들은 대부분 요청당 스레드를 생성하는 구조였습니다.
Ryan Dahl의 등장
2009년 Ryan Dahl은 새로운 접근 방식을 제안했습니다. 핵심 아이디어는 스레드를 많이 만들지 말고 이벤트 기반으로 처리하자는 것이었습니다.
이를 위해 Google V8 엔진을 활용합니다. Google V8은 Chrome 브라우저의 JavaScript 엔진이며 빠른 JIT 컴파일러를 제공합니다.
3. Node.js 아키텍처와 동작 원리
V8 엔진
V8 엔진은 JavaScript 실행을 담당합니다.
libuv
libuv는 Node.js의 핵심 라이브러리입니다.
- Event Loop
- Thread Pool
- Async I/O
- File System Access
- Network Access
Event Loop 이해하기
Event Loop는 Node.js를 이해하는 가장 중요한 개념입니다.
예시는 다음과 같습니다.
console.log("Start");
setTimeout(() => {
console.log("Timer");
}, 1000);
console.log("End");Start
End
TimerNode.js는 비동기 방식으로 동작합니다.
4. Node.js의 주요 특징
1. Single Thread
Node.js는 하나의 메인 스레드를 사용합니다.
Main Thread
│
Event Loop2. Non-Blocking I/O
파일 읽기 예시는 다음과 같습니다.
const fs = require("fs");
fs.readFile("test.txt", "utf8", (err, data) => {
console.log(data);
});파일을 읽는 동안 다른 작업을 수행할 수 있습니다.
3. Event Driven
이벤트가 발생하면 등록된 처리를 수행합니다.
button.click();
socket.connect();
file.read();4. Cross Platform
- Linux
- Windows
- macOS
- Docker
- Kubernetes
5. Node.js 설치 방법
Windows
공식 사이트에서 LTS 버전 설치를 권장합니다.
macOS
Homebrew를 사용할 수 있습니다.
brew install node
node -v
npm -vLinux
Ubuntu에서는 다음처럼 설치할 수 있습니다.
sudo apt update
sudo apt install nodejs npm6. Node.js 기본 문법 및 구조
첫 번째 Node.js 프로그램을 만들어보겠습니다.
app.js
console.log("Hello Node.js");실행 명령어와 결과는 다음과 같습니다.
node app.js
Hello Node.js7. npm과 패키지 관리
npm(Node Package Manager)은 Node.js 생태계의 핵심입니다. 현재 수백만 개 패키지가 존재합니다.
| 패키지 | 용도 |
|---|---|
| Express | 웹 서버 |
| Axios | HTTP 통신 |
| Prisma | ORM |
| Mongoose | MongoDB |
| Socket.IO | 실시간 통신 |
| Passport | 인증 |
| Winston | 로깅 |
프로젝트 생성
mkdir my-app
cd my-app
npm init -y위 명령을 실행하면 package.json이 생성됩니다.
8. Express를 활용한 API 서버 개발
설치
npm install express기본 서버
const express = require("express");
const app = express();
app.get("/", (req, res) => {
res.send("Hello World");
});
app.listen(3000);node app.js
http://localhost:3000REST API 개발
app.get("/users", (req, res) => {
res.json([
{ id: 1, name: "Kim" }
]);
});
app.post("/users", (req, res) => {
res.json({
result: "success"
});
});
app.put("/users/:id", (req, res) => {
res.json({
updated: true
});
});
app.delete("/users/:id", (req, res) => {
res.json({
deleted: true
});
});9. 데이터베이스 연동
MySQL
npm install mysql2
const mysql = require("mysql2");
const conn = mysql.createConnection({
host: "localhost",
user: "root",
password: "password",
database: "testdb",
});
conn.query(
"SELECT * FROM users",
(err, rows) => {
console.log(rows);
}
);PostgreSQL
npm install pg
const { Client } = require("pg");
const client = new Client({
host: "localhost",
user: "postgres",
password: "password",
});MongoDB
npm install mongoose
const mongoose = require("mongoose");
mongoose.connect(
"mongodb://localhost:27017/test"
);실무에서 많이 사용하는 기술 스택
| 구분 | 기술 스택 |
|---|---|
| Backend API | Node.js, Express, MySQL, Redis, Docker, Nginx |
| Enterprise Backend | Node.js, NestJS, PostgreSQL, Redis, Kafka, Docker, Kubernetes |
| AI 서비스 Backend | Next.js, Node.js, OpenAI API, LangChain, Vector DB, Redis |
| 실시간 서비스 | Node.js, Socket.IO, Redis, MongoDB |
Node.js와 NestJS
최근 기업에서 많이 사용하는 프레임워크 중 하나는 NestJS입니다.
- Spring Boot 유사 구조
- Dependency Injection
- TypeScript 기본 지원
- 대규모 프로젝트 적합
- 테스트 용이
10. Node.js 실무 활용 사례
| 기업/서비스 | 활용 사례 |
|---|---|
| Netflix | API Gateway, UI Rendering |
| PayPal | Backend 서비스 |
| 모바일 Backend | |
| Uber | 실시간 Dispatch 시스템 |
11. Node.js 장점과 단점
Node.js 장점
| 장점 | 설명 |
|---|---|
| 높은 생산성 | JavaScript 하나로 Frontend와 Backend를 동시에 개발 가능 |
| 빠른 개발 | npm 생태계의 수백만 패키지를 활용 가능 |
| 실시간 처리 강점 | WebSocket, Socket.IO 기반 서비스에 적합 |
| 클라우드 친화적 | Docker, Kubernetes, AWS, Azure, GCP 환경에 적합 |
Node.js 단점
Node.js는 CPU 연산에 약한 편입니다. 영상 인코딩, AI 모델 학습, 암호화 대량 처리 같은 작업에서는 Java, Go, Rust, Python 등이 더 적합할 수 있습니다.
Callback Hell
a(() => {
b(() => {
c(() => {
d();
});
});
});현재는 async/await로 대부분 해결됩니다.
12. 최신 Node.js 생태계
| 트렌드 | 설명 |
|---|---|
| TypeScript 표준화 | 신규 프로젝트 대부분이 Node.js + TypeScript 구성으로 시작 |
| NestJS 성장 | 대기업, 금융, 공공 프로젝트 채택 증가 |
| Serverless | AWS Lambda, Vercel, Cloudflare Workers 같은 환경에서 활용 |
| AI Backend | OpenAI 연동, RAG 시스템, AI Agent, MCP Server, Chatbot 개발에 활용 증가 |
13. Node.js의 미래 전망
14. 결론
Node.js는 단순한 JavaScript 실행기가 아니라 현대 웹 서비스와 클라우드 네이티브 애플리케이션의 핵심 플랫폼으로 자리 잡았습니다.
특히 REST API, 마이크로서비스, 실시간 서비스, AI 백엔드, MCP 서버, RAG 플랫폼과 같은 현대적 아키텍처에서 매우 강력한 생산성을 제공합니다.
2026년 현재 실무에서는 Node.js + TypeScript + NestJS + PostgreSQL + Redis + Docker + Kubernetes 조합이 널리 사용되는 엔터프라이즈 아키텍처 중 하나로 평가받고 있으며, AI 시대에도 OpenAI API, LangChain, Agent Framework와의 뛰어난 연동성 덕분에 활용 범위가 더욱 확대되고 있습니다.
Node.js를 제대로 학습한다면 프론트엔드와 백엔드를 아우르는 풀스택 개발은 물론, AI 플랫폼 개발과 클라우드 네이티브 서비스 구축까지 폭넓은 영역에서 경쟁력을 확보할 수 있습니다.
