ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Spring Cloud Data Flow란?
    Spring Framework 2023. 7. 25. 00:01
    728x90

    Spring Cloud Data Flow란?

    약자를 따서 SCDF라고도 불리며 핵심 요소로 Streaming과 Batch 작업을 수행할 수 있도록 도와줍니다.

    Source, Sink, Processor  등을 추상화하여 개발자가 비즈니스 로직과 데이터 처리 작업을 집중할 수 있도록 도와줍니다.

     

    Data Flow Server와 Skipper Server 2가지 주요 서버 컴포넌트로 구성되어 있습니다.

    https://dataflow.spring.io/docs/concepts/architecture/

    Data Flow server은 데이터 흐름의 주요 진입점을 담당합니다.

    Restful API를 통해 이루어지고, 웹 대시보드가 제공됩니다.

    이외에도 Cloud Foundry, Kubernetes 또는 local 머신에서 실행할 수 있습니다.

     

    Skipper Server는 하나 이상의 플랫폼에 스트림을 배포하거나, 상태 머신 기반 blue/green 전략을 사용하여 플랫폼에서 스트림을 업그레이드하거나 롤백합니다.

     

    Data Flow Server와 Skipper Server는 모두 RDBMS가 설치되어 있어야 합니다. (기본적으로는 서버에 내장된 H2 DB 사용)

     

    Application의 2가지 Type

    Long-lived application

    무한한 양의 데이터가 단일 입력 또는 출력을 통해 consume 되거나 produce 되는 Message-Driven Application

    대게 Spring Cloud Stream Framwork를 사용합니다.

    RabbitMq, Kakfa 등의 다양한 메시징 미들웨어를 활용할 수 있습니다.

     

    Short-lived application

    한정된 데이터를 처리한 후 종료됩니다.

    Spring Cloud Task Framwork를 사용할 수 있으며 Task를 수행하고 실행 상태를 기록할 수 있습니다.

    대게 Spring Cloud Task 또는 Spring Batch framework를 사용합니다.

     

    Spring Cloud Data Flow와 Spring Batch 그리고 Spring Stream의 차이점은 무엇일까?

    Spring Batch는 일괄 처리 애플리케이션을 구축하기 위한 프레임워크입니다.

    Spring Stream은 이벤트 기반 스트리밍 애플리케이션을 구축하기 위한 프레임워크입니다.

     

    Spring Cloud Data Flow는 데이터 기반 애플리케이션 및 마이크로서비스의 오케스트레이션 및 관리에 중점을 둔 프레임워크입니다.

    실시간 스트리밍 데이터와 일괄처리를 모두 지원하므로 사용자가 상호 연결된 processor, source, sink 과정을 추상화하고 데이터 흐름의 시각적 구정 및 관리를 위한 GUI 대시보드를 제공합니다.

     

    즉, Spring Cloud Data Flow는 배치 및 스트리밍 처리 기능을 모두 통합하여 데이터 기반 애플리케이션 생성, 배포 및 모니터링을 용이하게 하는 상위 수준 추상화 및 관리 계층을 제공하여 Spring Batch 및 Spring Stream의 사용을 단순화합니다.

     

    Stream Processing

    Stream Processing이란 무제한의 데이터를 처리하는 것으로 정의됩니다.

    예를 들어 실시간 신용 카드 탐지 또는 예측 분석, 실행 가능한 분석을 위한 실시간에 가까운 비즈니스 데이터 처리에 사용됩니다.

    RabbiMQ, Kafka와 같은 메시징 미들웨어를 사용하여 연결됩니다.

     

    Batch Processing

    Batch Processing은 한정된 양의 데이터를 처리하는 것으로 정의됩니다.

    예를 들어 billing application이 있습니다.

    https://dataflow.spring.io/docs/2.8.x/concepts/batch-jobs/

     

     

     

     

     

    참고자료

    https://dataflow.spring.io/docs/

     

    Documentation | Spring Cloud Data Flow

    Documentation Comprehensive documentation, guides, and resources for Spring Cloud Data Flow. Version: 2.10.3 (Current)

    dataflow.spring.io

     

    댓글

Designed by Tistory.