본문 바로가기
Tech Notes

미들웨어란 무엇일까?

by miracle-tech 2026. 1. 25.
728x90
반응형

🔗 미들웨어(Middleware) 완벽 가이드

개발할 때 꼭 알아야 할 미들웨어의 모든 것을 정리했습니다.


🤔 미들웨어란?

 
 
요청(Request)과 응답(Response) 사이에서
공통으로 처리할 일을 하는 코드

쉽게 말해서 "중간에서 가로채는 것" 이에요.

 


💡 비유로 이해하기

 
 
┌─────────────────────────────────────────────────────────────┐
│                                                             │
│  🏢 회사 방문 과정                                          │
│                                                             │
│  방문자 → 로비 → 신분증 확인 → 방문증 발급 → 사무실        │
│              └─────────────────────────────┘                │
│                    이 부분이 "미들웨어"                      │
│                                                             │
│  실제 목적(사무실 방문) 전에                                │
│  공통으로 거쳐야 하는 단계들                                │
│                                                             │
└─────────────────────────────────────────────────────────────┘

📊 미들웨어 동작 흐름

 
 
Client 요청
     │
     ▼
┌─────────────┐
│ 미들웨어 1  │  → 로깅
└─────────────┘
     │
     ▼
┌─────────────┐
│ 미들웨어 2  │  → 인증 체크
└─────────────┘
     │
     ▼
┌─────────────┐
│ 미들웨어 3  │  → 권한 체크
└─────────────┘
     │
     ▼
┌─────────────┐
│  실제 로직  │  → 주문 생성, 결제 등
└─────────────┘
     │
     ▼
응답 (Response)

미들웨어는 순서대로 실행되고, 하나라도 실패하면 다음으로 안 넘어가요.


🎯 미들웨어를 쓰는 이유


로깅 모든 API에 로깅 코드 작성 미들웨어 하나로 전체 적용
인증 모든 API에 인증 체크 코드 미들웨어 하나로 전체 적용
에러 처리 모든 API에 try-catch 미들웨어 하나로 전체 적용

핵심: 중복 코드 제거 + 공통 로직 한 곳에서 관리


📋 주요 미들웨어 종류

1. 요청/응답 로깅

 
 
모든 API 호출을 기록

[요청] POST /api/order - body: {productId: 123}
[응답] POST /api/order - 200 - 150ms
기록                                                                           내용예시
HTTP 메서드 GET, POST, PUT, DELETE
요청 경로 /api/order
상태 코드 200, 400, 500
소요 시간 150ms
Request ID req_abc123

2. Request ID 생성

 
 
모든 요청에 고유 ID 부여 → 추적 가능

[req_abc123] 요청 수신 - POST /order
[req_abc123] 재고 확인 중...
[req_abc123] 결제 처리 중...
[req_abc123] 응답 완료 - 200

문제 생기면 req_abc123 검색해서 전체 흐름 확인!


3. 인증 (Authentication)

"너 누구야?" 확인

토큰 있음? → 유효함? → 통과
토큰 없음? → 401 Unauthorized
체크 항목실패 시
토큰 존재 여부 401
토큰 유효성 401
토큰 만료 여부 401

4. 인가 (Authorization)

"넌 이거 할 수 있어?" 확인

관리자 페이지 접근
→ 로그인 됨? (인증)
→ 관리자임? (인가)
→ 통과
체크 항목실패 시
권한 레벨 403
리소스 접근 권한 403
기능 사용 권한 403

5. 에러 핸들링

 
 
어디서든 에러 발생하면 여기서 처리

try {
  실제 로직 실행
} catch (error) {
  → 로깅
  → 적절한 응답 반환 (400, 500 등)
  → 필요시 알림
}

6. CORS (Cross-Origin Resource Sharing)

 
 
다른 도메인에서 API 호출 허용 여부

프론트: https://myapp.com
백엔드: https://api.myapp.com

→ 도메인이 다름
→ CORS 미들웨어가 허용해줘야 호출 가능

7. Rate Limiting

 
 
요청 횟수 제한

"1분에 100번까지만 허용"

→ 101번째 요청 → 429 Too Many Requests
설정                                                                            예시

 

제한 단위 IP, 유저, API 키
시간 단위 분당, 시간당, 일당
제한 횟수 100회/분

8. 요청 검증 (Validation)

 
 
요청 데이터가 올바른지 체크

POST /api/order
body: { productId: "abc" }  ← 숫자여야 하는데?

→ 400 Bad Request

9. 압축 (Compression)

 
 
응답 데이터를 압축해서 전송

원본: 100KB
압축: 20KB

→ 네트워크 비용 절감, 속도 향상

10. 보안 헤더

 
 
보안 관련 HTTP 헤더 자동 추가

X-Content-Type-Options: nosniff
X-Frame-Options: DENY
X-XSS-Protection: 1; mode=block

📊 미들웨어 실행 순서 (권장)

 
 
1. 보안 헤더
2. CORS
3. Request ID 생성
4. 요청 로깅
5. 압축
6. 요청 파싱 (JSON, form-data)
7. Rate Limiting
8. 인증 (Authentication)
9. 인가 (Authorization)
10. 요청 검증
11. ─────────────────
12.   실제 비즈니스 로직
13. ─────────────────
14. 에러 핸들링
15. 응답 로깅

⚠️ 미들웨어 vs 일반 로직

구분                                                                                                                            미들웨어               일반 로직

 

모든 API에 공통
특정 API에만
인증/인가
로깅
비즈니스 로직
주문 생성
결제 처리

🎯 미들웨어 체크리스트

  • Request ID 생성
  • 요청/응답 로깅
  • 에러 핸들링
  • 인증 (필요시)
  • 인가 (필요시)
  • CORS (프론트-백엔드 분리 시)
  • Rate Limiting (API 서비스 시)
  • 보안 헤더

📌 한 줄 요약

 
 
미들웨어 = 모든 요청에 공통으로 적용할 로직을 한 곳에서 관리

→ 중복 제거
→ 유지보수 쉬움
→ 일관성 보장
728x90

'Tech Notes' 카테고리의 다른 글

[Claude] CLAUDE.md 에 대하여  (0) 2026.01.28
[PROMPT] 서비스용  (0) 2026.01.25
로깅(Logging)  (0) 2026.01.25
[배포플랫폼] Vercel 에서 트래픽 알아보는 법  (0) 2026.01.24
[PROMPT] 시니어가 되기 위한 준비  (0) 2026.01.20