Spring Cloud Data Flow #1 시작하기

Henry·2023년 9월 3일
0

https://spring.io/projects/spring-cloud-dataflow
https://dataflow.spring.io/getting-started/
https://docs.spring.io/spring-cloud-dataflow-samples/docs/current/reference/htmlsingle/#spring-cloud-data-flow-samples-overview

OVERVIEW

Microservice based Streaming and Batch data processing for Cloud Foundry and Kubernetes.
Spring Cloud Data Flow provides tools to create complex topologies for streaming and batch data pipelines. The data pipelines consist of Spring Boot apps, built using the Spring Cloud Stream or Spring Cloud Task microservice frameworks.
Spring Cloud Data Flow supports a range of data processing use cases, from ETL to import/export, event streaming, and predictive analytics.

1. 특징

  • Spring 포트폴리오에 속한 Java와 Spring Boot 기반 프레임웍
  • 복잡한 데이터 통합과 처리 파이프라인을 구축, 배포, 운영
    ( 여러 마이크로서비스 또는 데이터 처리 단위를 연결 )
  • 실시간 데이터 스트림 처리가 가능 ( Kafka, RabbitMQ 등과 연동 )
  • Spring Batch와 연계하여 배치 처리도 지원
  • 클러스터 관리 플랫폼(쿠버네틱스)을 이용하여 자동으로 스케일링
  • 기본적으로 다양한 모니터링 도구와 통합
  • 기본적인 자체 스케줄링을 제공하지 않으며, 외부 스케줄러와 통합
    ( Quartz, Tivoli, Cron... )
  • 트랜잭션 : Spring Batch와의 통합을 통해 관리 가능
  • 대시보드 : 지원

2. vs AirFlow

  • Python으로 개발되었고, 워크플로우도 Python 스크립트로 작성
  • 워크플로우를 DAG 형태로 모델링하며, 이를 통해 복잡한 의존성과 실행 순서를 관리
  • 쉽게 통합할 수 있는 풍부한 플러그인 시스템을 제공
  • 자체 스케줄러 내장
  • 주로 배치 처리에 사용되지만, 일부 사용 사례에서는 스트리밍 데이터 처리 가능
  • 트랜잭션 : Python 스크립트나 외부 도구를 통해 구현 가능
  • 대시보드 : 지원

3. 파이프라인

  • 컴포넌트
    Source: 데이터의 출발점입니다. 예를 들어, HTTP 요청을 받거나, 메시지 큐에서 메시지를 수신하는 등의 역할을 수행합니다.
    Processor: 중간 처리 단계에서 데이터를 변환하거나 필터링합니다. 예를 들어, 데이터를 정제하거나 복잡한 계산을 수행할 수 있습니다.
    Sink: 데이터의 최종 목적지입니다. 예를 들어, 데이터베이스에 데이터를 저장하거나, 다른 시스템에 메시지를 보내는 등의 역할을 수행합니다.
  • 작동 방식
    데이터 흐름: Source에서 데이터가 생성되고, Processor를 거쳐서 Sink로 전달됩니다. 이 과정이 파이프라인입니다.
    메시지 브로커: Source, Processor, Sink 사이의 데이터 통신은 일반적으로 메시지 브로커(예: Apache Kafka, RabbitMQ)를 통해 이루어집니다.
    스케일링: 각 컴포넌트는 독립적으로 스케일링이 가능합니다. 이는 매우 높은 수준의 유연성을 제공합니다.
  • 정의와 배포
    DSL: SCDF에서는 스트림 DSL(Dataflow DSL)을 통해 파이프라인을 정의합니다. 이를 통해 간단한 텍스트 기반의 언어로 복잡한 데이터 흐름을 설계할 수 있습니다.
    대시보드 및 CLI: SCDF는 웹 대시보드와 명령어 줄 인터페이스를 통해 파이프라인을 쉽게 생성, 배포, 관리할 수 있습니다.

4. 실시간 데이터 스트림 처리

  • 데이터가 연속적으로 처리되는 파이프라인을 의미합니다.
  • 웹 기반 대시보드를 통해 실시간 스트림을 모니터링할 수 있습니다.
  • 스트림의 상태, 메트릭, 로그 등을 실시간으로 확인할 수 있습니다.
  • ex1) 실시간으로 로그를 분석해서 특정 패턴이나 에러 식별
  • ex2) 여러 데이터 소스에서 데이터를 실시간으로 수집해서 대시보드에 표시

5. 자동 스케일링

  • 런타임 환경이나 인프라스트럭처에서 제공하는 스케일링 메커니즘을 활용
  • Kubernetes ( 자동 스케일링 )
  • Cloud Foundry ( App Autoscaler )
  • 메시지 브로커를 통한 스케일링 ( 큐 사이즈나 레이턴시 )
  • Source, Processor, Sink 독립적인 앱으로 배포

결과적으로 실시간 처리와 높은 병렬성이 필요한 경우에는 SCDF가,
복잡한 워크플로우와 일정 기반의 배치 작업에는 Airflow가 더 적합할 수 있습니다.

profile
삽질은 한번만... 제발...

0개의 댓글