피드로 돌아가기
Node.js BlogBackend
원문 읽기
Node.js 15.6.0이 HTTP Agent의 기본 스케줄링 전략을 LIFO로 변경하고 AbortSignal, 보안 힙, X509Certificate API 지원 추가
Node.js 15.6.0 (Current)
AI 요약
Context
Node.js 개발팀은 네트워킹, 암호화, 자식 프로세스 관리 영역에서 기능 부재와 성능 최적화 기회를 식별했다. HTTP Agent의 스케줄링 전략, 신호 기반 작업 중단, 그리고 보안 관련 API들이 기존 요구사항을 충족하지 못하고 있었다.
Technical Solution
- HTTP Agent의 기본 스케줄링 전략을 FIFO에서 LIFO로 변경: 최근 사용된 소켓을 우선 재사용하여 메모리 효율성 개선
- AbortSignal 지원 확대: net.Server의 listen() 메서드, child_process의 fork() 메서드에서 AbortController를 통한 작업 중단 지원
- child_process에 'overlapped' stdio 플래그 추가: Windows 플랫폼에서 표준 입출력 처리 옵션 확장
- 암호화 모듈 기능 강화: 보안 힙 기본 지원, X509Certificate API 도입, crypto.randomUUID() 메서드 추가
- 프로세스 메모리 접근 최적화: process.memoryUsage()에서 RSS 값에 대한 직접 접근 추가로 페이지 반복 순회 제거
- 네이티브 직렬화(serdes) 생성자 버그 수정: V8 스냅샷 역직렬화 과정의 안정성 개선
- 의존성 업그레이드: npm을 7.4.0으로, nghttp2를 1.42.0으로 업데이트
Impact
아티클에 정량적 성능 지표가 명시되어 있지 않다.
Key Takeaway
Node.js 버전 업데이트는 기존 API의 점진적 확장(AbortSignal 통합, 메모리 접근 최적화)과 새로운 암호화 표준 지원(X509Certificate, 보안 힙)을 동시에 추진함으로써 하위 호환성을 유지하면서도 개발자 경험과 보안 수준을 높였다.
실천 포인트
Node.js를 사용하는 백엔드 팀에서 HTTP 연결 재사용이 빈번한 서비스를 운영할 경우, Node.js
1
5.
6.0 이상으로 업그레이드하면 LIFO 스케줄링으로 인한 소켓 재사용률 증가의 이점을 자동 적용받을 수 있다. 또한 기존 AbortController를 사용 중이라면, 이제 child_process.fork()에서 직접 활용 가능하므로 정상/비정상 종료 처리 로직의 일관성을 확보할 수 있다.