FastAPI 내부에 구성
- 비동기 처리
- 애플리케이션의 이벤트 루프를 활용하여 메시지 소비
asyncio.create_task()
를 통해 백그라운드에서 메시지 소비 가능- 웹 서버와 메시지 처리를 동시에 수행 가능
- 메모리 공유가 용이하여 상태 관리 간편
- 장점
- 단일 애플리케이션 내에서 웹 요청과 메시지 처리 통합 가능
- 리소스 효율적 사용 가능
- 복잡한 아키텍처 불필요
- 개발 및 배포 과정 단순화
- 단점
- 메시지 처리 지연 가능성
- 웹 서버 성능에 메시지 소비 영향
- 복잡한 메시지 처리에 제한적
- 스케일링에 한계 존재
- 장애 발생 시 전체 서비스 영향
- 비동기 처리
독립 Consumer 구성
- 동기/비동기 선택 가능
- 전통적인 동기 방식의 무한 루프 사용 가능
- 멀티스레딩이나 별도의 프로세스로 구현 가능
- 메시지 소비에 집중된 애플리케이션 구현
- 다양한 처리 전략 구현 용이
- 장점
- 메시지 처리에 대한 완전한 제어권
- 웹 서버와 완전히 분리된 아키텍처
- 높은 확장성과 유연성
- 장애 격리 가능
- 독립적인 스케일링 가능
- 단점
- 더 복잡한 아키텍처 필요
- 리소스 관리 오버헤드 증가
- 모니터링 및 관리 포인트 증가
- 서비스 간 통신 복잡성
- 초기 설정 및 운영 비용 증가
- 동기/비동기 선택 가능
선택 기준
소규모 프로젝트 → FastAPI 내부 Consumer
- 빠른 개발 및 배포가 필요한 경우
- 간단한 메시지 처리 작업
- 제한된 리소스 환경
복잡한 메시지, 대규모, 고성능 요구 → 독립 Consumer
- 높은 처리량이 필요한 경우
- 복잡한 비즈니스 로직 처리
- 고가용성이 요구되는 환경
- 독립적인 스케일링이 필요한 경우
'Kafka' 카테고리의 다른 글
Kafka partition consumer (0) | 2025.03.02 |
---|---|
Kafka 기본 용어 (1) | 2025.03.02 |