들어가기 전 이 글은 Kafka Streams in action 8장을 보고 공부하며 작성한 글입니다. 기존 책의 코드가 오래된 코드라 변경하면서 교재와는 다른 코드일 수 있습니다. 8. 카프카 스트림즈 어플리케이션 테스트 테스트 유형 목적 테스트 속도 사용 수준 단위 격리된 부분 기능에 대한 개별 테스트 빠름 대다수 통합 전체 시스템 사이의 통합 지점 테스트 실행 시간이 더 길어짐 극소수 테스트에는 단위 / 통합 테스트가 있다. 이번 장에서는 Kafka Streams에서 사용할 수 있도록 단위 / 통합 테스트를 구축하는 방법을 알아보고자 한다. 또한 Kafka Streams의 리밸런싱 등을 테스트 하기 위해서는 Kafka Streams 클러스터가 필요하다. 그렇지만 외부 클러스터 설정에 의존하고 싶지 ..
들어가기 전 Kafka Streams 자체는 데이터를 필터링 해주는 녀석이다. 만약 이 녀석을 웹서버와 함께 사용하고자 한다면, Spring 사용을 고려해 볼 수 있다. 이번 포스팅에서는 Spring과 Kafka Streams를 어떻게 함께 사용할 수 있는지에 대해 살펴보고자 한다. Kafka Streams를 Spring에서 사용하는 방법 @EnableKafkaStreams를 사용하는 방법 Kafka Streams를 스프링 빈으로 직접 등록 위 두 가지 방법을 이용해서 Spring에서 KafkaStreams를 사용할 수 있다. Spring 웹 서버는 HTTP 요청이 들어오면 Request Scope의 빈을 생성한다. 즉, 요청마다 빈이 생성되는 것이기 때문에 KafkaStreams를 HTTP에서 사용하면..
들어가기 전 이 글은 Kafka Streams In Action의 챕터9를 보고 공부한 글입니다. 9.1 카프카와 다른 데이터 소스 통합 이 부분은 Kafka Connector를 공부하고 직접 해보려고 합니다. 9.2 데이터베이스 제약 걷어내기 (대화식 쿼리 이용) 카프카 스트림즈의 결과는 콘솔에서 결과를 검토하거나 Sink 토픽에서 그 메세지를 읽으면서 확인할 수 있었다. 그런데 이렇게 될 경우에는 내부적으로 사용하고 있는 StateStore에 대한 값은 확인을 할 수 없다는 단점이 있다. 이런 StateStore의 상태를 보려면, Process 과정에서 StateStore의 데이터를 DB에 밀어넣고 DB에서 확인을 해야한다. 이렇다면 구조는 복잡해지고, 트랜잭션 과정에서 성능이 저하될 수 있다는 단점..
이 글은 Kafka Streams In Action을 보고 공부하며 정리한 글입니다. 7. 모니터링과 성능 Kafka Streams의 모니터링 Kafka Stremas의 성능 Kafka Streams의 수집한 메트릭 관찰 Kafka Streams의 토폴로지를 보여주는 기술 이번 글에서는 다음을 알아보려고 한다. 7.1 기본적인 카프카 모니터링 Kafka Streams는 카프카 컨슈머와 프로듀서를 사용한다. 따라서 카프카 컨슈머와 프로듀서 모니터링을 하는 방법에 대해서 알아본다. 7.1.1 컨슈머와 프로듀서 성능 측정 프로듀서는 메세지를 공급하는 주체이다. 따라서 프로듀서의 성능은 '얼마나 빨리 메세지를 공급하는지'로 결정된다. 컨슈머는 메세지를 소비하는 주체인데 'Consumer Lag'으로 컨슈머의 성..
이 글은 Kafka Streams in action 6장을 공부하며 작성한 글입니다. 6.1 더 높은 수준의 추상화와 더 많은 제어 사이의 트레이드 오프 카프카 스트림즈 DSL을 이용하면 손 쉬운 방법으로 레코드를 처리해서 전달할 수 있다. 대부분의 경우에 카프카 스트림즈 DSL을 유용하게 사용할 수 있지만, 카프카 스트림즈 DSL로 구현을 할 수 없는 경우가 있다. 이런 경우에는 카프카 스트림즈의 Processor API를 사용하면 된다. 카프카 스트림즈 Processor API는 Java 코드를 이용해서 개발자가 직접 구현을 해야하기 때문에 구현 난이도는 올라가지만 그만큼 다양한 기능을 개발할 수 있다. 카프카 스트림즈의 Processor API는 다음과 같은 경우에 사용하면 좋다고 한다. 일정한 간..