• [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을 발생시켜서 호출 자체를 더이상...


  • [Kafka]Kafka Partitioner

    Default Partitioner 사내에 본격적으로 Kafka 도입이 된 지도 1년이 좀 넘은 듯 하다. 구축부터 세팅, 관리까지는 별도의 DevOps팀이 있어서 이쪽 팀에서 책임져주고 있다. 이렇게 Kafka를 도입하여 실제 Producer/Consumer를 개발하여 운영해오면서 겪어본 사례 중 하나를 소개해보고자 한다. Kafka 도입 후에 컨슈머에서는 별도의 Custom Partitioner를 사용하고 있지 않았고, 메시지를 발행할 때도 별도의...