목록분류 전체보기 (151)
ultra_dev
Redis를 활용한 Cache기능으로 전체 유저 조회 기능 성능 개선 Redis Cache 사용 사용자가 늘어남에 따라 DB에 부하가 가해지기 시작한다. 이 부하를 줄이기 위해 한 번 읽어온 데이터를 저장하고 다시 요청하는 경우 빠르게 결과 값을 받을 수 있도록 함 (캐싱) 가장 먼저 캐시에 데이터가 있는지 확인 → 데이터가 있으면 캐시 데이터 사용 데이터가 없으면 실제 DB데이터 사용 → DB데이터를 캐시에 저장 변경이 이루어지는 부분은 @CacheEvict로 캐시를 지워주고 조회 시에 다시 캐싱이 되도록 했다. 확실히 불필요한 쿼리도 안날리고 유저 조회 부분은 대략 2배정도 빨라진 것 같다 개선 전 : 32ms 개선 후 : 16ms 얼른 sql 공부도 제대로 해야하는데 공부할 게 너무 많다
GC :가비지 컬렉터 메모리 관리 방법중 하나로 시스템에서 더 이상 사용하지 않는 동적 할당된 메모리 블럭을 찾아서 자동으로 사용 가능한 자원으로 회수시켜준다. Jvm 메모리의 Heap 영역에 위치한 GC는 Unreachable Object를 찾아 제거함으로써 Heap영역의 메모리를 관리 (해당 행위를 Mark and Sweep이라고 부름) Unreachable Object : stack에 도달할 수 없는 객체 stop the world : GC을 실행하기 위해 JVM이 애플리케이션 실행을 멈추는 것이다. stop-the-world가 발생하면 GC를 실행하는 쓰레드를 제외한 나머지 쓰레드는 모두 작업을 멈춘다. GC 작업을 완료한 이후에야 중단했던 작업을 다시 시작한다. 만약 더 이상 사용되지 않는 객체..
컨트롤러 메소드마다 실행시간이 나오게 하고 싶어서 AOP를 공부해서 적용했다. 이제 일일히 실행시간을 보지 않아도 콘솔로그에 바로 찍히니까 보기 편해졌다. 진작 이렇게 할 걸 그랬다. 실행 시간을 보면서 추후 문제 발생시에 쿼리랑 같이 간편하게 볼 수 있을 것 같다. 굳굳
로그아웃 기능 구현을 위해서 AccesToken을 Redis에 저장하는 방법을 사용했다. key값으로 token을 넣고 이후 기존 Filter단계에서 AccessToken이 블랙리스트에 저장돼있는지 여부를 한번 더 체크하게 만들었다. protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException { try { String accessToken = jwtUtil.resolveAccessToken(request); if (accessToken != null) { Object blackList = red..