Node.js는 비동기 이벤트 기반 모델을 채택하여 논블로킹 I/O를 처리한다.
이는 요청을 처리하는 동안 스레드가 블로킹되지 않고, 다음 요청을 처리할 수 있게 하며,
이런 구조는 높은 성능을 필요로 하는 실시간 웹 애플리케이션에서 매우 유용하다.
비동기 예시:
const fs = require('fs');
// 비동기 방식으로 파일 읽기
fs.readFile('example.txt', 'utf8', (err, data) => {
if (err) throw err;
console.log(data);
});
console.log("파일 읽기 요청 완료");
이 코드는 파일을 비동기적으로 읽기 때문에 console.log("파일 읽기 요청 완료")
가 파일이 읽히기 전에 실행된다.
Node.js의 가장 큰 장점 중 하나는 npm을 통해 방대한 패키지를 손쉽게 설치하고 관리할 수 있다는 점이다.
전 세계 개발자들이 만든 모듈과 라이브러리를 npm을 통해 간편하게 사용할 수 있어 개발 속도를 높일 수 있다.
# Express 모듈 설치
npm install express
Node.js를 사용하기 위해서는 먼저 Node.js를 설치해야 한다.
공식 Node.js 웹사이트에서 운영체제에 맞는 설치 파일을 다운로드한다.
설치 후에는 터미널이나 명령 프롬프트에서 node
와 npm
명령어로 버전을 확인할 수 있다.
# Node.js 버전 확인
node -v
# npm 버전 확인
npm -v
Node.js 프로젝트를 시작하려면 먼저 프로젝트 디렉토리를 생성하고 npm init
을 사용하여 package.json
파일을 생성한다.
# 프로젝트 디렉토리 생성 및 이동
mkdir my-node-app
cd my-node-app
# npm을 사용해 프로젝트 초기화
npm init -y
이 명령어는 package.json
파일을 생성하며, 이 파일에 프로젝트의 메타 정보와 의존성 패키지 목록을 기록하게 된다.
Node.js의 Express는 웹 서버를 쉽게 만들 수 있는 프레임워크다.
# Express 설치
npm install express
설치 후 index.js
파일을 만들어 서버를 구성한다.
const express = require('express');
const app = express();
app.get('/', (req, res) => {
res.send('Hello, World!');
});
app.listen(3000, () => {
console.log('Server is running on http://localhost:3000');
});
서버를 실행하려면 터미널에서 다음 명령어를 사용한다.
node index.js
이제 브라우저에서 http://localhost:3000
에 접속하면 "Hello, World!" 메시지를 확인할 수 있다.
Node.js에서 데이터베이스 접속 정보나 API 키와 같은 민감한 정보를 환경 변수로 관리할 수 있다.
이를 위해 dotenv
패키지를 설치하고 사용한다.
# dotenv 설치
npm install dotenv
프로젝트 루트에 .env
파일을 만들고 환경 변수를 정의한다.
PORT=3000
DATABASE_URL=mongodb://localhost/mydb
그리고 dotenv
를 통해 환경 변수를 로드하여 사용할 수 있다.
require('dotenv').config();
const express = require('express');
const app = express();
const port = process.env.PORT || 3000;
app.get('/', (req, res) => {
res.send('Hello, World!');
});
app.listen(port, () => {
console.log(`Server is running on http://localhost:${port}`);
});
Node.js는 WebSocket을 통한 양방향 통신을 효율적으로 처리할 수 있어, 채팅 애플리케이션이나 실시간 데이터 스트리밍 서비스에 적합하다.
Node.js는 REST API나 GraphQL API 서버를 구축하는 데 자주 사용됩니다. 빠른 응답 속도와 비동기 I/O 덕분에 효율적으로 API 요청을 처리할 수 있다.
Node.js는 모듈화가 용이하여, 마이크로서비스 구조의 애플리케이션에서 자주 사용된다.
Node.js는 클러스터링을 통해 여러 CPU 코어를 활용한 확장이 가능하다.
이는 대규모 트래픽을 처리해야 하는 환경에 적합하다.
Node.js는 2009년 처음 개발된 이후, JavaScript의 인기를 바탕으로 빠르게 성장했으며, Express.js, NestJS, Koa 등 다양한 프레임워크가 등장하면서, 서버 측 애플리케이션 개발의 표준 기술로 자리 잡았다.
현재는 웹 서버뿐만 아니라 마이크로서비스, IoT, 데스크톱 애플리케이션 등 다양한 분야에서 활용되고 있다.