
Apache Flink는 실시간 데이터 처리와 배치 처리 모두에 적합한 유연하고 강력한 도구입니다.
이번 글에서는 Flink의 주요 기능과 실무 활용 사례를 코드와 함께 자세히 살펴보겠습니다.
Flink는 체크포인팅(Checkpointing)과 상태 관리(State Management)를 통해 장애 복구와 정확히 한 번 처리(Exactly Once Processing)를 보장합니다.
Flink는 주기적으로 실행 상태를 체크포인트에 저장하여 시스템 장애 시 복구 가능하게 합니다.
데이터를 손실 없이 재처리할 수 있어 금융 거래 시스템과 같이 데이터 정확성이 중요한 환경에 적합합니다.
Flink는 스트림 처리 중 상태를 관리하며, 이를 통해 복잡한 이벤트 간 연산을 가능하게 합니다.
Flink는 Kafka와 쉽게 통합하여 데이터 소스와 싱크를 처리할 수 있습니다.
// Flink 실행 환경 설정
StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
// Kafka 소스 생성
KafkaSource<String> source = KafkaSource.<String>builder()
.setBootstrapServers("localhost:9092")
.setTopics("input-topic")
.setGroupId("flink-group")
.setValueOnlyDeserializer(new SimpleStringSchema())
.build();
// Kafka 싱크 생성
KafkaSink<String> sink = KafkaSink.<String>builder()
.setBootstrapServers("localhost:9092")
.setRecordSerializer(KafkaRecordSerializationSchema.builder()
.setTopic("output-topic")
.setValueSerializationSchema(new SimpleStringSchema())
.build())
.build();
// 데이터 처리 파이프라인
env.fromSource(source, WatermarkStrategy.noWatermarks(), "Kafka Source")
.map(value -> processData(value)) // 데이터 변환 로직
.sinkTo(sink);
1. 확장성: Kafka는 대규모 데이터 처리에 적합하며, Flink와 결합하여 실시간 분석 가능.
2. 유연성: 다양한 Kafka 토픽에서 데이터를 수집하고, 처리 후 다시 Kafka에 저장.
3. 사용 사례:
실시간 트랜잭션 처리: Kafka에서 수집한 거래 데이터를 Flink로 분석 후 경고 메시지 생성.
IoT 센서 데이터 스트림: 장비 상태를 실시간으로 모니터링.
Flink는 스트림 데이터를 효과적으로 그룹화하고 분석할 수 있도록 다양한 윈도우 유형을 제공합니다.
stream.keyBy(x -> x.key)
.window(TumblingProcessingTimeWindows.of(Time.seconds(5)))
.sum("value");
#### 2. Sliding Window
- 겹치는 데이터 그룹 생성
- 윈도우 크기와 슬라이드 간격 설정 가능
- **예시:** 10초 윈도우를 5초마다 이동하며 평균 계산
stream.keyBy(x -> x.key)
.window(SlidingProcessingTimeWindows.of(Time.seconds(10), Time.seconds(5)))
.aggregate(new MyAggregateFunction());
#### 3.Session Window
- 이벤트 활동 간격에 따라 동적 윈도우 생성.
- **예시:** 사용자 세션 데이터를 1분 간격으로 분석.
stream.keyBy(x -> x.key)
.window(ProcessingTimeSessionWindows.withGap(Time.minutes(1)))
.reduce(new MyReduceFunction());
### Windowing 유형의 활용 사례
- Tumbling Window: 5분 단위로 로그 데이터를 집계하여 대시보드에 표시.
- Sliding Window: 10분 동안 발생한 클릭 데이터를 5분 간격으로 이동하며 분석.
- Session Window: 사용자 행동 패턴을 기반으로 세션별 구매 경향 분석.
## 4. Flink의 실제 활용 사례
1. 실시간 모니터링
- IoT 센서 데이터 5분 단위 집계.
- 슬라이딩 윈도우를 활용해 이상 징후 감지.
2. 사용자 행동 분석
- 세션 윈도우로 사용자 세션을 분석하여 맞춤형 추천 제공.
3. 트랜잭션 처리
- 체크포인팅을 활용하여 장애 발생 시 데이터 손실 방지.
# Flink로 실시간 데이터 처리의 가능성 확장
Flink는 **체크포인팅, 상태 관리, Kafka 통합, Windowing**과 같은 다양한 기능을 통해 실시간 데이터 처리의 강력한 도구로 자리 잡고 있습니다.
이를 활용하면 실시간 분석, IoT 데이터 처리, 사용자 행동 분석 등 다양한 분야에서 혁신적인 솔루션을 구현할 수 있습니다.