프로젝트 개요이번 프로젝트에서는 분산 시스템 환경에서 발생하는 다양한 문제 상황중, 서로 다른 요청이 하나의 데이터에 몰리게 되어 발생하는 레이스 컨디션(Race Condition) 문제를 분산 락을 이용해 해결하는 미니 프로젝트를 진행하고 이를 정리했습니다.이전글 - [Redis] Redis 분산락(Distributed Lock)을 이용한 재고관리 구현 - 1저번 글에서는 프로젝트를 위한 환경설정과 애플리케이션 시작시 Redis Warmup, 서비스 시점 DB - Redis 실시간 동기화를 위한 처리등을 진행했습니다.이번 글에서는 재고 관리 관련 API 개발 및 예외처리 그리고 Jedisson을 이용한 Redis 분산락을 적용하고 테스트 했던 내용을 정리했습니다.프로젝트 전체 코드는 아래 github을..
프로젝트 개요이번 프로젝트에서는 분산 시스템 환경에서 발생하는 다양한 문제 상황중, 서로 다른 요청이 하나의 데이터에 몰리게 되어 발생하는 레이스 컨디션(Race Condition) 문제를 분산 락을 이용해 해결하는 미니 프로젝트를 진행하고 이를 정리했습니다. 코드들을 모두 게시글에 작성할 수 없어, 일부 설정은 다른 게시글에 정리된 내용을 링크하였습니다.프로젝트 전체 코드는 아래 github을 통해 확인할 수 있습니다.https://github.com/kwj2435/spring-redis-stock-manager기술 스택Spring Boot 3.4.1Spring Data JPAJava 17Redis 7.0KafkaH2 Database 구현 요구 사항주요 기능재고 등록: 제품과 초기 재고량을 Redis에..
Redis 클러스터(Cluster)Redis 클러스터(Redis Cluster)는 분산 환경에서 데이터의 가용성과 확장성을 제공하기 위해 설계된 Redis의 네이티브 분산 시스템이다. Redis 클러스터는 데이터가 자동으로 여러 노드에 분산되며, 고가용성과 샤딩을 지원한다. Redis 클러스터를 더 쉽게 설명하면, 큰 데이터를 여러 Redis 서버에 나누어서 저장하고, 서버가 고장 나도 자동으로 복구할 수 있도록 도와주는 시스템이다.주요 특징데이터 샤딩(Sharding)데이터를 16,384개의 해시 슬롯(Hash Slot)으로 나누고 이를 여러 노드(Master)에 분산하여 저장하는 구조이다.각 마스터 노드는 일부 해시 슬롯을 담당하며, 이를 통해 데이터가 고르게 분배된다.고가용성(High Availab..
Redis는 뛰어난 성능과 유연성을 제공하는 인메모리 데이터베이스로, 다양한 애플리케이션에서 필수적으로 사용됩니다. 하지만 Spring 환경에서 Redis를 다룰 때는 두 가지 접근 방식인 RedisTemplate과 Redis Repository 중 하나를 선택해야 합니다.어떤 선택이 더 적합할까요? 이는 프로젝트의 요구사항과 Redis를 활용하는 방식에 따라 달라질 수 있습니다. RedisTemplate은 저수준 API로 세밀한 제어와 유연성을 제공하지만, 복잡한 작업과 설정이 필요합니다. 반면, Redis Repository는 고수준의 추상화를 통해 간단하고 직관적인 개발 경험을 제공하지만, 제한된 유연성과 고급 기능 부족이라는 단점이 있습니다.이번 글에서는 RedisTemplate과 Redis Re..