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

관련 가이드

Kotlin + Spring Boot 3 실전 튜토리얼 — Coroutines, JWT 인증, PostgreSQL, Docker 배포ElysiaJS 실전 튜토리얼 — Bun 기반 TypeScript API 서버, JWT 인증, Swagger 문서화, Docker 배포Supabase vs Firebase vs PlanetScale 비용 비교 2026 — MAU별 실비용·기능·선택 기준PostgreSQL 커넥션 풀 고갈로 서비스가 멈춘 새벽 3시 — PgBouncer 도입과 연결 관리 재설계 실전 기록