[Spring boot] Redis로 JWT 관리하기
·
Trouble Shootings/성능 개선
문제 상황프론트엔드와 협업중에 있었는데, 한가지 성능 이슈를 발견했다. 프론트엔드에서 header를 렌더링할때/api/auth/check-token을 매번 호출해서 user Id, profile image, nickname등을 가져와 렌더링 한다. 그런데 header의 특성상 어느페이지에서나 존재하므로, 페이지를 이동할때마다 DB에서 token정보를이용해 user정보를 반환하는 select 쿼리문이 매번 실행된다. -> 유저의 수가 늘어날 수록 DB접근 빈도가 늘어나 성능 문제가 발생할 수 있다. 이를 Redis를 이용한 캐시로 Token에 대한 User profile 정보를 저장하기로 하였다.  구현 나는 내 프로젝트를 최근 DDD + 헥사고널 아키텍쳐로 리팩토링 하였다. 리팩토링한 아키텍쳐에 맞게, ..
[Springboot + Redis] 레디스를 이용한 캐싱을 통해 API 성능 개선하기 ( +JMeter)
·
Trouble Shootings/성능 개선
Github를 오마주한 3D model 버전 관리 웹 사이트를 만드는 프로젝트를 하던중 한가지 문제점을 발견했다.유저가 Mypage에 들어갈때마다, 매번  내 정보 (닉네임, 이메일 , 팔로워 수, 팔로잉 수)를 받아오는 API와, 내 리포지토리 리스트를 불러오는 API를 매번 호출하게되어, 응답시간이 매우 느리다는 것이었다. 유저가 새로고침할때마다, API호출을 매번 하게되면 서비스가 성장하여 유저 트래픽이 많아지게되면 DB에 큰 부하가 가게 된다. 따라서 나는 처음에 Spring boot 프레임워크에서 자체적으로 지원하는 Cache 라이브러리를 사용해 , 서버의 로컬 메모리에서 캐싱을 하도록 구현하였다.  결과적으로 응답속도는 매우 빨랐다. 왜냐하면 서버 내부의 메모리에서 다이렉트로 접근하기 때문에,..
[Redis] Redis에 대해서 알아보기
·
Backend/Redis
Redis란? Redis란 'Remote Dictionary Server'의 줄임말로 key-value 구조의 데이터를 인메모리에 저장하는 오픈소스 데이터 관리 시스템 입니다. Redis는 데이터를 인메모리에 저장하기때문에 처리 속도가 기존 DBMS에 비해서 매우 빠르기 때문에 많은 대용량 서비스에서 이를 채택하곤 합니다. Redis는 인메모리 스토어를 기반으로 하지만, 데이터를 디스크에서도 저장하기 때문에 영속성도 보장합니다. 따라서 Redis 서버가 다운되거나 재 실행되어도 정보를 손실하지 않을 수 있다는 장점이 있습니다.  영속성 보장RDB (Redis Database)RDB란 해당 데이터의 스냅샷을 파일로 저장하는 방식이며, 비교적 작은사이즈이기때문에 다시 로딩하는 시간이 비교적 빠릅니다. AOF..