Node.js 22 LTS 준비와 성능 측정
배경
4월에 출시된 Node.js 22가 10월 LTS 예정이라 미리 검증 작업을 시작했다. 현재 프로덕션은 Node.js 20 LTS를 사용 중이며, 주요 API 서버들의 마이그레이션 가능성을 판단하기 위한 벤치마크가 필요했다.
주요 변경사항
V8 엔진이 12.4로 업그레이드되면서 성능 개선이 있었고, require() 동기화 ESM 지원이 실험 단계로 추가되었다. 하지만 가장 눈에 띈 건 Maglev 컴파일러의 개선이었다.
성능 테스트
실제 API 엔드포인트 중 가장 트래픽이 많은 3개를 선정해 autocannon으로 부하 테스트를 진행했다.
// benchmark.js
const autocannon = require('autocannon');
const result = await autocannon({
url: 'http://localhost:3000/api/posts',
connections: 100,
duration: 30,
pipelining: 1
});
console.log(`Req/sec: ${result.requests.mean}`);
console.log(`Latency: ${result.latency.mean}ms`);
결과:
- Node.js 20: 평균 8,200 req/s, latency 12.1ms
- Node.js 22: 평균 8,950 req/s, latency 11.2ms
약 9% 정도의 성능 향상이 있었다. JSON 파싱과 직렬화가 많은 워크로드에서 특히 개선이 컸다.
주의사항
테스트 중 발견한 이슈:
- 일부 네이티브 모듈이 아직 Node.js 22 지원 안 됨
--experimental-require-module플래그는 프로덕션에서 사용 불가- OpenSSL 3.0 기본 설정 변경으로 레거시 암호화 관련 테스트 실패
특히 bcrypt 모듈이 22에서 빌드 실패가 있어서 bcryptjs로 임시 교체했다.
결론
성능 개선은 확실하지만, 10월 LTS 발표 이후 한 달 정도 지켜본 뒤 마이그레이션 계획을 세우기로 했다. 당장은 스테이징 환경에서만 22 버전을 적용해두고 모니터링 중이다.