Backend · Infra

Node.js 란?

devhyen 2024. 6. 23. 13:23

Node.js는 서버 사이드 애플리케이션을 구축하기 위한 오픈소스 런타임 환경
JavaScript가 브라우즈에서만 실행되던 한계를 넘어 서버에서도 JavaScript를 사용할 수 있게 해줌
웹 애플리케이션의 프론트엔드와 백엔드를 동일한 언어로 개발할 수 있게 되었음

Node.js란?

  • 이벤트 기반, 논블로킹 I/O 모델을 사용하는 서버 사이드 자바스크립트 런타임
  • 빠르고 효율적인 네트워크 애플리케이션을 구축하는 데 중점을 둠
  • Node.js는 Google의 V8 JavaScript엔진을 기반으로 하며, 크로스 플랫폼을 지원함

Node.js 특징

비동기 I/O

  • 비동기적으로 I/O작업을 처리함
  • 블로킹 없이 높은 성능을 유지할 수 있음

이벤트 기반

  • 이벤트 루프를 사용하여 이벤트를 처리함
  • 서버가 많은 클라이언트 요청을 효율적으로 처리할 수 있게 함

단일 스레드

  • 단일스레드에서 실행되지만, 내부적으로 많은 비동기 작업을 관리하여 높은 성능

모듈화

  • CommonJS 모듈 시스템을 사용하여 코드를 모듈화하고 재사용성을 높임

NPM

  • Node Package Manager(NPM)은 Node.js의 패키지 관리자
  • 많은 오픈 소스 패키지를 쉽게 설치하고 관리할 수 있게 해줌

Node.js 애플리케이션 실행

// app.js
const http = require('http');

const hostname = '127.0.0.1';
const port = 3000;

const server = http.createServer((req, res) => {
  res.statusCode = 200;
  res.setHeader('Content-Type', 'text/plain');
  res.end('Hello, World!\n');
});

server.listen(port, hostname, () => {
  console.log(`Server running at http://${hostname}:${port}/`);
});
  • 코드를 실행하려면 터미널에 node app.js명령어를 입력하면 된다.
  • http://127.0.0.1:3000을 열면 "Hello, World!"메세지를 볼 수 있다.

주요 모듈

  • http: HTTP 서버와 클라이언트를 생성할 수 있습니다.
  • fs: 파일 시스템에 접근하여 파일을 읽고 쓸 수 있습니다.
  • path: 파일과 디렉토리 경로를 조작할 수 있습니다.
  • os: 운영 체제 관련 정보를 가져올 수 있습니다.
  • events: 이벤트 기반 프로그래밍을 지원합니다.

Express.js와 같은 프레임워크

Node.js로 웹 애플리케이션을 구축할 때, Express.js와 같은 프레임워크를 사용하면 더욱 편리하다.
Express.js는 라우팅, 미들웨어 관리 등을 쉽게 할 수 있게 도와준다.

const express = require('express');
const app = express();
const port = 3000;

app.get('/', (req, res) => {
  res.send('Hello, World!');
});

app.listen(port, () => {
  console.log(`Example app listening at http://localhost:${port}`);
});

'Backend · Infra' 카테고리의 다른 글

[ElasticSearch] nested Type  (0) 2024.07.10
[ElasticSearch] Query  (0) 2024.07.09
싱글톤 패턴 Singleton Pattern  (0) 2024.07.09
MSA (Microservice Architecture)  (0) 2024.07.03
DB index에 대한 이해  (0) 2024.06.16