피드로 돌아가기
Dev.toBackend
원문 읽기
AsyncLocalStorage 도입을 통한 Parameter Pollution 제거 및 결합도 최적화
Request Scoped Context – How I Stopped Passing Arguments Everywhere
AI 요약
Context
요청 처리 과정에서 orderId 등 컨텍스트 정보를 하위 함수로 계속 전달해야 하는 Parameter Pollution 발생. 서비스 계층이 깊어질수록 단순 전달 목적의 매개변수가 증가하며 Tight Coupling으로 인한 유지보수 비용 상승.
Technical Solution
- Node.js async_hooks 모듈의 AsyncLocalStorage를 활용한 Request Scoped Context 설계
- 요청 진입점(Middleware)에서 context 객체를 생성하고 run() 메서드로 실행 범위 지정
- 호출 스택의 깊이에 상관없이 getStore()를 통해 현재 비동기 실행 흐름의 저장소에 직접 접근
- 비즈니스 로직 함수에서 불필요한 매개변수를 제거하여 함수의 단일 책임 원칙 준수
- 로깅 시스템과 서비스 계층 간의 의존성을 제거하고 런타임 컨텍스트 기반으로 식별자 추출
실천 포인트
- 3개 이상의 함수 체인에서 동일한 파라미터를 단순히 전달만 하는 구조인지 확인 - 새로운 컨텍스트 정보 추가 시 다수의 파일 수정이 필요한 Tight Coupling 상태인지 검토 - 전역 상태 오염 없이 요청 단위의 격리된 저장소가 필요한지 분석 - Node.js 환경에서 비동기 컨텍스트 유지 필요 시 AsyncLocalStorage 도입 검토