[SpringBoot] In-Memory 환경 Memory Leak

InMemory 인증번호 관리 회원가입 시 휴대폰 번호로 인증번호를 전송하고 인증번호를 통해 회원을 검증하는 방식을 구현했습니다. 인증번호 발행 랜덤 번호를 생성하여 휴대폰으로 전송하고 Map에 번호를 저장합니다. 인증번호 검증 현재 인증시간의 유효성을 확인하고 인증번호를 검증합니다. 일치하면 Map에서 key를 제거하지만, 불일치 시 메모리에 계속 남아있게 됩니다. 메모리 누수 문제 key를 요청하고 검증을 하지 않았을 때 계속해서 데이터가 Map에 참조하고 있어 GC가 메모리를 수거하지 않습니다. 문제 시나리오 사용자가 인증번호 요청 Map에 {phoneNumber: authCode} 저장 사용자가 인증을 완료하지 않음 Map에 데이터가 계속 남아있음 반복 시 메모리 누수 발생 해결방법 ...

June 20, 2024 · Lee WooJin

Spring Boot Redis 캐싱 서버 적용하기

Redis란 무엇인가? Redis(Remote Dictionary Server)로 오픈 소스 기반의 인 메모리 데이터 저장소입니다. Redis의 특징 인메모리 기반 데이터 저장 Key-Value 구조 다양한 데이터 타입 지원 Redis 사용 용도 일반적으로는 캐싱, 세션 관리, 풀링, 메시지 브로커, 게임 랭킹 등 다양한 영역에서 사용됩니다. Redis의 장점 빠른 읽기/쓰기 성능 다양한 데이터 구조 지원 영속성 옵션 제공 Redis의 단점 메모리 기반이므로 용량 제한 데이터 휘발성 (설정에 따라 다름) Redis 캐싱 서버 적용하기 주의 사항 Member 클래스를 자주 업데이트하는 상황이 발생하면 Update가 될 때마다 업데이트된 유저의 데이터를 Redis에 적용해 주어야 합니다. ...

May 1, 2023 · Lee WooJin