redis
-
[Spring Boot] Redis를 활용한 성능 향상프로젝트/뉴스타 2024. 6. 16. 10:00
Redis를 활용한 성능 향상 왜 궁금했을까❓뉴스타 서비스는 비로그인 서비스로 사용자 식별을 위한 고유 키값을 발급해 준다. 해당 키는 서비스를 이용할 때, 지속적으로 검사하는 과정이 존재하는데 MySQL에서 값을 조회하게 된다. 빈번한 디스크 I/O로 인해 DB에 부하가 갈 것이라 생각되어 In-Memory 방식인 Redis를 캐싱 서버로 활용하여 성능을 향상시키고자 한다. 1. 서비스 흐름도사용자가 서비스에 접속하면 UUID 발급 API를 서버에 전송한다.API 서버는 UUID를 생성하고 MySQL 서버에 저장한다.생성된 UUID를 사용자에게 응답한다.사용자 API를 사용할 때, UUID를 헤더에 담아 API 서버에 요청한다.올바른 사용자인지 확인하기 위해 MySQL에 있는 UUID를 조회한다.이와 ..
-
[Spring boot] Spring Security + JWT + Redis (3/3)프로젝트/Share Your Trip 2024. 2. 7. 22:08
이번 포스팅에서는 유효한 RefreshToken을 활용하여 만료된 AccessToken을 갱신하고 MySQL에 RefreshToken을 저장하는 것이 아닌 Redis에 저장하여 효율적으로 토큰을 관리해보려고 한다. 또한, MySQL에서 refreshToken을 조회했을 때와 Redis를 통해서 refreshToken을 조회했을 때의 성능 차이를 비교해보려고 한다.MySQL에서 RefreshToken 관리@Overridepublic UserDto.UserInfoResponseDTO login(final UserDto.LoginRequestDTO requestDTO) { UsernamePasswordAuthenticationToken authenticationToken = new UsernamePass..
-
[Spring boot] Spring Security + JWT + Redis (2/3)프로젝트/Share Your Trip 2024. 2. 6. 21:36
이번 포스팅에서는 Share Your Trip 프로젝트에 Spring Security를 적용해 볼 것이다. 또한, JWT와 함께 사용하여 Spring Security를 커스터 마이징 해볼 것이다.Spring Security FilterShare Your Trip은 Rest API 서버로 formLogin 방식을 사용하지 않아 formLogin(AbstractHttpConfigurer::disable)을 설정했다.httpBasic은 username과 userpassword를 텍스트로 전송하는 방식이다. 해당 프로젝트에서는 JWT 방식을 사용하여 httpBasic(AbstractHttpConfigurer::disable)을 설정했다.stateless한 JWT 사용으로 인해 Spring Security에서 기..
-
[Spring boot] Spring Security + JWT + Redis (1/3)프로젝트/Share Your Trip 2024. 2. 5. 21:33
Spring Security 에 대해서 왜 궁금했을까 ❓- Share Your Trip 프로젝트에서 여행지를 공유할 수 있는 커뮤니티 게시판이 존재했다. 이러한 기능에서 불필요한 글을 작성하거나 악성 유저의 글을 관리할 관리자가 필요했다.- Spring에서는 Spring Secuity를 통해서 인증과 권한을 관리할 수 있었다. 이를 통해, 사용자와 관리자를 인증하고 권한을 분리하여 보안성을 강화해보려고 한다. Spring Security의 구조 Architecture :: Spring SecurityThe Security Filters are inserted into the FilterChainProxy with the SecurityFilterChain API. Those filters can be ..