Programming-[Backend] (427) 썸네일형 리스트형 분산 락 멀티 인스턴스 환경일 때 특정 key값에 대해서 동시성(동시 수정) 방지를 위해 사용한다. Redis의 싱글 스레드라는 특성, Redisson 라이브러리를 이용한다.Hash 자료구조를 사용한다.- Key: lock:{key이름}:{보통 사용하는 id값}- Field: {Redisson UUID} : {Java Thread ID}소유자 식별자로 사용하며, Redisson UUID를 사용하면 RedissonClient 인스턴스가 서버(JVM) 인스턴스마다 고유하게 부여한다.ex) a3f2e1d0-b7c4-4f2a-9e88-1234abcd5678 : 52- Value: 재진입 횟수로 정수값으로 기록한다. -> 똑같은 스레드가 똑같은 userId(보통 사용하는 id값)에 대해서 접근 시도(락 획득)를 할 때 이.. Non-Heap Usage Heap이 아닌 메모리 영역 Metasapce: 클래스 메타 데이터 저장Code Cache: JIT 컴파일된 네이티브 코드Compressed Class Space: 압축된 클래스 포인터Thread Stacks: 각 스레드의 스택 메모리 별도 설정 필요: -XX:MaxMetaspaceSize클래스 로딩이 많으면 증가 (Spring의 프록시, 동적 클래스 생성 등) Non-Heap과 트래픽 관계 .. Gradle Daemon Gradle Daemon 설명 --no-daemon의 반대 설정인 org.gradle.daemon=true에 대해: - Daemon 방식: JVM을 백그라운드에 계속 띄워두고 재사용 - 첫 번째 빌드: JVM 시작 (느림) - 이후 빌드: 이미 실행 중인 JVM 재사용 (빠름) - JVM warmup 효과로 점점 빨라짐 - --no-daemon: 매 빌드마다 새 JVM 시작 후 종료 - CI/CD 환경에서 주로 사용 (일회성 빌드) - 로컬에서는 비효율적 로컬 개발 환경에서는 Daemon 모드가 훨씬 빠릅니다. keycloak NICE 본인 인증 구현 - iOS 팝업, 사파리 ITP 문제 1. ITP(지능형 추적 방지)가 뭔가요?ITP(Intelligent Tracking Prevention)는 애플이 Safari 브라우저에 도입한 초강력 개인정보 보호 기술입니다. 사용자가 여러 웹사이트를 돌아다닐 때 광고 회사들이 쿠키를 이용해 사용자를 추적(Tracking)하는 것을 막기 위해, 제3자 쿠키(Third-party Cookie)의 접근을 아주 엄격하게 차단합니다.2. 왜 '일반 팝업'에서 세션(로그인 상태)이 날아갈까?이해하기 쉽게 '본인 인증' 팝업을 띄우는 상황을 상상해 보세요.사용자가 내 웹사이트(A.com)에서 로그인한 상태로 '인증하기' 버튼을 누릅니다.window.open 등으로 새 팝업창이 뜹니다.팝업창 안에서 본인확인기관(NICE.com)으로 페이지가 이동하여 인증을 진행.. keycloak B2C 적용 속성값, Organization 정리 보호되어 있는 글입니다. Keycloak Realm간 권한 매핑 보호되어 있는 글입니다. 커넥션 풀, keep alive 및 idle connection timeout enableKeepAlive 처리하여 tcp 레이어에서 서버가 DB 연결을 끊지 않도록 설정함idleTimeout을 5분으로 늘려서 처리하여, 람다가 뜨고 커넥션 풀이 잡힌 뒤 영상 처리가 끝나기 전에 idle connection을 끊어버리지 않도록 처리함만약 너무 많은 커넥션이 걸려서 디비에 한계가 오기 시작하면, RDS Proxy등으로 DB 커넥션 요청 풀이 AWS에서 계산하는 특정 수치를 넘어설 경우, RDS Proxy에서 대기하고 관리할 수 있도록 처리하기도 함 람다는 단일 요청 처리이므로 connectionLimit, maxIdle을 1로 지정하고, 커넥션 풀을 사용하지 않음. 꼭 필요할 때만 커넥션이 잡히도록 static이 아니라 repository layer 접근 직전에 커넥션을 잡는 것도 .. [TIL] Spring Batch, Scheduling, k8s cronJob spring batch와 k8s cronJob 인프라를 통해 주기적으로 API 요청을 하고 DB 데이터들을 분석하는 기능을 만들었다. 이에 대해 간략하게 나마 정리해둔다. Spring Batch 구조크게 Job -> Step -> Tasklet/Chunk 구조로 작동한다. Job은 최상위 단위이며 하나 이상의 Step으로 구성된다. Spring Batch 라이브러리를 build에 넣고 실행하면 DB상에 Batch 관련 테이블들이 생기는데, 여기서 JOB_EXECUTION 관련된 테이블에 Job 실행 내역들이 기록된다. 실행 시마다 JobInstance가 생성된다. Step은 Job 하위에 있는 단계이다. Tasklet 기반은 파일 삭제, API 호출 등의 단일 작업 단위이며, Chunk는 DB에서 읽고 .. 이전 1 2 3 4 ··· 54 다음