피드로 돌아가기
Node.js BlogBackend
원문 읽기
Node.js 0.11.2가 라운드로빈 로드밸런싱, 스트림 동작 순서 보장, 새로운 디버거 기능으로 클러스터 관리와 스트림 처리 안정성 향상
Node.js 0.11.2 (Unstable)
AI 요약
Context
기존 Node.js에서 cluster 모듈의 로드밸런싱이 효율적이지 않았으며, 스트림의 'finish' 이벤트 순서가 보장되지 않아 데이터 처리 안정성이 낮았다. 멀티워커 환경에서 디버깅이 어려웠다.
Technical Solution
- cluster 모듈에 라운드로빈 로드밸런싱 도입: Ben Noordhuis가 워커 간 요청 분배 방식을 라운드로빈 방식으로 변경
- 스트림의 'finish' 이벤트 순서 보장: isaacs가 스트림 내부 로직을 수정하여 이벤트 발생 순서를 일정하게 보장
- 스트림에 .cork(), .uncork(), ._writev 메서드 추가: Fedor Indutny가 버퍼링 및 배치 처리 메커니즘 도입
- cluster 환경에서 워커별 독립적 디버그 포트 할당: Miroslav Bajtoš가 각 워커가 고유한 디버그 포트를 가지도록 구현
- 디버거가 아직 로드되지 않은 스크립트에 브레이크포인트 설정 가능: Miroslav Bajtoš가 미리 선언된 브레이크포인트 지원
- vm 모듈에 timeout 인수 지원: Andrew Paprocki가 스크립트 실행 시간 제한 기능 추가
- 기본 EventEmitter 최대 리스너 수 설정 및 반환값 개선: Sam Roberts와 Ben Noordhuis가 EventEmitter#setMaxListeners()가 this를 반환하도록 변경, EventEmitter.defaultMaxListeners 추가
Key Takeaway
Node.js의 안정적 버전 출시를 위한 기반 기술을 강화하는 것이 중요하다. 클러스터 관리, 스트림 안정성, 디버깅 인프라 등 기초 기능의 개선이 프로덕션 환경의 신뢰성을 크게 높인다.
실천 포인트
Node.js 클러스터 기반 멀티워커 애플리케이션을 개발할 때
0.
1
1.2 이상에서 라운드로빈 로드밸런싱을 활용하면 워커 간 요청 분배를 균등하게 할 수 있다. 스트림 처리가 중요한 파이프라인에서는 'finish' 이벤트 순서 보장과 .cork()/.uncork() 메서드로 배치 쓰기를 구성하면 데이터 처리 안정성과 성능을 동시에 확보할 수 있다.