[sns project] Post 뉴스피드 구현 (2)

Post 뉴스피드 구현 - 2

저번에 이어서 두 번째 고민을 적어본다.

메시지 브로커 서비스인 rabbitmq를 사용하여 뉴스피드를 구현하려고 했다.

하지만 짧게 살펴본 나의 지식으로는 뉴스피드를 구현하기 어려울 것 같았다.

그 이유는 유저와 팔로우의 관계가 1:N 의 관계이므로 한번 소비하고 없어지면 않되고 모든 팔로우가 소비할 때까지 큐에 남아있어야 했다. 그렇게 하기 위해서 생각했던 것은 유저마다 큐를 생성하는 것이었다. 하지만 지금 테스트 환경에서도 유저는 2000명이고 앞으로의 대용량 서비스를 생각하면 큐가 비정상적으로 늘어나 비효율적일 것 같았다.

…이런저런 이유로 일단은! rabbimq로 뉴스피드를 구현하지 않고 다른 생각을 해보기로 했다.

다음 생각 - MongoDB?

다음으로 생각했던 것은 MongoDB를 사용하는 것이 어떨까라는 것이었다. Post 와 following user를 저장하고 following user가 뉴스피드를 검색하면 해당 유저만 DB에서 제거하면 될 것 같았다. Mysql보다 MongoDB의 성능이 대부분 좋고 임시로 데이터를 저장하고 삭제하기 때문에 ACID가 없어도 상관없어 보인다.

하지만 나의 이번 sns 프로젝트의 목표는 단순한 sns을 마이크로서비스로 구축하고 kubernetes로 관리해보는 것이다.

그러므로 이번 뉴스피드 문제는 잠깐 미루기로 했다..

임시방편으로 기존의 쿼리 (전체 post를 가져오는 것) 를 following user의 post를 1일 전 Post까지만 가져오는 것으로 수정한다.