Redis로 Session 관리하기 사이드 프로젝트에서 JWT를 쿠키에 저장하는 방식으로 인가를 구현하게 되었습니다. 처음에 각각 명확한 장/단점이 존재하는 쿠키 방식과 세션 방식 중 고민을 많이 했었는데, JWT 정보가 클라이언트 측에 저장되다 보니 쿠키에 저장된 JWT 정보만 탈취하면 너무나도 쉽게 계정을 도용해서 접속할 수 있을 것 같다는 생각이 들었습니다. 사용자가 얼마나 될지 모르겠지만, 그래도 사용자에게 로그인에 대한 찝찝함을 제공하지 않으려면 그래도 안전한 세션 방식을 활용하는 것이 좋을 것 같아서 세션 방식으로 다시 적용하게 되었습니다. (찾다 보니 쿠키, 세션의 장점을 모두 활용하는 방식으로 함께 적용한다고도 합니다.) . 세션 저장소는 in-memory data store(redis)를..
Redis Transactions 프로젝트에 Redis 를 적용하면서 Redis Transaction 을 잘 모르고 사용했다가, Spring Transaction 과 함께 데이터가 롤백되어 버리는 상황을 맞이하고 Redis Transaction 에 대해 알아보게 되었다. . Redis 는 싱글 스레드 기반으로 데이터 처리 반면, 이벤트 루프(Event Loop)라는 Redis 동작 원리로 여러 클라이언트 요청을 동시에 응답하는 동시성 보유 유저 레벨에서는 싱글 스레드로 동작하지만, 커널 I/O 레벨에서는 스레드 풀 이용 따라서, 동시성 문제에 대한 처리가 필요 Redis 동시성 처리를 위한 트랜잭션 방법은 SessionCallback 인터페이스를 구현하는 방법과 @Transactional 을 사용하는 방..
Spring Boot + Redis Spring Boot 에 Redis 를 적용하면서 알게된 내용들을 정리해보자. Redis 특징 Collection(List, Set, Sorted Set, Hash) 지원 Race condition 방지 Redis 는 Single Thread 로 Atomic 보장 persistence 지원 서버가 종료되더라도 데이터 리로드 가능 Spring Data Redis Ready build.gradle Redis 는 Key-Value 형식을 갖는 자료구조 Spring Data Redis 는 RedisTemplate , Redis Repository 를 사용하는 두 가지 접근 방식 제공implementation 'org.springframework.boot:spring-b..