• [Java]Mybatis Generator

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


  • [Java]Datadog Span Tags (feat. Datadog 도입썰)

    짧게 적어보는 Datadog 도입.ssul 올해 상반기부터 사내 APM 솔루션으로 데이터독을 도입하게 되었다. 이전에는 핀포인트를 사용하고 있었는데 무료인 점에서는 충분히 매력적이나 데이터독의 기능이 너무 막강하여 안 넘어갈 수가 없었다. 라고 썼지만 이러한 사내 솔루션 도입은 인프라를 전담하는 팀에서 사전에 시장 조사를 하고 여러 솔루션을 나열하고 그 중에 하나를 골라서 PoC를 진행하여...


  • [기타]2022년 회고록

    벌써 1년이 또 지나서 2023년의 해가 밝은지도 벌써 두달이 지났다. 올해는 연초부터 회사일과 현재 사는 집에 대한 일 등으로 조금 정신없이 보내고 있다가 이제 좀 한가해져서 2022년에 대한 회고록을 적어보고 있다. 1. 2022년엔… 작년에 썼던 회고록의 작성 시점이 이미 2022년 중순쯤이었는데 당시에 회사에서 진행 중인 멤버십 서비스 런칭으로 인해 상당히...


  • [Kafka]한번에 여러 건의 메시지를 컨슘하는 BatchListener (feat. 멀티 스레드)

    보통 일반적인 카프카 리스너는 public void consumeTest(ConsumerRecord<String, TestDto> record, ConsumerRecordMetadata meta)에서 볼 수 있듯이 ConsumerRecords가 아닌 ConsumerRecord 단수 파라미터를 받게 된다. 한번에 하나의 레코드만 받아다가 하나의 메시지를 처리할 수 있다. 카프카 리스너를 일종의 배치처럼 특정 타이밍마다 혹은 어느정도의 메시지가 쌓였을 때만 컨슘하여 메시지를 한번에 처리할 수 있는 방법이 없을까 찾아보다가...


  • [Java]Validation과 Custom Validator

    개발하다보면 컨트롤러로 들어오는 파라미터에 대한 검증이 필요한 경우가 있다. 원시적인 방법으로는 컨트롤러에서 직접 해당 파라미터에 대한 검증을 마칠 수 있을 것이고, 조금 더 발전된 방법으로는 별도의 Validation을 담당하는 유틸이나 클래스를 만들어서 파라미터만 넘겨주면 검증을 마친 뒤 true or false로 검증 여부를 전달하거나 유틸 안에서 Custom Exception을 발생시켜서 호출 자체를 더이상...