최근 새로운 회사에 이직해 2달간의 배치 파이프라인 마이그레이션 작업을 진행하였다. 이 과정에서 Spring Cloud Data Flow(SCDF)의 Task 기능을 활용하였으며, 이를 통해 SCDF와 Spring Batch에 대한 공부를 할 수 있었다. SCDF의 기능을 배울 수 있는 기회를 가진 것은 매우 좋았으며, 아직 프로덕션 레벨까지 구성하지 못한 상태지만 프로젝트를 더 리팩토링하여 실제 운영 시에도 문제없이 돌아갈 수 있도록 더 다듬어야 한다..
아래는 SCDF 에 개념적인 내용을 먼저 정리해보려고 한다.
Spring Cloud Data Flow 란?
Spring Cloud Data Flow(이하 SCDF)는 Spring 프레임워크에서 개발한 데이터 처리 플랫폼이다. SCDF는 마이크로서비스 아키텍처를 기반으로 구성되어 있으며, 분산 시스템에서 대규모 데이터 처리를 위한 도구이다. SCDF는 빅 데이터 처리를 위해 고안된 스트림 처리 플랫폼으로, 대규모 데이터를 처리하고 분석하는 데 필요한 기능들을 제공한다.
SCDF는 스프링 부트 기반으로 만들어졌으며, 스프링 부트 애플리케이션을 빠르게 구성하고, 실행 및 관리하기 위한 다양한 기능을 제공한다. SCDF는 스프링 클라우드의 다양한 컴포넌트들과 연동하여 클라우드 기반의 빅 데이터 처리 시스템을 쉽게 구성할 수 있도록 돕는다.
SCDF는 다양한 데이터 처리 파이프라인을 간편하게 생성하고 관리할 수 있다. 예를 들어, 데이터를 수집하여 처리하고, 처리된 데이터를 저장하고, 분석 및 모니터링을 수행할 수 있다. SCDF는 이러한 데이터 파이프라인을 논리적인 유닛으로 분리하여 개발 및 운영할 수 있도록 지원한다. 이러한 유닛은 모듈이라고 불리며, 스프링 클라우드 스트림 애플리케이션, 람다 함수, 태스크, 배치 작업 등의 모듈로 구성된다.
SCDF의 또 다른 특징은 데이터 처리 파이프라인을 실행 및 관리하기 위한 다양한 도구들을 제공한다는 것이다. 예를 들어, 스프링 클라우드 데이터 플로우 대시보드를 통해 파이프라인의 실행 상태를 모니터링하고, 이벤트를 처리하고, 다양한 인터페이스를 통해 파이프라인을 제어할 수 있다. 또한, SCDF는 라우팅, 변환, 데이터 처리, 집계, 분산 트랜잭션 등의 다양한 미들웨어를 제공하여, 빅 데이터 처리 파이프라인을 효율적으로 운영할 수 있도록 지원한다.
SCDF는 다양한 클라우드 환경에서 동작할 수 있다. AWS, Azure, Google Cloud, Kubernetes 등의 다양한 클라우드 환경에서 쉽게 배포할 수 있으며, 스프링 클라우드 컴포넌트와의 통합을 통해 클라우드 네이티브 애플리케이션 개발에 유용하게 사용될 수 있다.
또한, SCDF는 다양한 데이터 처리 방식을 지원한다. 데이터 스트리밍 처리와 배치 처리를 모두 지원하며, 데이터 스트림 처리를 위한 스프링 클라우드 스트림과 데이터 배치 처리를 위한 스프링 클라우드 태스크를 제공한다. 이러한 다양한 처리 방식을 지원하므로, 사용자는 데이터 처리에 적합한 방식을 선택할 수 있다.
SCDF는 다양한 데이터 소스와의 통합을 지원한다. 관계형 데이터베이스, NoSQL 데이터베이스, 트위터, 아파치 카프카 등 다양한 데이터 소스와의 통합이 가능하다. 또한, SCDF는 다양한 프로그래밍 언어를 지원하며, 자바, 파이썬, 루비, 그루비 등 다양한 언어로 작성된 애플리케이션을 실행할 수 있다.
마지막으로, SCDF는 커스터마이징이 가능하다. 사용자는 다양한 커스텀 모듈을 만들어 SCDF에 통합할 수 있으며, 자체적으로 모듈을 개발할 수도 있다. 이러한 커스터마이징을 통해 SCDF를 자신의 비즈니스 요구사항에 맞게 조정할 수 있다.
이처럼 Spring Cloud Data Flow는 대규모 데이터 처리를 위한 빅 데이터 처리 플랫폼으로, 다양한 데이터 처리 방식과 다양한 데이터 소스와의 통합을 지원하며, 커스터마이징이 가능하다는 특징을 가지고 있다. 또한, 스프링 프레임워크 기반으로 만들어져서 스프링 개발자들에게 친숙하고 쉽게 접근할 수 있다는 장점이 있다.
간략하게 말하면 SCDF는 Spring Cloud Stream(실시간거래)와 Spring Cloud Task(단발성거래) 등 여러 스프링부트 기반 어플리케이션에서 발생하는 데이터와 이벤트를 수집하고, 런타임 환경에서 동작 중인 애플리케이션의 상태와 성능을 모니터링할 수 있도록 도와주는 기능을 제공한다. 또한, SCDF는 이러한 데이터를 기반으로 다양한 기능을 제공하며, 애플리케이션의 배포, 스케줄링, 로깅 등 다양한 작업을 관리할 수 있도록 도와준다. 따라서, SCDF는 Spring Cloud Stream과 Spring Cloud Task를 포함한 여러 프레임워크의 모니터링을 위한 플랫폼으로 이해할 수 있다.
대략적인 SCDF 의 내용은 위와 같으며 다음 글에서부턴 어떤 방식으로 SCDF 를 활용해 보았는지 작성할 예정이다.
'Web > Spring' 카테고리의 다른 글
[Spring] 스프링 레퍼런스/소스 구석구석까지 탈탈 털기 - 1 (2) | 2024.10.08 |
---|---|
[Spring Cloud] API Gateway (2) | 2022.08.26 |
[Spring Cloud] Eureka 서버 기동하기 (0) | 2022.08.18 |
[Spring] 트랜잭션 전파(Transactional Propagation) (0) | 2022.07.13 |
[Query dsl] maven QueryDsl 설정 (0) | 2022.07.11 |
댓글