그알것 — 그럼에도 알아야 할 것들
홈질문커뮤니티
로그인
그알것 — 그럼에도 알아야 할 것들

Service

  • 홈
  • 소개
  • 질문
  • 커뮤니티

My

  • 내 워크스페이스
  • 저장한 질문
  • 작성한 답변

Policy

  • 이용약관
  • 개인정보처리방침
  • 문의

© 2026 그알것 · What Still Matters

질문 목록Architecture
Architecture

Next.js Middleware는 무엇이며 언제 사용하나요?

실무4/5
설계4/5
인간4/5
기초2/5

면접관의 질문 의도

Middleware를 "공통 함수" 정도로 외웠는지, 아니면 실행 시점·`matcher` 범위·런타임 제약·라우트 내부 검증과의 책임 분리까지 보는지 가르려는 질문이다. 후속으로 보안·성능 어느 쪽으로 파고들지를 결정하는 분기점이다.

큐레이션 답변

학습 자료

Next.js Middleware는 요청이 라우트(페이지/Route Handler)에 닿기 전에 한 번 끼어드는 전단 레이어다. 쿠키·헤더를 읽어 인증을 확인하고, 응답을 만들기 전에 리다이렉션·rewrite·헤더 주입을 처리한다. 적용 범위는 matcher로 좁히는 게 원칙이고, 그렇지 않으면 정적 자산까지 매 요청마다 함수가 깨어난다. 최신 Next에서는 같은 컨벤션이 proxy.ts로 리네이밍되며 기본 런타임이 Node.js로 바뀌는 흐름이라, 답변에서는 "전단 레이어"라는 개념과 "파일 컨벤션·런타임 버전 차이"를 분리해 말하는 게 안전하다.

좋은 답변 구조

  1. 01라우트에 닿기 전 한 번 끼는 전단 레이어라는 위치부터 짚는다
  2. 02인증·리다이렉션·rewrite·헤더 주입 같은 대표 역할과 `matcher`로 범위를 좁히는 이유를 이어 붙인다
  3. 03런타임 제약(과거 Edge / 최근 Node 전환, `proxy.ts` 리네이밍)을 짧게 정리한다
  4. 04전단 검증과 라우트 내부 인가를 어디서 끊을지 책임 경계로 마무리한다

자주 실수하는 포인트

Middleware를 일반 API 핸들러처럼 보고 DB 조회·외부 호출을 전단에 박는다
`matcher`를 안 걸어 정적 자산·헬스체크까지 매 요청마다 함수가 깨어나게 둔다
전단에서 인증을 막았다는 이유로 Route Handler·Server Action 내부 인가 검증을 생략한다
Edge 런타임 시절 제약(Node API 불가)을 최신 코드에 그대로 가정하거나, 반대로 최신 기본을 과거 프로젝트에 단정한다

실무 맥락

  • 로그인 세션 유무로 보호 라우트 진입을 끊고 로그인 페이지로 보내는 환경
  • 국가·언어·AB 테스트 분기로 같은 URL을 다른 라우트로 rewrite 하는 환경
  • 공통 보안 헤더(CSP, HSTS)·추적 헤더를 모든 응답에 일괄 주입해야 하는 환경
  • 기존 `middleware.ts` 프로젝트를 `proxy.ts`·Node 런타임으로 옮기는 마이그레이션 환경

본인 경험에 녹이는 힌트

Middleware에 무거운 호출을 넣었다가 응답이 일제히 느려진 경험이 있다면, 전단에 둘 일과 라우트로 내릴 일을 나눈 기준을 답변에 녹일 수 있다

`matcher`를 다듬어 정적 자산·헬스체크 호출이 빠지면서 함수 호출 수가 줄어든 경험이 있다면, 그 전후 수치를 그대로 들고 갈 수 있다

전단에서만 막아둔 페이지가 내부 API 직접 호출로 우회된 사고를 겪었다면, 라우트 내부 인가 검증을 다시 깐 설계 결정을 이 질문과 연결할 수 있다

Edge에서 Node 런타임으로 옮기며 라이브러리 호환을 다시 본 경험이 있다면, 런타임 제약이 왜 사람이 직접 끊어야 하는 판단인지를 자기 사례로 설명할 수 있다

커뮤니티 인기 답변

전체 0개

아직 공개된 답변이 없어요. 첫 공개 답변을 남겨보세요.

관련 꼬리 질문

Q1Middleware와 Route Handler의 책임 경계를 어떤 기준으로 나누나요
Q2`matcher` 설계를 잘못해서 운영에서 문제가 됐던 케이스를 들어보면요
Q3전단 인증만으로 부족한 이유와 Server Action·Route Handler 내부 인가가 왜 필요한가요
Q4Edge 런타임과 Node 런타임에서 같은 Middleware 코드가 다르게 동작했던 경우는 무엇이 원인이었나요
아직 답을 쓰지 않았어요.
큐레이션 답변과 다른 사람 답변을 보고, 자기 언어로 답을 정리해보면 학습 효과가 가장 큽니다.
목차
  • 01면접관의 질문 의도
  • 02큐레이션 답변
  • 03좋은 답변 구조
  • 04자주 실수하는 포인트
  • 05실무 맥락
  • 06본인 경험에 녹이는 힌트
  • 07커뮤니티 인기 답변준비중
  • 08관련 꼬리 질문