1. node js 가 뭐야?
Node.js는 JavaScript로 서버를 만들 수 있게 해주는 실행 환경(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는 경량화된, 자바스크립트 기반 서버.
→ 프론트엔드 개발자가 백엔드까지 커버하기에 좋음. - Tomcat은 Java 기반 웹 서버 컨테이너.
→ 안정성과 엔터프라이즈 시스템에 적합.