분류 전체보기
-
2025.04.13 kafka-consumer-throttling 부하 전염TIL 2025. 4. 13. 18:07
2025.04.08 kafka-consumer-throttling카프카 컨슈머에 동적 쓰로틀링 적용하기 | 우아한형제들 기술블로그이 글은 카프카(Kafka)를 사용하는 스프링 환경에서 메시지 처리 속도를 동적으로 조절해야하는 상황과 여러 쓰로틀링 기법gisungcu.tistory.com 기본적인 구조는 위와 같습니다. 카프카 브로커에 커밋을 보내기 전 프로메터우스를 통해 서드파티(ex.DB)의 부하를 확인한다는 것이죠.부하가 서드파티뿐 아니라 프로메테우스에도 전염이 되지 않을까? 생각했습니다. 1. max.poll.records sizeack 설정이 batch인 경우에는 max.poll.records이 끝나고 프로메테우스를 조회합니다.총메시지가 10,000개이고 max.poll.records가 100..
-
2025.04.12 ConcurrentMessageListenerContainer, Partition Assignment StrategyTIL 2025. 4. 12. 20:40
Thread 생성 방식ConcurrentMessageListenerContainer는 내부에 KafkaMessageListenerContainer를 concurrency 설정 값만큼 가지고 있습니다. KafkaMessageListenerContainer는 초기화 (start method)시점에 스레드를 생성해 ListenerConsumer를 task로 스레드에 넘겨줍니다.ListenerConsumer는 SchedulingAwareRunnable를 구현하고 있습니다.run의 내부에서 while로 메시지를 poll합니다. Partition Assignment Strategy [Spring Kafka]Kafka Consumer 제대로 알고 사용하자!!🚨해당 글은 Spring Kafka에 대한 사용방법과..
-
2025.04.08 kafka-consumer-throttlingTIL 2025. 4. 9. 00:03
카프카 컨슈머에 동적 쓰로틀링 적용하기 | 우아한형제들 기술블로그이 글은 카프카(Kafka)를 사용하는 스프링 환경에서 메시지 처리 속도를 동적으로 조절해야하는 상황과 여러 쓰로틀링 기법들을 소개합니다. 카프카를 사용하는 스프링 프레임워크 환경에 익숙techblog.woowahan.com백프레셔 개념record 리스너는 메시지를 단건 단건 처리한다.poll하는 시점은 max.poll.records만큼 처리하고 난 뒤에 poll을하는게 기본 동작이다.- commit 시점은 ackmode에 따라 다르다. 기본 batch는 max.poll.records 이후 커밋. record는 하나 처리 후 커밋.메시지컨테이너에 매번 pause를 사용하면 처음만 pause된다. 이미 pause면 else로 빠져나온다.그래서..
-
글또 10기 소감글또 2025. 3. 29. 23:46
안녕하세요.이번에는 글또 10기를 마무리하며 몇 자 적어보려 합니다. 벌써 지난 7기, 8기, 9기를 지나 10기를 마무리하는 시간이 다가왔습니다. 시간이 참 빠릅니다.10기를 시작할 때 “좋은 기술 글을 쓰자”는 목표를 품었지만, 실제로 기술 글은 많이 쓰지는 못했습니다.그럼에도 불구하고 열심히 글을 작성하면서 많은 배움이 있었고 만족감을 느낍니다.회사에서는 다양한 문제 상황이 발생할 때마다 이를 해결하는 과정을 기록하는 것을 좋아합니다.새로운 기술이나 이론을 찾아 정리하는 것도 물론 의미가 있지만, 실제로 겪은 문제를 해결하는 과정을 글로 남기며 공부하는 것이 더 효과적이라 생각하기 때문입니다.이번에도 회사에서 발생한 DB 장애, 애플리케이션 장애 등 여러 가지 문제 상황에 대해 글을 작성하였고, 그..
-
2025.02.24 spring kafka ThrottlingTIL 2025. 2. 24. 22:57
카프카 컨슈머에 동적 쓰로틀링 적용하기 | 우아한형제들 기술블로그이 글은 카프카(Kafka)를 사용하는 스프링 환경에서 메시지 처리 속도를 동적으로 조절해야하는 상황과 여러 쓰로틀링 기법들을 소개합니다. 카프카를 사용하는 스프링 프레임워크 환경에 익숙techblog.woowahan.com 마침 비슷한 상황에서 글을 읽게 되었다.spring kafka에서는 레코드 리스너와 배치 리스너를 제공하는데, 디폴트는 레코드 리스너이다.ackmode에서도 record와 batch가 있는데, 리스너들과 어떻게 엮이냐에 따라 동작이 다르다.ackmode는 언제 커밋하겠다는 의미이다. 디폴트인 batch는 max-poll-records만큼 다 소비하고 커밋하겠다는 거고, record는 max-poll-records를 레코..
-
2025.02.22 spring transactionalTIL 2025. 2. 22. 14:10
https://hyperconnect.github.io/2025/02/10/spring-transactional-rollback.html Spring Transactional Rollback Deep DiveSpring Transactional Rollback 이 되는 케이스를 심층적으로 살펴보고 예시로 확인해봅니다.hyperconnect.github.io롤백 마크는 많이들 알고 있을 것이다. 우형 글로도 많이 유명하다. 하이퍼커넥트의 글은 트랜잭션 전파 속성까지 설명하고 있다.REQUIRES_NEW는 기존 트랜잭션에서 분리되어 새로운 트랜잭션을 만드는 전파속성입니다.이를 활용해 트랜잭션 안에서도 작은 단위로 트랜잭션을 나눌 수 있게됩니다. 굳이 나눠야하는 이점이 있을까요? 애초에 트랜잭션으로 묶이는 작..
-
2025.02.19 spring kafka kafkaListenerContainerTIL 2025. 2. 19. 23:33
https://docs.spring.io/spring-kafka/reference/kafka/receiving-messages/listener-annotation.html @KafkaListener Annotation :: Spring KafkaWhen using manual AckMode, you can also provide the listener with the Acknowledgment. To activate the manual AckMode, you need to set the ack-mode in ContainerProperties to the appropriate manual mode. The following example also shows how to use a differendocs...
-
2025.02.19 line 장애대응TIL 2025. 2. 19. 10:07
https://engineering.linecorp.com/ko/blog/line-failure-reporting-and-follow-up-process-culture LINE의 장애 보고와 후속 절차 문화들어가며 소프트웨어를 개발하고 사용하는 곳이라면 어느 곳이든 장애가 없을 수 없을 것입니다. 사용자가 많고 트래픽 규모가 크고 연관된 서비스가 많은 복잡한 소프트웨어일수록 장애가 여engineering.linecorp.com프로세스로 정립하는 것이 좋다.그래야 장애발생 시 당황을 덜 하게 된다.