Project/땅땅땅 3

Redis Keyspace Notifications란? 그리고 spring boot에 적용하는 방법

#0 사용하게 된 계기와 도전🏆팀 프로젝트 기간 중에 일정 시간이 지나면 경매 글의 상태를 경매 중에서 경매 완료 상태로 바꾸고 싶어서 이벤트 기반 트리거를 걸 수 있는 것을 알아보던 도중, Redis에도 이벤트 기반으로 만료된 키를 가지고 트리거를 거는 KeySpace Notifications를 발견했다.잘 알려지지 않은만큼 자료가 많지 않아서🥶적용하는 데 애를 좀 먹었지만 적용되고 나니 이 기능에 대해 호기심을 가지고 사용해볼 분들에게 도움이 되고 싶어 찾고 적용한 과정을 글에 담아보려고 한다. #1 Redis Keyspace Notifications가 뭐지?🤔아마 Redis에 익숙하신 분들도 키가 변경되거나 만료됐을 때를 이벤트로 알림을 받을 수 있다는 것은 잘 모를 것이다.Redis에는 Ke..

Project/땅땅땅 2024.04.14

[땅땅땅] RedisTemplate 사용 중, 기술 변경에 유연하고 확장성을 가지도록 리팩토링해보기

바꾸게 된 계기 : 문제 인식🐍현재 프로젝트는 Redis를 이용해서분산락과 캐싱, Keyspace Notification, SSE를 위한 Pub/Sub까지 최소 4가지 이상의 기술들을 사용하고 있는데...이 중에서 하나라도 Redis가 아닌 다른 기술을 사용하게 된다면?🥵코드를 둘러보던 도중 하나의 기술을 의존하고 있어서 차마 생각을 못 했었는데 좀 더 근본적인 문제는 따로 있었음을 인지했고 그에 따라 기술에 의존적인 코드를 작성하고 있었음을 인지하게 되었다. 그래서 리팩토링을 통해서 기술 의존적인 코드를 개선한 기록을 남기고자 한다. 구현체에 의존하는 코드를 같이 알아보자🔍@Service@RequiredArgsConstructorpublic class BidEventPublisher { pr..

Project/땅땅땅 2024.04.06

[땅땅땅] ObjectMapper 빼고 코드 최적화해보기 - 리팩토링

ObjectMapper의 사용, 이게 최선일까?🧐일단 ObjectMapper는 많은 양의 데이터로 작업하거나 트래픽이 많은 환경에서 작업할 경우 성능 이슈에 유의해야 한다.왜냐하면, ObjectMapper가 런타임 시점에 ObjectMapper 내부에 구현되어 있는 Java Reflection(객체를 통해 클래스의 정보를 분석해 내는 프로그램 기법)을 사용해서 JSON 데이터를 JAVA 객체에 매핑하기 때문이다.그리고 생성 비용도 비싸다.(bean이나 static으로 처리하는 편)=> Java Reflection은 서버의 리소스를 과도하게 사용한다는 문제점 ✅그리고 ObjectMapper는 역직렬화할 때마다 새 인스턴스를 생성하기 때문에 많아지면 많아질수록(=많은 객체를 역직렬화하는 경우) 상당한 오버..

Project/땅땅땅 2024.03.30