전체 그래프
Flink

Window Concepts

data-engineeringflinkwindowconceptstumblingslidingsession

상위: Flink

요약

Flink의 윈도우 개념과 종류를 다룹니다. 텀블링, 슬라이딩, 세션, 글로벌 윈도우의 특징과 사용 사례를 학습하여 실시간 스트림 데이터를 효율적으로 집계하고 분석하는 방법을 알아봅니다.

윈도우

  • 연속적인 데이터 스트림을 유한한 세그먼트로 분할하는 방법
    • 실시간으로 발생하는 스트림 데이터를 분석하기 위해 유한한 덩어리로 나누는 개념
    • 특정 기준(시간 등)에 따라 데이터를 나눔
    • 무한 데이터 흐름을 나눠서 각 조각마다 합계, 평균 등의 계산 수행 가능

flink-29.png

윈도우가 필요한 이유

  • 무한 스트림 처리 가능

    전체를 한 번에 계산은 불가 → 윈도우 단위로 나누어 평균 등 계산 가능

  • 변화 추적 및 시간별 통계

    시간 흐름에 따른 변화 관찰 가능

  • 연속 계산 및 자원 절약

    모든 데이터를 모을 때까지 기다릴 필요 없이 부분 계산 가능

윈도우 종류

텀블링 윈도우 (Tumbling Window)

  • 고정 크기, 서로 겹치지 않음
  • 예시: 1분 단위, 100개 이벤트 단위 등
  • 모든 데이터는 정확히 하나의 윈도우에만 속함
  • 적합한 상황: 분/시간 단위 집계, 배치 처리, 마이크로버전 처리

flink-30.png

  • 동작 방식
    • 윈도우 길이 미리 설정
    • 예: 5분 단위 → 각 구간에 도착한 이벤트 모아서 결과 출력 후 다음 구간으로

슬라이딩 윈도우 (Sliding Window)

  • 텀블링과 달리 겹칠 수 있음
  • 윈도우 크기슬라이드 간격 파라미터 필요
  • 슬라이드 간격만큼 이동하며 생성
  • 슬라이드 간격 < 윈도우 크기 → 겹치는 부분 발생

flink-31.png

  • 동작 방식
    • 예: 윈도우 10분, 슬라이드 간격 5분
    • 010분 → 515분 → 10~20분 등으로 생성
    • 데이터가 여러 윈도우에 중복 포함됨

세션 윈도우 (Session Window)

  • 고정 크기 없음, 동적 윈도우
  • 데이터 발생 패턴에 따라 윈도우 구간 결정
  • Session gap(비활성 기간) 기준 → 일정 시간 이상 이벤트 없으면 종료

flink-32.png

  • 동작 방식
    • 이벤트 간 간격 추적
    • 간격이 기준보다 작으면 같은 윈도우
    • 기준보다 길면 이전 세션 닫고 새로운 세션 윈도우 시작

글로벌 윈도우 (Global Window)

  • 전체 스트림을 하나의 윈도우로 간주
  • 시간 제한 없음, 항상 열린 상태
  • 사용자가 트리거(trigger) 정의해야 결과 산출 시점 결정
    • 별도의 윈도우 분할 기준을 주지 않으면 모든 데이터가 한 창에 쌓이게 됨
    • 예: count 트리거 → 100개마다 출력

윈도우 선택 가이드

텀블링 윈도우 사용 시

  • 정기적인 리포트 생성
  • 시간대별 통계 분석
  • 배치 처리와 유사한 요구사항

슬라이딩 윈도우 사용 시

  • 이동 평균 계산
  • 실시간 트렌드 분석
  • 겹치는 구간의 데이터 비교

세션 윈도우 사용 시

  • 사용자 행동 분석
  • 웹 세션 추적
  • 비정기적인 이벤트 패턴 분석

글로벌 윈도우 사용 시

  • 전체 데이터셋 분석
  • 사용자 정의 집계 조건
  • 카운트 기반 처리

윈도우 성능 고려사항

메모리 사용량

  • 텀블링: 가장 효율적 (겹치지 않음)
  • 슬라이딩: 중간 (겹치는 부분 존재)
  • 세션: 가변적 (세션 길이에 따라)
  • 글로벌: 가장 높음 (모든 데이터 유지)

처리 복잡도

  • 텀블링: O(1) - 단순한 시간 기반 분할
  • 슬라이딩: O(k) - k는 슬라이드 간격
  • 세션: O(n) - n은 세션 수
  • 글로벌: O(n) - n은 전체 데이터 수

관련 개념