목차
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로 개선된 것을 확인하였습니다.
'interviewPrep 프로젝트' 카테고리의 다른 글
| Spring에서 Mysql Replication으로 Master/Slave 이중화하기 (0) | 2023.09.09 |
|---|---|
| Spring Security를 활용한 Oauth2 적용 (0) | 2022.11.02 |
| JUnit과 Mockito로 고립된 단위 테스트 작성 (0) | 2022.10.31 |
| 로그인 상태 유지를 위한 JWT 토큰 적용 (0) | 2022.10.31 |
| 좋아요(추천) 기능과 동시성 이슈 해결 (0) | 2022.10.31 |