Node.js 최종 수정일 2026-06-18 19:03 조회수 16
대시보드

Node.js

기본 정보

  • 이름: Node.js
  • 분류: JavaScript 런타임 환경
  • 개발자: 라이언 달(Ryan Dahl)
  • 최초 공개: 2009년
  • 엔진: Google V8 JavaScript Engine
  • 주요 용도: 백엔드 개발, REST API, 실시간 서버, CLI, 자동화
  • 관련 주제: #Nodejs #JavaScript #백엔드 #Express #API

개요

Node.js는 Google V8 JavaScript 엔진 기반의 JavaScript 런타임 환경이다.

기존에는 브라우저에서만 실행되던 JavaScript를 서버에서도 실행할 수 있도록 개발되었으며, 현재는 웹 서버, REST API, 채팅 서버, CLI 프로그램, 자동화 도구 등 다양한 분야에서 활용되고 있다.

비동기(Event-Driven) 및 논블로킹(Non-blocking I/O) 구조를 채택하여 많은 동시 요청을 효율적으로 처리할 수 있다.


주요 특징

  • JavaScript 기반 서버 개발
  • V8 엔진 사용
  • 논블로킹 I/O
  • 이벤트 기반(Event Loop)
  • npm 생태계 제공
  • 크로스 플랫폼 지원
  • 빠른 개발 속도

실행 구조

Client

↓

Node.js Runtime

↓

Event Loop

↓

File System / Database / Network

↓

Response

Hello World

console.log("Hello Node.js");

실행

node app.js

HTTP 서버 생성

const http = require("http");

const server = http.createServer((req, res) => {

    res.end("Hello Node.js");

});

server.listen(3000);

모듈(Module)

const fs = require("fs");

const path = require("path");

Node.js는 모듈 기반으로 동작한다.


파일 읽기

const fs = require("fs");

const text = fs.readFileSync("test.txt", "utf8");

console.log(text);

파일 쓰기

fs.writeFileSync("test.txt", "Hello");

비동기 처리

fs.readFile("test.txt","utf8",(err,data)=>{

    console.log(data);

});

Node.js는 비동기 처리를 기본적으로 많이 사용한다.


Promise

fetch(url)

.then(res=>res.json())

.then(data=>{

});

async / await

async function load(){

    const data = await fetch(url);

}

현대 Node.js에서는 async/await 사용이 일반적이다.


npm

Node.js의 공식 패키지 관리자이다.

설치

npm install express

패키지 생성

npm init

package.json

{
  "name":"project",
  "version":"1.0.0"
}

프로젝트 정보와 의존성 패키지를 관리한다.


Express

Node.js에서 가장 많이 사용하는 웹 프레임워크이다.

const express = require("express");

const app = express();

app.get("/", (req,res)=>{

    res.send("Hello");

});

app.listen(3000);

REST API

app.get("/member",(req,res)=>{

    res.json({

        name:"구름"

    });

});

모바일 앱 및 프론트엔드와 통신할 때 많이 사용된다.


Middleware

app.use(express.json());

요청 처리 전후에 공통 기능을 수행할 수 있다.

예시

  • 로그인 체크
  • JWT 인증
  • 로그 기록
  • CORS 처리

환경 변수

.env

PORT=3000

DB_HOST=localhost

사용

process.env.PORT

대표 라이브러리

  • Express
  • NestJS
  • Koa
  • Fastify
  • Socket.IO
  • Axios
  • Prisma
  • Sequelize
  • Mongoose

데이터베이스

Node.js는 다양한 DB와 연동 가능하다.


실시간 서비스

Node.js는 WebSocket 기반 서비스에 많이 사용된다.

대표 사례

  • 채팅
  • 게임 서버
  • 주식 시세
  • 알림 시스템
  • 실시간 대시보드

주요 활용 분야

  • REST API
  • 웹 서버
  • 관리자 페이지
  • 실시간 채팅
  • 게임 서버
  • CLI 프로그램
  • 크롤러
  • 자동화 프로그램
  • AI API 서버

장점

  • JavaScript 하나로 프론트·백엔드 개발 가능
  • 개발 속도가 빠름
  • npm 생태계가 매우 풍부함
  • 실시간 서비스에 적합
  • 높은 생산성
  • 활발한 커뮤니티

단점

  • CPU 집약적 작업에는 비효율적
  • 싱글 스레드 구조
  • 콜백 지옥 문제가 발생할 수 있음
  • 패키지 의존성 관리가 중요함

실무 메모

실무에서는 다음과 같은 방식이 권장된다.

  • 최신 LTS 버전 사용
  • async/await 사용
  • Express 또는 NestJS 활용
  • .env로 환경변수 관리
  • ESLint 및 Prettier 적용
  • PM2로 프로세스 관리
  • Winston/Pino로 로그 관리
  • JWT 기반 인증 적용
  • Docker 컨테이너 배포
  • TypeScript 사용 적극 권장

Node.js와 함께 사용하는 기술


대표 개발 도구

  • Visual Studio Code
  • npm
  • pnpm
  • Yarn
  • PM2
  • Nodemon
  • Postman

관련 문서


출처

  • Node.js 공식 홈페이지
  • Node.js 공식 API 문서
  • V8 JavaScript Engine Documentation