• [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엔 아래와 같이 메시지의 타입값이 들어있는데(헤더값이 비어있는 경우도 있음) 이 타입과...


  • [기타]Grafana Loki

    들어가며 현재 우리팀에서 서비스 하고 있는 MSA 환경의 서비스들은 로그를 사내 인프라팀에서 제공하는 ES에서 수집하고 Kibana와 결합하여 데이터를 시각화 하거나 로그를 조회하는 용도로 사용하고 있다. 그런데 우리팀 뿐만 아니라 다른팀들도 같이 사용하고 있다보니 로그 수집 용량에 한계가 있어서 최대 2주까지만 로그 보관이 가능한 상황이었다. 운영 문의를 처리하다보면 2주는 기본이고 한달,...


  • [Java]Mybatis Generator

    DTO 클래스를 생성하기 너무 귀찮다… 사내 프로젝트들은 기본적으로 A라는 테이블에 대해서 1대1로 매핑되는 DTO를 만들어서 쓰는 편이다. 아, 물론 이번 글 제목에도 나와있듯이 이 Table-DTO 관계에 쓰이는 DTO 클래스들은 개발자가 직접 Getter, Setter, ToString… 등을 달아서 생성하는건 아니다. 사내 공용 라이브러리에서는 이미 Mybatis Generator 플러그인을 이용해서 DB에 있는 모든 테이블들을...