Final Project : Redis Producer Consumer
목차
- Redis Producer Consumer
- 데이터 수집 파이프라인 설계
Redis Producer Consumer
지난번에 이어서 구동시킨 redis server를 통해 message queue 방식을 활용해서 producer-consumer로 데이터를 DB에 적재시키는 파이프라인을 설계 했습니다.
급하게 파이프라인을 설계하고 데이터를 지속적으로 넣어줘야 하는 상황이라 data 수집 부분과 데이터베이스 삽입 부분을 분리해야 했습니다.
이를 위해서는 OS에서 배웠던 message passing을 사용하면 처리할 수 있는 문제였습니다. message passing은 sender와 receiver가 메일박스를 통해 메시지를 전달하는 방식입니다. 여기서 message queue의 역할은 메시지 브로커인 redis server가 맡게되고 sender와 receiver는 구동되고 있는 redis server를 통해 데이터 전달을 합니다.
여기서 일반적으로 Sender를 Producer, Receiver를 Consumer로 말하기도 합니다.
Consumer는 계속해서 데이터를 받으면서 프로그래머가 설정한 DB로 데이터를 넣습니다.
결국 Producer 코드만 수정해서 producer는 데이터를 계속해서 넣어주면 됩니다.
데이터 수집 파이프라인 설계
MSA로 설계한 파이프 라인입니다. 기본적으로 Producer는 문제가 발생해도 Consumer는 계속 msessage queue에서 데이터를 받아오게 됩니다. 설계의 장점은 다음과 같습니다.
- 지속적으로 데이터를 처리해준다는 것
- Consumer는 인자로 저장 collection을 바꿔주기 때문에 저장 확장성이 높다는 것입니다.
- Producer도 데이터에 맞춰서 모든 데이터 루틴을 다 수집하면 프로그램을 종료합니다. 따라서 마치 블록 조각을 조립하듯이 producer만 갈아 끼우면 데이터 수집을 다양하게 할 수 있다는 것입니다.
보완할 점
설계에서 보완할 점으로는 다음과 같습니다.
- Consumer의 중복 문제가 발생할 수도 있다는 점
- Consumer를 순차적으로 처리할 방법을 찾아볼 필요가 있음
- 여러 docker를 사용하므로 kubernetes를 활용하면 더 좋을 것 (공부하자)
- Producer의 병렬화를 하는 방법을 구상해 볼 필요
- 단순히 메시지 브로커보다는 활용도를 높이게 이벤트 브로커를 사용하는 것이 좋을 것 같음
- Kafka를 써본다면 다양하게 활용할 수 있을 것으로 보임 (공부하자…2)
Comments powered by Disqus.