본문 바로가기

interviewPrep 프로젝트

문제 필터링 시 서버 부하를 고려한 캐시 전략

목차

1. 문제 상황 분석(문제 필터링 시 서버 부하 발생)

2. 선택 가능한 기술 분석

3. 기술 선택 및 구현

 

 

1. 문제 상황 분석

- 사용자가 문제에 대한 과목(ex)네트워크, 데이터베이스, 자바 등)을 필터를 통해서 요청할 수 있습니다. 이 때,

  사용자가 문제를 자주 변경하거나, 여러 사용자가 필터를 통해서 요청하는 경우,

  이러한 요청들이 매번 데이터베이스 쿼리로 만들어져서 DB에 I/O 요청을 해야 하는데,

  이것이 서버 부하로 이어질 수 있다고 판단했습니다.

  따라서 적절한 캐시 전략을 도입해서 이러한 문제를 해결해야겠다고 생각했습니다. 

 

2. 선택 가능한 기술 분석

- 선택 가능한 기술로는 Redis와 Memcached가 있다고 판단하였습니다.

  이 중에서 Redis를 선택했는데, 그 이유는 다음과 같습니다.

  (1) 다양한 기능 제공

  - Redis는 Memcached가 제공하지 않는 다양한 기능을 제공합니다. 

   예를 들어, 다양한 자료구조를 제공하고, Replication, Pub/Sub과 같은 기능을 제공합니다.

    Redis를 선택하면 이러한 다양한 기능을 활용할 수 있다는 장점이 있을 것으로 판단했습니다.

  (2) Redis 오픈소스 발전 속도 및 레퍼런스 

  - Redis는 매우 빠르게 발전한 오픈소스 프로젝트이고, 또한 많은 레퍼런스를 참고할 수 있습니다.

   따라서 개발 시 Redis를 활용하면 이러한 점에서 개발에 유리할 것으로 판단했습니다.

 

 

3. 기술 선택 및 구현

- Redis를 선택하고, 필터 관련 메소드에 Redis를 적용하였습니다. 

  데이터를 캐시하면 해당 key, value가 Redis에 잘 저장되는지 확인했습니다.

  해당 메소드에 대한 응답 시간을 측정하였습니다.

  응답 시간을 측정하였을 때, 해당 메소드에 대한 응답 시간이 600ms에서 15~20ms로 개선된 것을 확인하였습니다.