피드로 돌아가기
I upgraded a .NET library into a microservices platform - RabbitMQ, OpenTelemetry, and Azure AI
Dev.toDev.to
Backend

동기식 AI 호출 병목을 RabbitMQ 기반 비동기 아키텍처로 해결하여 API 응답 속도 100ms 미만 달성

I upgraded a .NET library into a microservices platform - RabbitMQ, OpenTelemetry, and Azure AI

Aftab Bashir2026년 4월 12일4intermediate

Context

Azure OpenAI와 Search를 통합한 .NET 라이브러리 기반의 Monolith 구조로 운영. AI 생성 요청 시 10~30초가 소요되는 동기식 HTTP 호출로 인해 Thread Exhaustion 및 서비스 전체 가용성 저하 문제 발생.

Technical Solution

  • API Gateway, SearchWorker, AiWorker로 역할을 분리한 Microservices 아키텍처 전환
  • RabbitMQ와 MassTransit 추상화 계층 도입을 통한 비동기 Message-driven 통신 구조 설계
  • C# Record를 활용한 Immutable Message Contract 정의 및 Correlation ID 기반의 분산 트래킹 구현
  • MassTransit의 Exponential Backoff 기반 Retry 전략 및 Dead-letter Queue 적용으로 AI API 호출의 신뢰성 확보
  • Serilog의 Structured Logging과 OpenTelemetry를 통한 분산 환경의 가시성(Observability) 확보
  • Docker Compose Health Check를 통한 인프라 의존성 제어 및 서비스 기동 순서 최적화

1초 이상의 시간이 소요되는 작업은 동기 API 대신 Correlation ID를 반환하는 비동기 메시징 모델 검토. 메시지 브로커 직접 의존 대신 MassTransit 같은 추상화 라이브러리를 활용하여 인프라 교체 유연성 확보. 분산 시스템 설계 시 Correlation ID를 로그와 트레이스에 일관되게 포함하여 추적성 확보.

원문 읽기