node.js / npm / tomcat

1. node js 가 뭐야?

Node.jsJavaScript로 서버를 만들 수 있게 해주는 실행 환경(runtime) 이다.

 

원래 JavaScript는 어디서 실행됐을까?

  • 원래는 웹 브라우저(Chrome, Firefox 등) 안에서만 실행됐다.
  • 즉, 클라이언트(브라우저) 쪽에서만 쓰였다.

Node.js는 뭘 가능하게 했을까?

  • 자바스크립트를 브라우저 바깥, 즉 서버에서도 실행할 수 있게 만들었다.
  • 덕분에, 프론트엔드와 백엔드를 모두 JavaScript로 개발할 수 있게 됐다.

Node.js는 어떤 상황에 쓰일까?

  • 웹 서버 개발
    (예: 로그인 기능, 게시판 백엔드, API 서버 등)
  • 실시간 채팅 서버
  • CLI 도구 만들기 (예: npm)
  • 빌드 도구, 테스트 도구 실행 환경
    (React, Vue, Next.js 같은 프레임워크도 Node.js 위에서 작동함)

// 간단한 Node.js 웹 서버 예시
const http = require('http');

const server = http.createServer((req, res) => {
  res.end('Hello from Node.js!');
});

server.listen(3000, () => {
  console.log('Server running at http://localhost:3000');
});

위 코드 하나만으로도 웹 서버가 동작한다. 이게 바로 Node.js의 힘이다.

 

무엇인가? 자바스크립트를 브라우저 바깥에서도 실행할 수 있게 하는 환경
어디에 쓰는가? 백엔드 서버 개발, 실시간 서비스, CLI 도구 등
왜 쓰는가? 하나의 언어(JavaScript)로 프론트와 백엔드를 모두 개발 가능

 


2. npm은 뭐야?

이 둘은 항상 같이 다닌다.

npm이란?

npm(Node Package Manager)
Node.js에서 사용하는 외부 라이브러리(패키지)를 설치하고 관리하는 도구다.

  • npm은 "앱스토어" 같은 역할을 한다.
    • 필요한 기능(예: 암호화, 날짜 처리, DB 연결 등)을 미리 만들어놓은 패키지를 다운받아서 쓸 수 있게 해준다.
  • 명령어 한 줄로 설치 가능:→ express라는 웹 서버 프레임워크 설치
  • npm install express

npm이 하는 일 정리

기능 설명

패키지 설치 npm install 패키지명으로 설치
의존성 관리 어떤 라이브러리를 썼는지 기록 (package.json)
스크립트 실행 npm start, npm test처럼 프로젝트 내 작업 실행

중요한 파일: package.json

  • 어떤 패키지를 썼는지 기록해두는 파일
  • npm은 이 파일을 보고 자동으로 필요한 것들을 설치할 수 있다

예시:

{
  "name": "my-app",
  "dependencies": {
    "express": "^4.18.2"
  },
  "scripts": {
    "start": "node index.js"
  }
}

 

 

npm init          # 새로운 프로젝트 초기화 (package.json 생성)
npm install axios # HTTP 요청 보내는 라이브러리 설치
npm start         # start 스크립트 실행 (예: 서버 실행)

 

 

  • Node.js는 실행 환경이고,
  • npm은 필요한 도구를 설치하는 관리 툴이다.

Node.js를 설치하면 보통 npm도 같이 설치된다.
원하는 라이브러리를 추가하거나, 다른 사람의 프로젝트를 실행할 때 꼭 필요하다.


3. node랑 톰캣은 어떻게 달라?

  Node Tomcat
언어 JavaScript 실행 환경 Java Servlet 실행 환경
주 사용 언어 JavaScript (프론트+백) Java (백엔드)
서버 방식 직접 코드로 서버 구현 기본 웹서버 제공 (Servlet 기반)
비동기 처리 기본적으로 비동기 (Non-blocking I/O) 기본은 동기 (Blocking I/O)
설치 구성 Node.js만 설치 Java + Tomcat 따로 설치
주로 사용하는 프레임워크 Express, NestJS 등 Spring, JSP 등

 

기술 스택 차이 예시

Node.js 기반 백엔드

const express = require('express');
const app = express();
app.get('/', (req, res) => res.send('Hello Node.js!'));
app.listen(3000);

Tomcat + Spring 기반 백엔드

@RestController
public class HelloController {
    @GetMapping("/")
    public String hello() {
        return "Hello Spring!";
    }
}

Node는 직접 웹서버를 코드로 만들지만,
Tomcat은 이미 웹서버가 내장돼 있어서 설정이나 어노테이션 기반으로 처리한다.

요약하면

  • Node.js경량화된, 자바스크립트 기반 서버.
    → 프론트엔드 개발자가 백엔드까지 커버하기에 좋음.
  • TomcatJava 기반 웹 서버 컨테이너.
    → 안정성과 엔터프라이즈 시스템에 적합.