2024/05 22

캐싱을 통한 인기글 조회 API 성능 개선

인기글 선별프로젝트에서 구현한 기능 중 인기글 조회 기능이 있다. 그런데 인기글 조회 API는 자주 호출된다는 특징이 있으므로, 캐싱을 적용해봤다.  인기글에 대한 캐싱을 적용하기 전에, 우선 인기글은 어떻게 정의할까? 인기글은 한시간 동안 조회수가 가장 많은 10개의 게시글이다. 그리고 인기글을 선별하기 위해 레디스를 사용했는데, 그 방식은 다음과 같다.게시글 조회시 조회수를 레디스에 반영한다.이때 레디스에 저장되는 데이터 형식은 다음과 같다.key: 날짜와 시간이 String 형태로 저장된다.value: 한시간 동안 조회된 게시글 id들이 sortes set 형태로 저장된다. 이때 정렬 기준은 조회수이다.다음 사진을 예로 들면, key는 "2024-05-09T16:00"가 되고, 그 값은 게시글 id..

카테고리 없음 2024.05.09

RabbitMQ

메시지 브로커가 필요한 이유RabbitMQ는 AMQP(Advanced Message Queuing Protocol)라는 표준 프로토콜을 사용하는 메시지 브로커로, 송신자로부터 전달받은 메시지를 수신자로 전달해주는 중간 역할을 한다. 즉, 메시지 큐를 관리하고 애플리케이션 간에 메시지를 송수신할 수 있게 해준다. 그런데 이러한 메시지 브로커가 필요한 이유가 뭘까? 즉, 애플리케이션 간에 직접적인 통신이 아니라, 굳이 중간에 메시지 브로커를 두는 이유가 뭘까?비동기 처리를 통해 애플리케이션 간 결합도를 낮출 수 있다. 만약 메시지 브로커를 사용하지 않고 송신 측과 수신 측이 직접적으로 통신한다면 어떻게 될까? 동기적 통신의 경우, 송신 측은 수신 측에게 작업을 요청하고 요청에 대한 응답이 돌아올 때까지 블로..

Backend/RabbitMQ 2024.05.02