- 이벤트 기반 아키텍처에서 대용량 파일(예: 비디오)을 메시지 큐(RabbitMQ)로 직접 처리할 경우, 큐의 작은 데이터 처리 한계로 인해 성능 저하, RAM 압박, 처리량 문제 발생. 📉
- 민감한 대용량 데이터를 제3자 메시지 큐에 직접 전송하는 것을 피해야 할 필요성 등 데이터 보호 문제도 존재. 🔒
- 클레임 체크 패턴(Claim-Check Pattern)은 이러한 문제를 해결하기 위해 대용량 파일을 메시지 큐에 직접 보내는 대신, 파일을 전용 스토리지(예: Amazon S3, MinIO)에 업로드하고 해당 파일의 참조 정보(토큰, URL)만 메시지 큐를 통해 전송하는 방식. 🏷️
- 업로더 서비스(Service A)는 대용량 파일을 스토리지에 저장한 후, 파일의 고유 식별자나 스토리지 URL을 포함하는 '클레임 체크 토큰'을 메시지 큐에 발행. 📤
- 메시지 큐로부터 클레임 체크 토큰을 받은 구독 서비스(Service B)는 토큰 내의 정보를 이용해 스토리지에서 실제 대용량 파일을 직접 다운로드하여 처리. 📥
- 이 패턴은 네트워크 대역폭 최적화, 메시지 큐의 RAM 및 처리량 부담 감소, 대용량 파일의 내구성 있는 저장, 민감 데이터 보호 강화 등 다양한 이점을 제공. 🚀
- 10MB 미만의 작은 파일은 메시지 큐를 통해 직접 전송하는 것이 여전히 효율적일 수 있으므로 상황에 따라 적절한 방법을 선택해야 함. 💡
- 스토리지에 저장된 파일이 더 이상 필요 없을 경우, 처리 후 즉시 삭제하거나 주기적인 동기화를 통해 오래된 데이터를 정리하는 데이터 삭제 관리 메커니즘을 고려해야 함. 🗑️
- 실제 구현 예시로 Docker Compose를 활용하여 업로더 서비스, 프로세서 서비스, RabbitMQ, S3 호환 로컬 스토리지(MinIO)를 연동한 시스템 구성이 시연됨. 💻





