본문 바로가기

정글캠프-WIL/서브아이템

Express.js 프레임워크란?

1. Express.js?

Node.js 위에서 동작하느 가벼운 웹 서버 프레임워크

Node.js 만으로도 서버를 만들 수 있지만, Express.js를 사용하면 다음이 편해짐

ⓐ. 라우팅 처리

ⓑ. 요청/응답 관리

ⓒ. JSON Body Parsing

ⓓ. MiddleWare 사용

ⓔ. API 서버 구성

즉, Express.js는 Node.js 서버 개발을 더 쉽게 해주는 도구

 

2. 왜 백엔드 프레임워크를 통일하지 않을까?

java의 경우 spring boot, python의 경우 flask, javascript의 경우 Express.js를 사용한다.

이 이유가 무엇이고 나누는 이유가 무엇일까?

단순하다.

백엔드 프레임워크는 언어 위에서 동작하는 도구라서, 언어가 다르면 자연스럽게 프레임워크도 달라진다.

프레임워크는 단순히 "웹 요청 받는 라이브러리"가 아니고, 그 언어의 특성을 최대한 활용해서 만들어진 개발 방식의 묶음

 

Python : 간결하고 빠르게 만들기 좋음 (빠른 개발, 데이터/AI 연계)

Java : 타입 안정성, 구조화, 대규모 시스템에 강함 (기업용 시스템, 대형 서비스)

Javascript : 비동기 I/O, 이벤트 기반 처리에 강함 (웹과 연결 쉬움, 실시간 서비스, 풀스택 연계)

 

즉, 요약하자면 언어마다 주로 씅는 분야가 달라 언어 자체보다 그 언어를 사용하는 사람들의 요구를 반영해서 발전

 

- 하나로 통일은 가능한가?

현실적으로 어렵다.

프레임워크는 단독으로 존재하는 게 아니라

ⓐ. 언어 문법

ⓑ. 패키지 시스템

ⓒ. 런타임

ⓓ. 타입 시스템

ⓔ. 메모리 모델

ⓕ. 비동기 처리 방식

ⓖ. 커뮤니티 문화

위와 같은 것에 강하게 묶여 있다.

 

3. JS 기준으로 왜 Express를 사용할까?

사실 Node.js만으로도 서버는 만들 수 있다.

const http = require('http');

const server = http.createServer((req, res) => {
  if (req.url === '/') {
    res.end('home');
  } else if (req.url === '/about') {
    res.end('about');
  }
});

server.listen(3000);

 

그런데 서비스가 커질수록 직접 처리해야 할 게 너무 많아진다.

  • 라우팅
  • 요청 파싱
  • 응답 정리
  • 에러 처리
  • 미들웨어 연결
  • 쿠키/세션 처리
  • JSON body 처리

그래서 Express가 필요해짐

4. Express의 본질

"웹 서버 개발을 편하게 해주는 최소 골격"

 

Express는 Node의 기본 HTTP 위에 자주 필요한 기능을 얹어놓은 프레임워크이다.

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

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

app.listen(3000);

위가 직접 Node.js로 서버를 구현한 것보다 읽기 쉽고 구현도 편하고, URL 별로 어떤 동작을 하는지도 바로 볼 수 있다.

즉, Express는 웹 서버의 반복 작업을 추상화해주는 것이다.

 

5. Express를 쓰는 이유

1) 라우팅이 쉽다.

Node의 기본 모듈만 사용 시, req.url, req.method를 직접 비교해야함

app.get('/users', ...)
app.post('/users', ...)
app.put('/users/:id', ...)

 

2) 미들웨어 구조가 강력하다.

예를 들어, 요청이 들어오면,

ⓐ. 로그 찍음

ⓑ. JSON 데이터 파싱

ⓒ. 인증 확인

ⓓ. 실제 라우터로 전송

ⓔ. 에러 처리

즉, HTTP 요청 처리 파이프라인을 만들기 쉬움

 

3) Node.js의 비동기 방식과 잘 맞음

Express는 Node.js 위에서 돌아가므로,

아래에 강함

  • DB 조회
  • 파일 쓰기/읽기
  • 외부 API 호출

즉, Node 환경에서 웹 서버를 만들기 좋은 형태

 

4) 자유도가 높다.

Spring 같은 프레임워크는 비교적 구조가 강한 편, Express는 그에 비해 가벼운 편

장점

  • 폴더 구조를 자유롭게 잡을 수 있음
  • 필요한 라이브러리만 골라 붙일 수 있음
  • 작은 프로젝트를 빠르게 시작 가능함

즉, 정해진 구조 보다 유연한 조립이 가능

5) 프론트엔드와 연결이 자연스러움

- 언어 하나로 풀 스택 개발 가능

- JSON 처리 자연스러움

- 프론트와 데이터 구조 맞추기 용이함

- 개발 전환 비용이 낮음

따라서, 웹 개발 입문이나 MVP, API 서버에서 많이 선호

 

6. Flask, Spring, Express 차이 비교

  특징 개발 특징 사용처
Flask 가볍고 단순 Python스럽게 개발 가능
 - The Zen of Python
작은 서비스, API 서버에 좋음
Spring 구조적이고 강력 대규모 애플리케이션 관리에 유리 DI(Dependency Injection), 계층 구조,
타입 안정성이 강함
Express Node.js 기반 미들웨어 중심 자유도가 높고 웨 API 만들기 쉬움
The Zen of Python
Simple is better than complex
Readability counts
There should be one obvious way to do it
- 짧고, 읽기 쉽고, 직관적이다.