들어가기 전 이 글은 카프카 스트림즈와 ksqlDB 정복 7장을 공부하며 작성한 글입니다. 7.0 Processor API 카프카 스트림즈는 DSL / Processor API로 구성되어있다. DSL은 상위 수준의 추상화를 가져와서 개발 생산성을 확보해주지만 상대적으로 자유도는 떨어진다. Processor API는 자바 코드를 직접 작성해야하기 때문에 하위 수준의 추상화를 보여주지만 DSL에 비해서 넓은 자유도를 보장한다. 카프카 스트림즈에서는 DSL / Processor API를 각각 쓰거나 섞어서 사용하면서 어플리케이션을 개발한다. 이 곳에서는 Processor API를 언제 사용하는지에 대해 살펴보고자 한다. 7.1 Processor API는 언제 사용해야 할까? 스트림 처리 어플리케이션을 구축할 ..
들어가기 전 이 글은 카프카 스트림즈와 ksqlDB 정복 Chapter6을 보고 공부하며 정리한 글입니다. 6. 고급 상태 관리 State Store를 처음에 쓸 때는 아주 편리하다 생각한다. 그렇지만 어플리케이션의 규모가 커져서 유지보수를 반복 수행할수록 Stateful 스트림 어플리케이션을 안정적인 운영에는 State Store 내부 동작에 대한 깊은 이해가 필요하다. 이 글을 통해서 State Store에 대해 보다 깊게 이해할 수 있게 될 것이다. 이 장에서는 아래 내용을 공부한다. 영구적인 저장소는 디스크에 어떻게 표현되는가? Stateful한 어플리케이션의 Fault Tolerance는 어떻게 구현되는가? StateStore는 어떻게 설정하는가? Stateful 어플리케이션에 가장 큰 영향을 ..
들어가기 전 이 글은 Kafka Streams와 KsqlDB 정복 5장을 공부하며 작성한 글입니다. 5.0 카프카 스트림즈에서 시간의 의미 카프카 스트림즈에는 세 종류의 시간이 존재한다. Window Join, Window 집계처럼 시간 기반의 연산을 할 때 각각의 시간이 어떤 의미를 가지는지를 이해하고 사용하는 것이 매우 중요하다. 어떤 시간 종류가 있고 각 시간은 어떤 의미를 가질까? Event Time Event Time은 Producer에서 이벤트가 생성된 시간을 의미한다. Event Time은 ProducerRecord의 timestamp에 포함될 수 있다. Event Time은 ProducerRecord의 Payload의 특정 필드에 포함될 수 있다. Ingestion Time (Log App..
들어가기 전 이 글은 KafkaStreams와 KsqlDB 완전 정복의 4장을 공부하며 작성한 글입니다. 4.0 상태가 있는 처리 3장에서는 Stateless한 스트림을 처리하는 방법에 대해서 공부를 했다. 이 때는 이벤트가 발생했다는 '사실'만이 흘러가는 것을 단편적으로 처리하는 형태였다. 하지만 Kafka Streams는 소비되는 이벤트 정보를 기억해서 새로운 문맥을 파악하는 기능을 제공한다. 이벤트 정보를 기억하기 때문에 이런 종류의 Kafka Streams를 'Stateful'하다고 한다. 4.1 상태가 있는 처리의 이점 이벤트가 무한히 흐르는 Stateless Stream에서 특정 시점의 정보를 기억해서 특정 시점(point-in-time)의 정보를 표현할 수 있다. 특정 시점의 정보를 기억하기..
들어가기 전 이 글은 카프카 스트림즈와 ksqlDB 정복의 3장을 공부하며 작성한 글입니다. 3.0 상태가 없는 처리(Stateless Process) 스트림 처리의 가장 단순한 형태는 이전에 처리했던 메세지가 어떤 녀석이었는지를 기억도 하지 않는 것이다. 이 형태의 스트림 처리를 Stateless Process라고 한다. 이번 포스팅에서는 Stateless Process들을 이용해서 Stateless한 Kafka Streams Instance를 생성해보려고 한다. Kafka Streams는 아래 Stateless Processor를 제공한다. 레코드 필터링(filter) 필드 추가 및 삭제 레코드의 키 변경(rekeying) 스트림 가지치기(branching) 스트림 병합(merging) 레코드의 보강..
* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.