TIL

Redis의 문제점

Big Iron 2023. 4. 25. 11:24

프로젝트를 진행하고 약 3주의 시간이 지났다. 3주동안 프로젝트 설계와 mvc 개발을 진행했고 오류의 범위를 좁히고자 최대한 명확한 코드를 작성하기로 했었다. 예를 들어 중복검사와 같은 기능이 필요하다면 jpa를 사용한 find가 아닌 exist를 사용해 boolean 값으로 반환시켜 해당 코드를 작성하지 않은 팀원도 알기 쉽게 하였다. 그리고 변수명과 함수명을 지으며 많은 고민을 했던 것 같다.

약 3주의 시간이 이렇게 지나고 멘토님과 중간 발표 시간이 있었고 사전 질문으로 아래와 같은 질문을 받았다.

--- 질문 ---
Redis는 메모리 DB라서 서버가 리부팅되면 모든 데이터가 삭제됩니다.
이런 관점에서 서버를 리부팅해야 할 일이 발생했을 때 인기 검색어가 노출되지 않을 수 있을 것 같은데요.
어떻게 해결할 수 있을까요?

--- 내가 생각한 대답 ---
1. 해당 문제를 해결하기 위해 데이터를 지속적으로 저장하는 방법을 사용해야하며 어떤 데이터를 다루는지가 중요할 듯 함.

rdb - 주기적인 백업을 지원하기에 일반적으로 데이터의 중요도가  낮은 상황에서 사용할 수 있음. -> 예시 비회원 주문관리, 결제 정보
aof - 중요도가 조금 있는 세션에대한 관리나 회원들의 랭킹 등의 정보에 사용하면 좋을듯 함. -> 예시 회원 장바구니, 인증 상태
redis cluster - 대규모 트래픽, 안정적인 면에서 가장 우수하며 여러대의 서버를 두고 분산 처리하는 시스템. 하지만 분산처리 하는 만큼 관리 인력과 유지보수비용 높다. -> 안정성을 위해 많이 쓰인다.
-> 한개 이상의 노드를 두는 롤링, 블루그린 배포를 생각해볼 수 있지 않을까 ?

처음 질문을 보고 개념적인 대답밖에 떠올리지 못했다. 이유는 그동안 코드를 작성하며 사용했을 때의 문제보다 코드의 가독성에 중점을 두었기 때문이라고 생각한다.


위의 질문을 받고 팀원과 그동안 작성한 코드에대해 코드 리뷰 시간을 갖고 어떤 이유로 작성했는지, 다른 방법은 없는지에대해 많은 고민을 하고 수정될 부분을 확인할 수 있었다. 이후에 jmeter를 사용하여 현재 코드와 개선된 코드의 부하 테스트를 진행해 실제 성능의 차이가 얼만큼 나는지 데이터 시각화를 진행하는 코드 리팩토링을 진행할 계획이다.

'TIL' 카테고리의 다른 글

데이터 정규화  (0) 2023.05.04
코드 리팩토링  (0) 2023.05.01
Mock & Mokito 테스트코드  (1) 2023.04.17
웹 사이트 CSRF공격과 XSS 공격  (0) 2023.04.10
포스트맨 이용한 카카오톡 로그인 테스트 - OAuth2  (0) 2023.03.30