피드로 돌아가기
Request Scoped Context – How I Stopped Passing Arguments Everywhere
Dev.toDev.to
Backend

AsyncLocalStorage 도입을 통한 Parameter Pollution 제거 및 결합도 최적화

Request Scoped Context – How I Stopped Passing Arguments Everywhere

Neel-Vekariya2026년 6월 29일4intermediate

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 도입 검토

원문 읽기