피드로 돌아가기
Designing a Scalable Notification System using .NET, Azure Service Bus, MediatR, and SignalR
Dev.toDev.to
Backend

알림 기능을 부수적 기능이 아닌 독립 시스템으로 분리하면 확장성 있는 이벤트駆動 아키텍처를 구현할 수 있다

Designing a Scalable Notification System using .NET, Azure Service Bus, MediatR, and SignalR

Chethan Ramaswamy2026년 3월 31일3intermediate

Context

기존 시스템에서는 API가 DB 저장 후 직접 알림 로직을 호출하는 구조를 사용했다. 이 방식은 기능 증가 시 직접적인 의존성이 누적되고, 새 채널 추가 시 핵심 로직 수정이 필요했다. 알림 실패 시 핵심 비즈니스 흐름에 영향을 미치는 문제도 존재했다.

Technical Solution

  • .NET API Controller → MediatR Command로 요청을 위임하여 비즈니스 로직과 알림 처리 분리
  • 비즈니스 액션 완료 후 Service Bus에 이벤트를 발행하여 생산자와 소비자를 분리
  • Service Bus에서 이메일, UI 등 다중 소비자가 이벤트를 구독하여 독립적 처리
  • SignalR을 통해 실시간 업데이트를 연결된 클라이언트에 즉시 푸시
  • 주문 생성 로직은 알림 성공 여부와 완전히 분리됨

Impact

Key Takeaway

알림은 항상 별도의 시스템으로 설계해야 하며, 이벤트 기반 접근 방식으로 결합도를 낮추면 확장성과 유지보수성을 확보할 수 있다.


다중 채널 알림이 필요한 시스템에서 Azure Service Bus와 SignalR을 연계하면 알림 서비스와 핵심 비즈니스 로직을 분리하여 새로운 채널 추가 시 핵심 코드를 수정하지 않아도 된다

원문 읽기