REDIS 5

[프로젝트/구현] Redis Replication 마스터-슬레이브 구조를 통한 분산 처리 적용 과정

이전 글2025.05.01 - [Project/대용량 트래픽 프로젝트] - [기술적 의사결정] MSA 환경에서 배송 정보 임시 저장소로 Redis를 사용한 이유 [기술적 의사결정] MSA 환경에서 배송 정보 임시 저장소로 Redis를 사용한 이유💡문제 상황우리 프로젝트에서는 주문을 생성할 때 배송 정보도 함께 입력받는 구조를 채택하고 있다. 현재 주문 처리 흐름은주문 ➡️ 재고 확인 ➡️ 결제 ➡️ 재고 차감 ➡️ 배송 ➡️ 주developer-jinnie.tistory.com 이전 글에서는 배송 데이터 임시 저장소로 Redis를 선택해 사용하게 된 기술적 의사결정 과정을 기술해보았다. 이번 글에서는 해당 구조에서 오는 문제점을 인지하고 해결하는 과정을 공유해보려 한다. 💡문제 상황현재 개발 중인 서..

[프로젝트/구현] Redis 분산락으로 재고 감소 동시성 이슈 해결하기 (2/2) (feat. Facade 패턴)

이전 글 [프로젝트/기술적 의사결정] Redis 분산락으로 재고 감소 동시성 이슈 해결하기 (1/2)필자는 MSA 기반 이커머스 프로젝트에서 상품/재고/예약구매 도메인을 맡아 진행중이다. 지난 프로젝트에서 쿠폰 도메인을 맡아 개발했을 때 Race condition 문제를 예상치 못하게 겪고 (..) 이번 프developer-jinnie.tistory.com 이전 글에서 redisson 라이브러리를 사용해 분산락을 구현하기로 결정했었다. 이번 글에선 분산락으로 재고 감소 동시성 이슈를 해결하는 과정을 기술해보려 한다. 1. Redis 및 Redisson 의존성 추가 // Redis implementation 'org.springframework.boot:spring-boot-starter-dat..

[트러블슈팅] '선착순 쿠폰 발급' 로직 - Redis를 통한 동시성 문제 해결 (2/2)

[트러블슈팅] '선착순 쿠폰 발급' 로직 - 동시성 문제 발생 (w/ Race Condition) (1/2)일반 쿠폰 발급 로직 설계를 마치고, 선착순 쿠폰 발급 로직 개발에 들어왔다가 동시성 문제에 맞닥뜨렸다. 드디어 여태 들어만 봤던 동시성 문제를 해결할 기회가 왔다. 맞다이로 드루와 개요developer-jinnie.tistory.com이전 글에서는 로직 설계를 하면서 맞닥뜨린 동시성 문제와, 이 문제에 대한 분석 및 해결 방안 등을 찾아보고 비교해봤다. 이번 글에서는 지난 글을 통해 도출해낸 해결 방법을 내 로직에 적용해보며 동시성 문제를 해결해보는 과정을 담아보려 한다. 문제 해결 과정먼저 Redis를 설치해주어야 하지만 필자의 환경에서는 전에 레디스를 통한 캐싱 작업을 해 본 경험이 있어 Re..

[트러블슈팅] '선착순 쿠폰 발급' 로직 - 동시성 문제 발생 (w/ Race Condition) (1/2)

일반 쿠폰 발급 로직 설계를 마치고, 선착순 쿠폰 발급 로직 개발에 들어왔다가 동시성 문제에 맞닥뜨렸다. 드디어 여태 들어만 봤던 동시성 문제를 해결할 기회가 왔다. 맞다이로 드루와 개요일단 서비스 및 컨트롤러, 레포 코드를 작성한 후 테스트 케이스를 작성하고 돌려봤을 땐 pass가 떴다. 그 후 postman으로 1차 기능 테스트 까지는 성공.서비스 레이어 코드123456789101112131415161718192021222324252627282930    /**     * 선착순 쿠폰 발급     */    @Transactional    public CouponIssuedResponseDto issueFirstComeCoupon(CouponIssuedRequestDto request) {      ..

[TIL] 캐시와 Redis (Redis 특징과 장점, 사용 시 주의할 점)

프로젝트에서 성능 개선을 위해 캐시를 이용해야 할 일이 생겼다. 프로젝트 적용에 앞서 캐시란 뭔지, 왜 써야하는지 등 캐시에 대한 것들과 Redis의 간결한 특징을 정리해보려 한다. 📌캐시(Cache)란?캐시란, 데이터를 빠르게 읽고 처리하기 위해 (속도가 빠른 메모리를 활용하여) 미리 데이터를 저장해두는 임시 장소이다. 계산된 값을 임시로 저장해두고, 동일한 계산 / 요청 발생 시 다시 계산하지 않고 저장된 값을 바로 사용한다고 생각하면 된다. 이 때 사용하는 임시 저장소를 '캐시'라 하고, 이런 기술을 '캐싱'이라고 한다. 📌캐시의 활용캐시는 컴퓨터 공학 전반의 매우 다양한 곳에서 쓰이는데, BE 개발자에게 익숙한 것 두 가지를 뽑아보면 DP와 JPA를 예로 들 수 있을 것 같다.Dynamic P..

Computer Science 2024.05.28