개발중 (616) 썸네일형 리스트형 @RequiredArgsConstructor 와 @Autowired 의 차이점 @RequiredArgsConstructor와 @Autowired는 둘 다 Spring Framework와 관련된 주석(annotations)이지만, 주로 Lombok과 Spring Framework에서 사용되며, 각각의 목적과 작동 방식이 다릅니다. RequiredArgsConstructor (Lombok) 이 주석은 Lombok 라이브러리에서 제공합니다. 클래스 내에 final 또는 @NonNull로 선언된 필드에 대한 생성자를 자동으로 생성해 줍니다. 이렇게 생성된 생성자는 필요한 의존성을 주입 받는 데 사용될 수 있습니다. Spring에서 이 생성자를 사용하여 생성자 기반의 의존성 주입을 할 수 있습니다. @RequiredArgsConstructor public class MyService { p.. 로컬에서는 Spring Session, 배포에서는 Redis: 세션 저장소 분리 전략 이슈개발자들이 로컬 환경에서 각각 Redis를 설정하는 것은 번거로운 작업입니다. (아마도 ? web 팀에서는 이러한 결론이 나왔습니다!) 이러한 문제를 해결하기 위해, 로컬 개발 환경에서는 Spring Session Storage를 사용하고, 실제 배포 환경에서는 Redis Session Storage를 사용하는 방법을 채택했습니다. 이렇게 하면 개발자는 로컬에서 별도의 Redis 설정 없이도 작업을 진행할 수 있고, 실제 운영 환경에서는 Redis의 뛰어난 성능과 안정성을 활용할 수 있습니다. 해결 방안Spring의 Profile 기능을 이용해 로컬과 배포 환경에서 세션 저장소를 분리하는 방법을 구현했습니다. /** * dev / prod 환경에서는 Redis Session Storage 를 사용합.. Spring Security에서 Redis를 사용하면서 겪은 SessionRegistry 문제 조건시스템은 중복 로그인이 2회까지 가능합니다.Api pod 는 2개가 실행중입니다. 실패 시나리오 1. Pod A 에 test@com 계정이 로그인을 시도했고 성공했습니다. 2. Pod A 에 test@com 계정이 로그인을 시도했고 성공했습니다. ( 이 때 까지는 중복 로그인이 허용되는 범위입니다. )3. Pod B 에 test@com 계정이 로그인을 시도했고 중복 로그인이 허용되는 범위를 초과했습니다.( 하지만 로그인 성공했습니다. ) 이슈Redis 에서 통합적인 session 관리를 하므로 Pod B 에서 시도한 3회차 로그인 시도에서는 중복로그인이 허용되는 범위를 초과했기 때문에 중복 로그인이 실패해야합니다.Pod 2 에서 로그인된 계정을 판단할 때 Pod 1 에 있는 두 개의 계정에 대한 .. 고성능을 위한 Redis (High Availability, HA)와 Kubernetes 구축 마스터 가이드 (Spring Session storage 설정까지) 목표 1. Redis k8s 구성 이해 Redis Sentinel 고가용성(High Availability, HA) 클러스터 구성 방식으로 설계하였습니다. Master Redis Server 실제 데이터를 저장하고 처리하는 주 서버입니다. Slave Redis Server Master 서버의 데이터를 복제합니다. 이는 고가용성을 높이고 읽기 쿼리의 부하 분산에 사용될 수 있습니다. Sentinel Nodes 클러스터의 상태를 모니터링하고, Master가 다운되면 새로운 Master를 선출하는 등의 작업을 수행합니다. 목표 2. Redis k8s 구축하기 Helm helm 에서 chart 내려 받습니다. helm install lucy3-redis oci://registry-1.docker.io/bitna.. [Spring - Redis] RedisReadOnlyException: READONLY You can't write against a read only replica. Master kill 시 에러 ( master / slave 구조임 ) 에러 내용 ## master 죽였을 때Caused by: io.lettuce.core.RedisReadOnlyException: READONLY You can't write against a read only replica. at io.lettuce.core.internal.ExceptionFactory.createExecutionException(ExceptionFactory.java:144) ~[lettuce-core-6.1.10.RELEASE.jar!/:6.1.10.RELEASE] at io.lettuce.core.internal.ExceptionFactory.createExecutionException(ExceptionFactory.java:116) ~[lettuce-core-6.1.10.RELE.. [Spring - Redis] READONLY You can't write against a read only replica. redis 를 단일 master 구조로 구성했을 때는 해당 포스팅처럼 연결했는데 잘 연결이 되었습니다. 그런데 master / slave 구조로 바꾸니 아래와 같이 에러가 났습니다. READONLY You can't write against a read only replica. master / slave 구조상 master 는 조회, 등록이 가능하나 slave 는 조회만 가능합니다.slave 는 master 의 복제본이기 때문에 등록이 불가능합니다. 근데 뭔가 에러를 읽다보니 spring 에서 slave 에게 쓰기를 하고 있는 기분이 들었습니다. ( slave 는 READONLY 입니다. )그러면 에러가 나는게 당연하지만 ... 저는 k8s 에 reids 를 구성했고, spring 의 redis 접근 정.. Spring Session storage 를 Redis 로 설정하기 ! Redis 로컬 설치curl -fsSL | sudo gpg --dearmor -o /usr/share/keyrings/redis-archive-keyring.gpgecho "deb [signed-by=/usr/share/keyrings/redis-archive-keyring.gpg] $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/redis.listsudo apt-get updatesudo apt-get install redissudo service redis-server start local 에서 실행redis 접속redis-cli redis 실시간 모니터링redis-cli MONITOR maven 추가 org.springframewo.. [트러블슈팅] Could not connect to Redis at 127.0.0.1:6379: Connection refused redis local 에서 접속하려니 아래와 같은 오류가 발생했습니다. root@DESKTOP-Q26RDFJ:~# redis-cli Could not connect to Redis at 127.0.0.1:6379: Connection refused redis-server 명령어로 redis 실행시켜준 후 root@DESKTOP-Q26RDFJ:~# redis-server 617:C 12 Sep 2023 13:37:43.911 # WARNING Memory overcommit must be enabled! Without it, a background save or replication may fail under low memory condition. Being disabled, it can also caus.. 이전 1 ··· 4 5 6 7 8 9 10 ··· 77 다음