피드로 돌아가기
Node.js 21.6.0 (Current)
Node.js BlogNode.js Blog
Backend

Node.js 21.6.0이 net.createConnection 흐름에 3개의 새로운 이벤트를 추가해 연결 시도 상태 추적 및 Happy Eyeballs 알고리즘 지원 강화

Node.js 21.6.0 (Current)

2024년 1월 15일6intermediate

Context

Node.js의 네트워크 연결 흐름에서 연결 시도 과정의 세부 상태 변화를 추적할 방법이 부족했으며, 특히 Happy Eyeballs 알고리즘 사용 시 여러 연결 시도의 성공/실패 상태를 모니터링하기 어려웠다. 또한 사용자가 연결을 파괴한 후에도 새로운 연결 시도가 시작될 수 있는 버그가 존재했다.

Technical Solution

  • connectionAttempt 이벤트 추가: 새 연결 시도가 확립될 때마다 발생하며, Happy Eyeballs 사용 시 여러 번 발생 가능
  • connectionAttemptFailed 이벤트 추가: 연결 시도 실패 시 발생하며, Happy Eyeballs 사용 시 여러 번 발생 가능
  • connectionAttemptTimeout 이벤트 추가: 연결 시도 타임아웃 발생 시 발생하며, 마지막 시도에는 발생하지 않고 Happy Eyeballs 미사용 시 전혀 발생하지 않음
  • 연결 파괴 후 재시도 버그 수정: 사용자가 연결을 파괴한 후 이전 실패한 연결 시도로 인한 새 연결 시도 방지 (PR #51045)
  • Permission Model 기능 강화: --allow-addons 플래그 추가로 Permission Model 사용 시 addon 사용 가능 (PR #51183)
  • 상대경로 지원 확대: --allow-fs-* 플래그에서 상대경로 지원으로 애플리케이션 진입점에 대한 읽기 접근만 허용 가능 (PR #50758)
  • 스냅샷 구성 옵션 추가: --build-snapshot-config 플래그로 커스텀 JSON 파일을 통한 스냅샷 구성 가능

Key Takeaway

Node.js 21.6.0은 네트워크 연결 흐름의 세밀한 이벤트 기반 모니터링으로 개발자가 Happy Eyeballs와 같은 고급 연결 전략의 동작을 추적할 수 있게 하며, 동시에 보안 권한 모델과 배포 최적화 기능을 강화하여 프로덕션 환경의 신뢰성과 보안성을 향상시킨다.


Node.js 기반 서버 애플리케이션에서 불안정한 네트워크 환경을 다루는 경우, connectionAttempt, connectionAttemptFailed, connectionAttemptTimeout 이벤트를 리스닝하면 Happy Eyeballs 알고리즘의 재시도 동작을 상세히 모니터링하고 연결 실패 시나리오별 로깅 및 메트릭 수집이 가능해진다.

원문 읽기