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 을 선택하는 것이 핵심입니다.