OAuth 의 Token 을 저장할 장소로 Redis
를 선택하였다. 다른 API 에 비해 접근이 많기 때문에 MySQL 의 부하를 줄이고 응답 속도를 높일 수 있다는 장점이 있다. 또한 Token 의 특징 중 하나인 만료시간이 존재하기 때문에 Redis 가 이에 대한 처리를 도울 수 있다고 생각한다. 다만 Redis 는 결국에는 캐시이기 때문에 데이터가 유실될 가능성이 존재하는데, OAuth 토큰은 다른 데이터에 비해 데이터 유실에 대한 피해가 적은 편(로그아웃) 이기 때문에 응답 속도의 이점을 가져가도록 결정하였다.
Redis 를 구현하기 위해서는 RedisTemplate 을 사용하는 방법과 RedisRepository 를 사용하는 방법, 두 가지가 있다. RedisTemplate 은 자료구조마다 구현의 방법이 다르고, RedisRepository 방식은 JPA 와 유사하게 엔티티로 관리하기 때문에 사용하기에 간편하다.
Redis 에 필요할 설정들을 추가하고 CrudRepository 를 이용하여 쉽게 Redis 에 접근이 가능하다. 하지만 나는 AWS 의 ElastiCache 를 사용하였기 때문에 일반적으로 외부 접속이 차단되어 있어 직접 접근이 불가능하다.
Unable to connect to Redis
따라서 Redis 에 대한 정보도 MySQL DB 연결 정보를 관리하던 것처럼 yml 파일로 분리하여 관리한다.
로컬 환경에서 실행 → 로컬에 있는 Redis 를 이용
개발(또는 운영) 환경에서 실행 → 개발(또는 운영) 서버에 있는 Redis 를 이용
CrudRepository 에서 제공하는 기본 메서드를 사용하여 저장에 성공한 모습이다.