• 카테고리

    질문 & 답변
  • 세부 분야

    데이터 엔지니어링

  • 해결 여부

    미해결

윈도우 연산시 주의해야할 사항 + 기타 질문

24.04.03 22:13 작성 조회수 84

0

윈도우 연산시 주의해야 할 사항에

텀블링 윈도우에 한해서 윈도윙이 5초간격이라면

커밋 간격도 5초로 맞춰주면

굳이 최신 데이터를 어떤 로직처리에 의해서 뽑아줄 필요가 없지 않을까요?

  1. 스트림 처리할때만 커밋 간격을 윈도우 크기만큼 맞추고, 나머지는 디폴트나 설정한 값으로 처리하면 될것 같은데요


    이렇게 하는건 어떻게 생각하시는지 궁금합니다

     

  2. 자바의 main 말고 카프카의 데이터를 컨슘해서 프론트엔드로 서빙하는 스프링 예제

  3. provectuslabs/kafka-ui의 이미지를 사용해서 도커컴포즈로 브로커를 3대 띄우고 운영한다던지(아무래도 쿠버네티스 환경까지 들어가면 너무 깊어지니깐)

  4. 스키마 레지스트리와 KSQL 등에 대한 것

추가로 2, 3, 4번 예제는 강의에 없는것 같은데 혹시 집필하신 책에 나와있을까요?

 

많은 내용을 배워서 갑사합니다

추가로 현업에서 사용되는 다양한 처리 방법을 조금 더 심도있게 배우고 싶습니다

 

답변 2

·

답변을 작성해보세요.

0

안녕하세요. 문의주신 내용에 답변드립니다

  1. 스트림 간격시 커밋 간격을 윈도우간격으로 맞추는 의도는 좋습니다. 그러나 이런 셋팅으로는 정확한 이벤트의 시간에 맞춘 데이터 처리가 불가능합니다. 예를 들어 15초 간격의 텀블링 윈도우가 존재하고, 00시00시15초에 발생한 이벤트가 있다고 가정해볼게요. 이 때, 해당 이벤트는 00초~15초 윈도우 프로세싱 시간내에 해당 스트림즈 애플리케이션에 도착할 수 있을까요? 현실적으로 불가능합니다. 해당 시간에 발생한 이벤트는 아무리 빨리 네트워크를 타고 들어오더라도 15~30초 윈도우 프로세싱에 걸치게 됩니다. 이렇듯이 단순히 스트리밍 결과를 커밋 타이밍에 맞추도록 윈도우 간격과 커밋 타이밍을 맞추는 것은 의미가 없습니다. 또한 지연도 발생할 수 있구요. 그렇기 때문에 말씀하신 내용을 원하신다면 차라리 suppress() 메서드를 활용하시는 것이 좋겠습니다.

2,3,4번에 대한 내용은 책에 포함된 내용이 아니고, 지금 들으시는 강의에도 포함된 내용이 아닌점 참고부탁드립니다.

감사합니다.

보키님의 프로필

보키

질문자

2024.04.12

원영님!! 답변 정말 감사합니다

0

인프런 AI 인턴님의 프로필

인프런 AI 인턴

2024.04.05

안녕하세요, 인프런 AI 인턴입니다.

  1. 스트림 처리에서 커밋 간격을 윈도우 크기에 맞추는 방법에 대해 궁금하신 것 같습니다. Kafka Streams는 이벤트 시간과 처리 시간을 구분하고, 윈도우 지원, 정확한 한 번 처리 의미론(exactly-once processing semantics) 및 애플리케이션 상태의 간단하면서도 효율적인 관리와 같은 중요한 스트림 처리 개념을 기반으로 합니다. 커밋 간격을 윈도우 크기에 맞추는 것은 특정 사용 사례에 따라 유용할 수 있지만, 전체적인 애플리케이션의 성능과 정확성을 고려해야 합니다. 따라서 경우에 따라 유연하게 접근하는 것이 중요합니다. (출처: Kafka 3.6 Documentation - Kafka Streams)

2, 3, 4. 아파치 카프카와 관련된 고급 주제들, 특히 자바를 사용하지 않고 카프카 데이터를 프론트엔드로 서빙하는 스프링 예제, Kafka UI를 사용한 도커 컴포즈 설정, 스키마 레지스트리 및 KSQL에 대한 내용은 제공된 정보에 포함되지 않습니다. 이러한 주제들은 Kafka 공식 문서나 다른 자료를 통해 더 깊이 있게 탐색할 수 있으나, 제공된 정보 내에서는 직접 관련된 내용을 찾을 수 없어 구체적인 답변을 드리기 어렵습니다. 이러한 고급 주제들에 대한 자세한 내용은 Kafka 공식 문서 또는 해당 주제에 관한 전문 서적이나 온라인 자료를 참고하시는 것이 좋습니다.

현업에서 사용되는 다양한 처리 방법에 대해 더 심도 있게 배우고 싶으신 경우, Apache Kafka와 연관된 오픈 소스 프로젝트나 커뮤니티 참여를 통해 실제 사례와 최신 정보를 접하는 것도 좋은 방법입니다.