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 분석에 사용할 수 있습니다.

  • 특징

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