redis6 쿠폰 서비스의 쿠폰 발급 단계별 로직 개발 쿠폰 발급 로직 단계별 개발쿠폰 발급하는 로직을 3단계에 나누어 개발을 진행했다.각 단계별로 어떻게 개발을 했고 어떤 특징과 장단점이 있는지 알아보자.단계는 다음과 같다.1. v1 - db를 사용한 기본 구현 방법2. v2 - Redis를 이용한 분산락 방법3. v3 - Kafka를 통한 비동기 처리 방법 1. v1 - db를 사용한 기본 구현db 트랜잭션과 동시요청 처리에 초점을 맞춤쿠폰 정책의 잔여 수량을 확인하고 성공하면 db에 저장하고 실패하면 실패응답을 반환한다.동시성제어를 db 레벨에서만 처리하기 때문에 적절한 lock이 없다.그러므로 트랜잭션내 연산으로 동시성 문제를 최대한 방지하도록 개발함다음은 v1 의 issueCoupon 메서드이다.@Transactionalpublic Coupon is.. 2025. 4. 9. Caused by: com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Java 8 date/time type `java.time.LocalDateTime` not supported by default: add Module "com.fasterxml.jackson.datatype:jackson-datatype-jsr310" to enable handling (through reference c Caused by: com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Java 8 date/time type `java.time.LocalDateTime` not supported by default: add Module "com.fasterxml.jackson.datatype:jackson-datatype-jsr310" to enable handling (through reference chain: com.example.springbootredis.model.User["createdAt"]) Spring Boot에서 Redis에 데이터를 저장할 때, Jackson을 사용하여 객체를 JSON으로 직렬화(Serialization)하는 과정에서 .. 2025. 3. 16. Redis설치 및 Configuration(2) 현재인스턴스a : master인스터스b : slave상태인데인스턴스b를 이렇게 restart하면sudo service redis restart인스턴스b가 master로 되기 때문에다시 인스턴스b에서redis-cli 로replicaof master대상IP 6379 명령어로레디스를 slave로 만들어줘야한다.redis-cli> replicaof master의ip 6379그러면 다시 master의 redis-cli info 와 slave의 redis-cli info를 했을때명확히 master - slave 관계를 알수 있으며slave 에서 해당 명령어를 입력해도 master - slave 관계를 알 수 있다.tail -f /var/log/redis/redis-server.log참고로 sentinel.conf .. 2024. 8. 28. Redis설치 및 Configuration(1) 아키텍처sentinel의 역할은master가 정상상태인지 확인하고 정상상태가 아니면 replica를 master로 전환해주는 역할참고로페일오버(Failover) 는 장애 조치 기능으로 시스템 장애 이벤트 발생 시 하나 이상의 예비 백업 시스템(노드) 로 자동 전환되는 것을 말한다.즉, master가 내려가면 slave가 master 역할을 해줄 때 그게 failover 이다. ec2에서 redis 설치 명령어redis master-slave 환경을 셋팅하는 설정을 진행할 것이다.일단 인스턴스a가 있고 인스턴스a에서 해당 명령어를 실행한다.# root 계정으로 전환sudo suapt-get updateapt-get install redis-serverservice redis status# redis 설정 .. 2024. 8. 21. Redis 구조 및 성능 비교 Redis 구조 및 성능 비교: Stand-Alone부터 Cluster까지Redis 구조stand aloneRedis가 단일 인스턴스로 동작하는 방식.별도의 복제본이 없으므로, 장애 시 데이터 복구가 어렵고 가용성이 낮음.master-replicareplica가 master로 sync를 따라간다.Replica는 Master의 데이터를 실시간으로 복제하여 데이터를 보호함.장점: Master가 장애가 나더라도 Replica가 데이터를 유지함.단점: 자동 장애 조치가 없으며, 수동으로 장애 복구를 수행해야 함.sentinel ( 일반적으로 많이 선택하는 방식)master - replica구조 기반인데 master가 장애가 나면 replica를 master로 전환함그 사이에 원래 master를 복구 하고 rep.. 2024. 8. 16. 항해 회고 이번 주에는 스프링 부트에서 소켓을 주로 공부하고 적용시켰다. 스프링 부트에서 실시간으로 통신을 하려고 소켓을 사용한다. 우리조가 하려는 것은 게시글안에서 릴레이로 소설을 작성하는 것이다. 즉 각 사람이 문단을 작성하여 릴레이로 소설을 완성할 수 있다. 게시글 안에서 A라는 사람이 문단을 작성하면 다른 사람은 작성할 수 없게끔 소켓을 이용하여 실시간으로 다른 사람이 문단을 작성중이며 B라는 사용자는 문단을 작성하지 못하도록 막는 것이다. 이를 소켓을 통해 구현을 할 것이다. 소켓과 redis를 적용시킬 것이다. 우선 게시글 안에서 A가 '문단 작성 시작'(시작, type : START )버튼과 '문단 작성 완료' (완료, type : TALK)버튼이 있다. A가 게시글 안에 들어오면 게시글을 subscr.. 2022. 3. 13. 이전 1 다음