백엔드난이도 보통⏱ 며칠(라우트 수에 따라)
Express에서 Fastify로 마이그레이션
Express→Fastify
요약: Fastify는 Express와 유사한 라우팅에 더 빠른 처리량과 스키마 기반 검증·직렬화를 제공합니다. req/res가 request/reply로 바뀌고 미들웨어는 플러그인·훅으로 전환됩니다.
왜 옮기나
- Fastify는 JSON 직렬화 최적화로 Express보다 처리량이 높습니다.
- JSON 스키마 기반 요청 검증·응답 직렬화가 내장돼 있습니다.
- 플러그인 캡슐화로 대규모 앱 구조가 깔끔해집니다.
전제 — 현재 상태
Express app, app.get/post, req/res, express 미들웨어 체인.
마이그레이션 단계
1
Fastify 설치
Fastify와 필요한 플러그인을 설치합니다.
npm install fastify2
앱 초기화 교체
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