Kafka

Kafka consumer 사용 위치 비교

gudaeng 2025. 3. 2. 22:28
  1. FastAPI 내부에 구성

    • 비동기 처리
      • 애플리케이션의 이벤트 루프를 활용하여 메시지 소비
      • asyncio.create_task()를 통해 백그라운드에서 메시지 소비 가능
      • 웹 서버와 메시지 처리를 동시에 수행 가능
      • 메모리 공유가 용이하여 상태 관리 간편
    • 장점
      • 단일 애플리케이션 내에서 웹 요청과 메시지 처리 통합 가능
      • 리소스 효율적 사용 가능
      • 복잡한 아키텍처 불필요
      • 개발 및 배포 과정 단순화
    • 단점
      • 메시지 처리 지연 가능성
      • 웹 서버 성능에 메시지 소비 영향
      • 복잡한 메시지 처리에 제한적
      • 스케일링에 한계 존재
      • 장애 발생 시 전체 서비스 영향
  2. 독립 Consumer 구성

    • 동기/비동기 선택 가능
      • 전통적인 동기 방식의 무한 루프 사용 가능
      • 멀티스레딩이나 별도의 프로세스로 구현 가능
      • 메시지 소비에 집중된 애플리케이션 구현
      • 다양한 처리 전략 구현 용이
    • 장점
      • 메시지 처리에 대한 완전한 제어권
      • 웹 서버와 완전히 분리된 아키텍처
      • 높은 확장성과 유연성
      • 장애 격리 가능
      • 독립적인 스케일링 가능
    • 단점
      • 더 복잡한 아키텍처 필요
      • 리소스 관리 오버헤드 증가
      • 모니터링 및 관리 포인트 증가
      • 서비스 간 통신 복잡성
      • 초기 설정 및 운영 비용 증가

선택 기준

  • 소규모 프로젝트 → FastAPI 내부 Consumer

    • 빠른 개발 및 배포가 필요한 경우
    • 간단한 메시지 처리 작업
    • 제한된 리소스 환경
  • 복잡한 메시지, 대규모, 고성능 요구 → 독립 Consumer

    • 높은 처리량이 필요한 경우
    • 복잡한 비즈니스 로직 처리
    • 고가용성이 요구되는 환경
    • 독립적인 스케일링이 필요한 경우

'Kafka' 카테고리의 다른 글

Kafka partition consumer  (0) 2025.03.02
Kafka 기본 용어  (1) 2025.03.02