Lambda vs Kappa Architecture in Data Pipeline (Korean)
Lambda Architecture
구성 요소
Batch Layer
정기적으로 대량의 Historical Data 를 처리합니다. (예: Daily 또는 Hourly)
이를 통해 높은 정확도와 데이터 Completeness (완전성) 을 보장하며, 복잡한 Data 변환을 처리합니다.
Speed Layer
실시간 Data 를 처리하여 low-latency 시간의 결과를 제공합니다.
Batch Layer 가 동일한 Data 를 처리할 때까지 즉각적 이지만 완전하지 않을 수 있는 데이터를 제공합니다. (Batch 결과를 기다리기 까지 어느 정도의 정확성을 가지고 참고할 수 있도록 Data 를 확인)
Serving Layer
- Batch Layer 와 Speed Layer 의 결과를 결합하여 최종적으로 정확한 Data 를 Query 할 수 있게 합니다.
Queries
- 최종 Data 를 Query 하고 출력합니다.
장점
Batch Processing 을 통해 높은 품질과 Complete (완전) 한 결과를 보장합니다.
Speed Layer 의 low-latency 시간 Data 를 통해 실시간 Insight 를 제공합니다.
고려해야 할 점
두 개의 Layer (Batch + Speed) 를 유지하는 복잡성이 있습니다.
- Pipeline Logic 이 Batch, Realtime Processing 두 개를 다루어야 합니다.
Batch 및 Realtime 시스템을 모두 지원하기 위한 추가 Resource 가 필요합니다.
- i.e. DB, Kafka 등
+-------------------+
| Batch Layer |
| (Processes large |
| historical data) |
+---------+---------+
|
v
+----------+-----------+
+-----------+ Serving Layer +-----------+
| | (Combines batch and | |
| | real-time data) | |
| +----------+-----------+ |
| | |
v v v
+-----------+ +--------+--------+ +----------------+
| Batch DB | | Speed Layer | | Queries |
| (High | | (Processes real-| | Final Output |
| accuracy |---->| time data with |---->| Aggregation |
| & quality)| | low latency) | | |
+-----------+ +-----------------+ +----------------+
Layer 별 사용 가능한 Solution 과 활용 방법
Batch Layer
대량의 Data 를 처리하며, Data 의 완전성, 정확성, 높은 품질을 보장하기 위한 Regular Interval 로 Batch 처리를 담당합니다.
이 Layer 에서는 고성능, 대규모 분산 처리가 필요합니다.
사용 가능한 Solution
Apache Hadoop
전통적인 Batch Processing Solution, 대규모 데이터 세트를 분산하여 처리합니다.
HDFS (분산 파일 시스템) 와 함께 대규모 데이터를 저장하고 분석하는 데 매우 적합합니다.
Apache Spark
Spark 는 Hadoop 보다 더 빠른 대규모 Batch Processing 을 지원합니다.
Memory 기반 Processing 방식으로 매우 큰 Data 를 효율적으로 처리하며, 특히 Spark 의 DataFrame API 는 복잡한 Data 변환 작업에 유리합니다.
Google BigQuery
완전 관리형 Data Warehouse 로, 대규모 데이터를 빠르게 쿼리하고 분석할 수 있습니다. (Cloud 기반 서비스, Commercial)
실시간 데이터 분석보다는 Batch 분석에 적합합니다.
활용 방법
Historical Data 를 Batch 로 Processing 하고 Regular Interval 로 분석 결과를 저장하여, 이후 Serving Layer 에서 사용할 수 있도록 준비합니다.
Regular Interval 로 실행되는 CRON 작업이나 Scheduler 를 통해 대규모 데이터 집계를 처리하는 데 유용합니다.
Speed Layer
실시간 Data 를 처리하여 즉각적인 결과를 제공하며, low-latency 시간을 요구하는 작업을 처리합니다.
Batch Layer 의 처리가 완료되기 전까지 임시적인 Data 를 제공하지만, 실시간 성을 요구하는 작업에 필수적입니다.
사용 가능한 Solution
Apache Kafka
실시간 Data Streaming Platform 으로, 높은 처리량과 low-latency 시간을 보장하며, 실시간으로 Data 를 전송하고 처리할 수 있습니다.
Speed Layer 에서 Data Stream 을 받아 처리하는 데 적합합니다.
Apache Flink
Streaming Data 처리에 특화된 Solution 으로, State 기반 Streaming 처리에 매우 유리합니다.
실시간 Data 처리가 필요하고, 고도로 복잡한 Data 변환을 실시간으로 처리할 수 있습니다.
Spark Structured Streaming
Spark 의 실시간 Streaming 처리 Solution 으로, Micro-Batch 방식을 사용하여 Streaming Data 를 처리합니다.
일관성 있는 Batch 및 Streaming 처리를 제공하며, Speed Layer 에서 적절하게 사용될 수 있습니다.
Apache Storm
고성능 실시간 Streaming 처리 Framework 로, low-latency 시간과 확장성을 지원합니다.
실시간 Data Flow 를 처리하는 데 매우 적합합니다. (Topology 를 구성할 수 있음)
활용 방법
Speed Layer 에서는 실시간으로 들어오는 Data 를 Streaming 처리하여 즉시 결과를 반환합니다.
Streaming 처리 Solution 을 사용하여 실시간 Data 를 분석하고 임시 결과를 Serving Layer 에 전달합니다.
Serving Layer
Batch Layer 와 Speed Layer 에서 처리된 Data 를 결합하여 최종 사용자에게 Query 가능한 결과를 제공합니다.
이 Layer 는 low-latency 시간으로 Data 를 제공할 수 있어야 하며, 빠른 Query 처리를 위해 최적화된 Storage 를 사용합니다.
사용 가능한 Solution
Apache HBase
- 실시간으로 읽기/쓰기가 가능한 분산형 NoSQL Database 로, Serving Layer 에서 대규모 Data 를 빠르게 Query 하고 제공하는 데 적합합니다.
Elasticsearch
실시간으로 Data 를 Indexing 하고 빠르게 검색할 수 있는 검색 엔진입니다.
실시간 분석 및 Query 에 적합하며, Serving Layer 에서 실시간으로 Data 를 조회하는 데 유용합니다.
Cassandra
분산형 NoSQL Database 로, 매우 높은 확장성과 실시간 읽기/쓰기를 지원합니다.
대규모 Data 를 저장하고 빠르게 조회하는 데 적합합니다.
Trino
다양한 Data Source (i.e. MySQL, Hive) 에서 실시간으로 Query 를 실행하는 분산형 SQL 엔진입니다.
Batch 및 Streaming Data 에 모두 Query 를 실행할 수 있어 Serving Layer 에 적합합니다.
활용 방법
Serving Layer 는 Batch Layer 에서 처리된 대용량 Data 와 Speed Layer 에서 실시간으로 처리된 데이터를 모두 결합하여 최종적으로 사용자에게 제공합니다.
Database 나 검색 엔진에 저장된 결과를 빠르게 Query 할 수 있도록 하며, 최종 사용자가 필요로 하는 정보를 지연 없이 제공하는 데 중점을 둡니다.
요약
각 Layer (Batch, Speed, Serving) 에서 선택하는 Solution 은 시스템의 요구 사항(Data volume, 처리 속도, Query 성능 등) 에 따라 달라질 수 있습니다.
Lambda Architecture 는 높은 정확도와 실시간 응답성을 모두 달성할 수 있지만, 그만큼 복잡성도 커지기 때문에 각 Solution 의 장단점을 고려하여 적절하게 구성해야 합니다.
Kappa 아키텍처
구성 요소
Single Streaming Layer
모든 Data 가 도착하는 즉시 실시간으로 처리됩니다.
Historical Batch Data 와 실시간 Data 의 구분이 없으며, Streaming 처리 시스템이 이를 모두 처리합니다.
장점
Single Streaming Layer 만을 사용하는 단순한 아키텍처로 구성됩니다.
단순한 구조 때문에 유지 관리 및 확장이 더 쉽습니다.
Batch 처리가 필요 없는 low-latency 시간을 우선시하는 use case 에 적합합니다.
고려해야 할 점
Batch 처리가 제공하는 Data Completeness (완전성) 과 품질 보장이 부족할 수 있습니다.
높은 정확도와 대규모 Data 를 처리할 때 관리가 더 어려울 수 있습니다.
+-------------------+
| Streaming Layer |
| (Processes all data|
| in real-time) |
+----------+---------+
|
v
+----------+---------+
| Queries & |
| Final Output |
| (Aggregates and |
| delivers results) |
+--------------------+
Single Streaming Layer 로 사용 가능한 Solution 과 활용 방법
Apache Kafka
특징
Kafka 는 분산형 Streaming Platform 으로, Data 를 실시간으로 전송하고 처리할 수 있는 Message Broker 입니다.
특히, 대용량 Data Stream 을 안정적으로 처리하는 데 뛰어납니다.
활용 방법
Kafka 는 Data 수집과 전송에 사용됩니다.
실시간 Data 를 여러 Source 로부터 받아와 분산형 방식으로 Streaming Layer 에 전달할 수 있습니다.
Kafka Streams 를 사용하면 실시간으로 Data Stream 을 처리할 수 있으며, State 기반의 실시간 분석도 가능합니다. 예를 들어, 실시간 Event Log 처리나 Click Stream Event 분석에 사용할 수 있습니다.
Apache Flink
특징
Flink 는 고성능 Streaming 처리 엔진으로, 실시간으로 Data 를 처리하면서 상태 관리 및 low-latency 처리를 지원합니다.
Data 처리의 복잡도가 높거나 실시간 처리의 정확성이 요구될 때 적합합니다.
활용 방법
Flink 는 State 기반 Streaming 처리에 강점이 있으며, 예를 들어 금융 거래의 실시간 모니터링, 사용자 행동 기반 실시간 추천 시스템 등에서 사용할 수 있습니다.
Flink 의 Event Time 처리 기능을 통해 시간에 민감한 Event 를 정확하게 처리할 수 있으며, Windowing 기능을 통해 실시간 Data 를 집계하고 분석하는 데 사용할 수 있습니다.
Spark Structured Streaming
특징
Spark Structured Streaming 은 Micro-Batch 방식으로 Streaming Data 를 처리하는 Spark 의 실시간 처리 Framework 입니다.
기존 Spark Batch 처리와 통합되어 Batch 와 Streaming 처리를 일관성 있게 사용할 수 있습니다.
활용 방법
Spark Structured Streaming 은 실시간 Data 분석 및 Data Pipeline 처리에 적합합니다.
- 예를 들어, Log Data 의 실시간 분석, 실시간 Dashboard 업데이트 등에 사용할 수 있습니다.
대규모 Data Stream 을 안정적으로 처리하며, Data 변환 작업이 필요한 실시간 처리를 효율적으로 할 수 있습니다.
Apache Pulsar
특징
Apache Pulsar 는 Kafka 와 유사한 Messaging 시스템이지만, Multi-Tenancy 와 Geographical Replication 같은 고급 기능을 제공하는 Streaming Platform 입니다.
이를 통해 글로벌 분산 시스템에서도 안정적으로 실시간 Data 를 처리할 수 있습니다.
활용 방법
Pulsar 는 Event 기반 처리와 Messaging 시스템을 요구하는 실시간 Application 에서 사용할 수 있습니다. 글로벌 Event 처리 시스템, 실시간 Transaction 처리 등에서 활용할 수 있습니다.
Multi Topic 처리와 확장성이 뛰어나 대규모 시스템에서도 사용 가능합니다. 예를 들어, 글로벌 Application 에서 발생하는 Event 를 Region 별로 분산 처리할 수 있습니다.
Apache Storm
특징
Storm 은 실시간 Data 처리를 위해 설계된 분산형 Streaming 처리 Framework 입니다.
매우 low-latency 시간과 높은 확장성을 제공하며, 실시간으로 Event 를 처리해야 하는 시스템에 적합합니다.
활용 방법
Storm 은 실시간 Event 처리, Log 분석, 실시간 Data 변환에 사용됩니다. 예를 들어, Twitter 의 실시간 Twit 분석이나, 실시간으로 데이터 정규화 및 변환 작업을 처리하는 데 사용할 수 있습니다.
매우 low-latency 시간을 요구하는 서비스, 예를 들어 실시간 감시 시스템이나 실시간 거래 감지 시스템에 적합합니다.
Apache Beam
특징
- Streaming 및 Batch Data 처리 Solution 입니다. 서로 다른 Data Source 에서 Data 를 실시간으로 처리하고 분석할 수 있습니다.
활용 방법
실시간 및 Batch Data 를 통합 처리할 수 있어, Data Pipeline 을 통합적으로 관리할 때 유용합니다. 예를 들어, 실시간 광고 클릭 Data 분석이나 IoT Data 를 실시간으로 처리하는 데 사용할 수 있습니다.
Apache Beam API 를 사용하여 한 번 작성한 Code 를 다양한 실행 엔진(Spark, Flink 등)에서 실행할 수 있기 때문에 유연한 배포 및 실행 환경을 제공합니다.
요약
Kappa Architecture 의 Single Streaming Layer 에서는 이러한 Solution 들을 적절히 활용하여 실시간으로 Data 를 처리하고 분석하는 것이 중요합니다.
선택한 Solution 에 따라 지연 시간, 확장성, 관리 편의성이 달라지므로, 요구 사항에 맞는 Solution 을 선택하는 것이 핵심입니다.
Subscribe to my newsletter
Read articles from Gyuhang Shim directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by
Gyuhang Shim
Gyuhang Shim
Gyuhang Shim Passionate about building robust data platforms, I specialize in large-scale data processing technologies such as Hadoop, Spark, Trino, and Kafka. With a deep interest in the JVM ecosystem, I also have a strong affinity for programming in Scala and Rust. Constantly exploring the intersections of high-performance computing and big data, I aim to innovate and push the boundaries of what's possible in the data engineering world.