Full of Troves, Blog
Development Blog
-
[Redis] GenericJackson2JsonRedisSerializer SerializationException
1. 들어가며 보통 RedisTemplate의 ValueSerializer는 웬만한 타입을 다 지원하기 위해 GenericJackson2JsonRedisSerializer를 세팅해주고 있었다. 그런데 이것을 이용해서 역직렬화를 할 때 일부 클래스에서 문제가 생길 수 있는데 문제의 코드는 아래의 코드이다. 2. 문제의 코드 this.objectMapper = new ObjectMapper(); objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); objectMapper.registerModules(new JavaTimeModule(), new Jdk8Module()); BasicPolymorphicTypeValidator ptv = BasicPolymorphicTypeValidator.builder() .allowIfBaseType(Object.class) .build(); objectMapper.activateDefaultTyping(ptv, ObjectMapper.DefaultTyping.NON_FINAL,...
-
[PostgreSQL] ElectricSQL 맛보기
1. ElectricSQL? 어느날 회사에서 업무를 하다가 팀장님이 잠깐 부르셔서 간 적이 있었다. 화면에는 ElectricSQL이라는 것을 띄워두시고 이것에 대해 한번 간단하게 사전 조사 겸 실제 업무에 활용할 수 있을지 살펴봐달라고 부탁하셨다. 마침 연말이라 2024년 한해동안 해왔던 업무나 문서 정리를 하던 참이라 급한 업무는 없었고 간단하게 설명해주시는 ElectricSQL이라는 것의 활용 목적, 컨셉...
-
[PostgreSQL] Oracle vs PostgreSQL 빈 문자열에 대한 NULL 처리 차이
1. 들어가며 Oracle을 메인으로 쓰던 애플리케이션에 있던 SELECT 쿼리를 다른 PostgreSQL 메인의 애플리케이션으로 옮겨오던 작업을 하고 있었다. 당연하게도 Oracle 쪽과 데이터가 동일한 조건에서 동일하게 나오는지 검증해보는 작업이 있었고 그 과정에서 특정 조건의 경우 두 DB 기반의 애플리케이션이 서로 다른 결과값을 리턴하게 되어서 살펴보게 되었다. 원인을 알고보니 정말 간단하고 기본적인 내용이었는데...
-
[Java] Spring Boot에서 Property Key 처리 방식으로 겪은 문제
1. 들어가며 Spring Boot와 캐시는 뗼레야 뗼 수 없는 사이인데 그 중에서도 회사에서는 Redis를 메인으로 쓰고 있다. 그러다보니 Redis와 관련된 커스터마이징이 많은 편이고 그것을 별도의 Auto Configuration으로 만들어서 설정해둔 application yml의 값에 따라 필요한 부분만 자동으로 초기화되도록 해놓고 쓰고 있다. 대표적으로 각 캐시키 별로 설정하는 TTL 세팅 로직이 그것인데 이...
-
[Java]Redis, Lettuce, Failover
1. 들어가며 우리팀은 캐시 시스템으로 전사 공용 Couchbase를 사용하다가 2023년 하반기에 우리 팀 전용으로 Redis를 구축하였다. Redis를 구축하고 제대로 사용한 지도 반년정도(fyi. 최초로 글을 작성해뒀던 시점) 된 거 같은데 그동안 운이 좋아서 문제가 없었을 뿐이지 언제든 Redis 서버에 문제가 생겨서 애플리케이션에 영향을 줄 수 있을 듯 했다. 여기서 잠깐, Couchbase에서...