본문 바로가기

CS/DB5

Redis Replication 적용하기 들어가며레디스는 Stateliss의 특성을 가지므로 휘발성이 존재한다. 잘못하면 저장해둔 데이터가 다 날아가버리는 불상사가 생길 수 있다. 그래서 이를 방지하기 위해 master-slave 관계를 가진 서버를 추가로 미리 만들어 놓는다.개인 프로젝트를 진행하면서 레디스 서버 장애를 대비하기 위해 Replication 방식을 도입했다. 오늘은 스프링 부트를 통해 어떻게 적용을 했고, 테스트 결과에 대해 포스팅하려고 한다.적용 방법docker-compose.yml 우선 master 레디스 서버 1개, replica 서버 2개를 도커로 띄웠다. 기존에는 1개의 서버만 동작했으나 총 3개로 늘어났다.여기서 주의해야하는 부분은 slave 서버 컨테이너의 command 이다.command: redis-server .. 2024. 5. 18.
[Caching] 상품 주문 성능 개선 들어가며현재 진행하고 있는 프로젝트에서 레디스 캐시를 사용해 재고 관리를 하고 있다. 처음에는 write-throgh 전략을 사용했다. 데이터 정합성을 맞추는 게 가장 중요하다고 생각했다. 사용자에게 재고를 보여줄 때 정확해야하기 때문이다. 그러나 데이터베이스에 자주 접근하기 때문에 성능도 조금 떨어질 수 있다는 점이 trade-off로 존재한다.그래서 우선 가장 먼저 사용했던 전략에 대해 테스트를 수행했다. 그 다음에는 write-back 전략을 사용해서 테스트를 해보았다. 사실 write-through 방식을 사용하면서 캐시의 확실한 장점을 제대로 사용하지 못한다는 느낌이 들었다. 계속 데이터베이스에 들어갔다 나올거면 간김에 재고도 감소시키면 될텐데... 라는 생각이 들었다.캐시의 장점을 좀 더 활용.. 2024. 5. 11.
동시성 이슈를 해결하기 위한 Redisson 적용기 들어가며현재 개인프로젝트로 예약 구매 이커머스 프로젝트를 진행하고 있다. 특정 시간에 구매 버튼이 활성화되는 예약 구매 시스템이다. 해당 시간에는 많은 트래픽이 몰리는 상황을 조건으로 걸 예정이다. 이를 구현하기 위해 동시성 이슈를 학습하고 이를 해결하는 방법에 대해 알아보았다. 다양한 방법이 존재했지만 그중에서도 Redis의 Redisson을 사용하기로 했다. 그래서 여러가지 방법과 그중에서도 Redisson을 선택한 이유에 대해서 이야기 해보려고 한다. 동시성 이슈란?쉽게 말하면 공유된 자원에 동시에 접근해 발생하는 문제를 말한다.결국 Race Condition(경쟁 상태)가 발생하게 되는 것인다. Race Codition 란?둘 이상의 입력 또는 조작의 타이밍이나 순서 등이 결과값에 영향을 줄 수 .. 2024. 5. 5.
Unsigned를 사용하는 이유 보호되어 있는 글 입니다. 2024. 4. 25.