피드로 돌아가기
수백만 줄의 Haskell: Mercury의 프로덕션 엔지니어링
GeekNewsGeekNews
Backend

수백만 줄의 Haskell: Mercury의 프로덕션 엔지니어링

mconcat 기반 Interceptor Hook 합성을 통한 관심사 분리 및 파이프라인 최적화

neo2026년 5월 4일1advanced

Context

Tracing, Timeout, Logging 등 다양한 횡단 관심사를 처리하는 과정에서 발생하는 복잡한 배관 코드의 관리 한계점 발생. 개별 기능을 독립적으로 유지하면서도 효율적으로 결합할 수 있는 구조적 메커니즘 필요.

Technical Solution

  • Interceptor Hook 레코드를 개별 필드 단위로 합성 가능한 구조로 설계
  • mconcat 함수를 활용하여 다수의 인터셉터를 단일 파이프라인으로 병합하는 선언적 구성 방식 채택
  • retargeting, otel, sentry 등 각 도메인별 관심사를 독립적인 모듈로 분리하여 결합도 최소화
  • 별도의 중개 로직 없이 레코드 합성을 통해 tracing부터 exception 처리까지 일괄 적용하는 컴포지션 아키텍처 구현

관심사 분리가 필요한 미들웨어 설계 시, 개별 기능을 Monoid 구조로 정의하여 선언적으로 합성하는 방식 검토

원문 읽기