Full of Troves, Blog
Development Blog
-
[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에서...
-
[Java]Retrofit과 Gson
1. 들어가며 사내 레거시 시스템에서 MSA 환경에 있는 서비스를 호출 할 때 retrofit을 이용하고 있다. 여느날과 다름없이 레거시 시스템에서 MSA 환경의 API를 호출하기 위해 개발을 하던 중 한가지 이슈에 봉착하게 되었다. API를 호출하여 body 데이터를 받아왔는데 내가 설정한 받는 쪽 DTO의 필드에 값이 매핑되지 않는 것이었다. 다년간 Json 상하차를 해온...
-
[Kafka]Kafka Deserializer Type Mapping
1. 들어가며 특정 카프카 토픽을 팀 내부에서만 사용하는 경우엔 보통 이슈가 없지만 타 팀과 공유해서 같이 사용하는 토픽의 경우 Produce하는 주체에서 생성하는 메시지 타입과 Consume하는 타 팀에서 설정한 메시지 타입이 서로 다른 경우가 있다. 이경우 Producer에서 생산한 메시지에 들어있는 header엔 아래와 같이 메시지의 타입값이 들어있는데(헤더값이 비어있는 경우도 있음) 이 타입과...