TechFeedTechFeed
백엔드난이도 보통며칠(라우트 수에 따라)

Express에서 Fastify로 마이그레이션

ExpressFastify
요약: Fastify는 Express와 유사한 라우팅에 더 빠른 처리량과 스키마 기반 검증·직렬화를 제공합니다. req/res가 request/reply로 바뀌고 미들웨어는 플러그인·훅으로 전환됩니다.

왜 옮기나

  • Fastify는 JSON 직렬화 최적화로 Express보다 처리량이 높습니다.
  • JSON 스키마 기반 요청 검증·응답 직렬화가 내장돼 있습니다.
  • 플러그인 캡슐화로 대규모 앱 구조가 깔끔해집니다.

전제 — 현재 상태

Express app, app.get/post, req/res, express 미들웨어 체인.

마이그레이션 단계

1
Fastify 설치

Fastify와 필요한 플러그인을 설치합니다.

npm install fastify
2
앱 초기화 교체

express()를 fastify()로 바꾸고 리스닝을 async listen으로 변경합니다.

const fastify = require('fastify')({ logger: true })
await fastify.listen({ port: 3000 })
3
핸들러 시그니처 변경

req/res 대신 (request, reply)를 받고, res.json 대신 reply.send 또는 return 값을 씁니다.

fastify.get('/users', async (request, reply) => {
  return { users: [] } // 자동 JSON 직렬화
})
4
미들웨어 → 훅/플러그인

app.use 미들웨어는 Fastify의 onRequest/preHandler 훅이나 플러그인(@fastify/cors 등)으로 옮깁니다.

fastify.register(require('@fastify/cors'), { origin: true })

⚠️ 막히는 케이스 · 함정

  • Express 미들웨어를 그대로 쓰려면 @fastify/express 호환 레이어가 필요하지만 성능 이점이 줄어듭니다.
  • 에러 처리는 setErrorHandler로 중앙화하며 Express의 next(err) 패턴과 다릅니다.
  • 요청 본문 파싱·검증은 라우트의 schema 옵션으로 선언하는 방식이 권장됩니다.
✅ 검증: 각 엔드포인트의 응답·상태코드·에러 처리가 동일한지 통합 테스트로 확인하고, 부하 테스트로 처리량 개선을 확인합니다.
FastifyExpress백엔드Node.jsAPI

관련 가이드

CORS 에러, 프리플라이트, Access-Control-Allow-Origin | 로컬은 되는데 배포하면 막히면?클로드 AI 가격, 무료 한도, 부가세, 소넷 | 결제 직후 첫 주에 어디를 찍을까?클로드 AI 가격, 무료 한도, 부가세, 소넷·오퍼스 | 월 실비용은 어디서 갈라지나?error.tsx, not-found, global-error, digest | 없는 글인데 500이 뜨면?