earthkingman / 42Swim

42서울 QnA 서비스
14 stars 3 forks source link

좋아요에 관한 로직 #20

Closed earthkingman closed 3 years ago

earthkingman commented 3 years ago

좋아요를 처리하기 위해 간단하게 로직을 그려봤습니다.

좋아요를 눌렀을 때 image

게시글을 불러올 때 image

게시글을 불러올 때 좋아요에 대한 정보가 메모리에 저장되어있지 않은 경우 image

hainho commented 3 years ago

좋아요를 눌렀을때 그 즉시 데이터베이스에 업데이트 하고 클라이언트에게 응답한다면 그 응답은 지연될 수 있을 것 같습니다.

이를 위한 해결책으로 redis의 백업 방식 2가지가 있습니다.

rdb방식

일정한 주기 마다 redis의 스냅샷을 저장하는 방식입니다. 이 방식을 사용하면 사용자의 요청시 db를 사용하지 않고 redis 단계까지만 사용하여 응답 할 수 있으므로 빠른 응답이 가능합니다.

그러나 이 방식의 경우 스냅샷의 주기 사이에 캐시에 저장된 데이터에 문제가 생기면 최근 스냅샷과 데이터 문제 발생 사이의 데이터를 잃을 수 있으므로 중요하지 않은 데이터를 빠르게 처리할때 유용합니다.

저희 서비스의 좋아요 기능 같은 경우에는 빠른 응답도 중요하지만 사용자와의 신뢰성도 중요하기 때문에 데이터의 정확성을 보장할 수 없는 이 방식은 적합하지 않다고 생각 됩니다.

aof방식

redis에 데이터 저장시 그 데이터를 백업 위치에 업데이트 할수 있도록 해당 명령을 버퍼에 쌓는 방식입니다. 데이터 업데이트 명령을 버퍼에 쌓는 것으로 백업을 처리하고 서버는 redis에서 데이터 처리를 하여 빠르게 클라이언트에게 응답이 가능합니다.

이 방식은 사용자에게 빠른 응답과 좋은 신뢰성을 제공할 수 있습니다.

https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=rnjsrldnd123&logNo=221566841338 https://mozi.tistory.com/369 https://kimdubi.github.io/nosql/redis_persistent/

hainho commented 3 years ago

좋아요는 RDBMS에 저장하는 로직으로 결정되었습니다. 자세한 사항은 이전 좋아요 이슈에 작성되어있습니다.