스프링 클라우드 데이터 플로우 공식 레퍼런스를 한글로 번역한 문서입니다.
전체 목차는 여기에 있습니다.
앞에서는 두 가지 애플리케이션을 사용했다:
billsetuptask:billsetuptask는billrun애플리케이션을 위한 데이터베이스를 설정한다.billrun:billrun은 파일에서 사용 정보를 읽어 파일에 있는 각 항목마다 청구서 레코드를 생성한다.
앞에서는 수동으로 billsetuptask 애플리케이션을 실행한 다음에 billrun 애플리케이션을 실행했었다. 두 가지 애플리케이션을 연달아 실행하고 첫 번째 앱은 몇 초 안에 실행이 완료되는 스몰 케이스라면 이 방법으로도 충분히 가능하다. 하지만 순서대로 실행해야 하는 애플리케이션이 5개, 10개, 20개 혹은 그 이상 있고, 다 실행되는데 몇 시간이 걸리는 애플리케이션도 있다면 어떨까?
게다가 이 앱들 중 하나가 0 이외의 종료 코드를 반환하면 (즉, 어떠한 에러로 끝나면) 어떻게 대응해야 할까? Spring Cloud Data Flow는 composed 태스크를 이용해 이 문제에 대한 솔루션을 제공한다.
composed 태스크는 태스크 애플리케이션을 그래프의 각 노드로 표현하는 유향 그래프directed graph다. 이전 예제에서 사용했던 두 애플리케이션(billsetuptask, billrun)에선 그래프를 다음과 같이 표현할 수 있다:

이 섹션에선 Spring Cloud Data Flow의 UI를 이용해 composed 태스크를 생성한 다음 클라우드 파운드리, 쿠버네티스, 로컬 머신에서 기동하는 방법을 보여준다.
목차
Prerequisites
이 샘플을 시작하기 전에 먼저
- Cloud Data Flow를 설치해야 한다.
- 이 프로젝트에서 사용할 Spring Cloud Task 프로젝트를 설치해야 한다.
Data Flow Installation
아래 플랫폼 중 하나에 Spring Cloud Data Flow를 설치해놔야 한다:
Registering the Billing Applications
이 가이드를 따라해보려면 Spring Cloud Data Flow에 미리 billsetuptask와 billrun 애플리케이션을 등록해놔야 한다.
Registering the Composed Task Runner
composed task runner를 등록하려면:
- 아직 등록하지 않았다면,
composed-task-runner애플리케이션을 제공하는 Spring Cloud Task App Starters를 임포트해라. 그러려면 왼쪽 네비게이션 바에서 Apps를 클릭해라. - Add Applications(s)를 선택해라.
- Add Application(s) 페이지가 보이면 Bulk import application coordinates from an HTTP URI location을 선택해라.
- URI 필드에 다음 중 하나를 입력한다 (앱을 가져올 리소스를 기반으로 선택해라):
- 메이븐:
https://dataflow.spring.io/task-maven-latest - 도커:
https://dataflow.spring.io/task-docker-latest
- 메이븐:
- Import the application(s)를 클릭해라.
Creating a Composed Task
composed 태스크를 생성하려면:
-
왼쪽 네비게이션 바에서 Tasks를 선택한다.
-
CREATE TASK를 선택해라. 태스크 생성 뷰가 띄워질 거다:

태스크를 구성할 수 있는 그래픽 에디터가 보일 거다. 초기 캔버스에는
START노드와END노드가 존재한다. 캔버스 왼편에는billsetuptask와billrun을 포함한 사용 가능한 태스크 애플리케이션들이 나와있다. -
billsetuptask애플리케이션을 캔버스로 드래그해라. -
START 노드를
billsetuptask에 연결해라. -
billrun애플리케이션을 캔버스로 드래그해라. -
billsetuptask애플리케이션을billrun애플리케이션에 연결해라. -
billrun애플리케이션을 END 노드에 연결해 composed task 정의를 완성해라. 여기서는 두 태스크 앱(billsetuptask와billrun)으로 composed 태스크 정의를 구성한다. 애플리케이션에 설정 프로퍼티를 정의했다면 여기에서 설정했을 거다.

-
CREATE TASK를 클릭한다. 태스크 정의의 이름을 입력하라는 메세지가 보일 거다. 태스크 정의 이름은 배포하려는 런타임 설정에 붙이는 논리적인 이름이다. 여기서는 태스크 애플리케이션과 동일하게
ct-statement를 사용한다. 이제 다음과 같은 컨펌 뷰가 보일 거다:

-
Create the task를 클릭한다. 그러면 메인 Tasks 뷰가 나타날 거다.
팁: Composed 태스크 그래프로 할 수 있는 모든 작업을 알고싶다면 레퍼런스 문서에서 Composed Task 섹션을 읽어봐라.
Launching the Task
아래 이미지에 보이는 태스크 리스트로 돌아가면, 이제 태스크 정의가 세 개가 있는 것을 확인할 수 있다:

ct-statement 태스크를 만들었을 때 아래 세 가지 태스크 정의가 만들어진 것을 알 수 있다:
ct-statement: 이 정의는 composed 태스크 그래프 안에서 태스크들을 실행하는 composed task runner를 나타낸다.ct-statement-billsetuptask: 이 정의는 실행되는billsetuptask앱을 나타낸다.ct-statement-billrun: 이 정의는 실행시킬billrun앱을 나타낸다.
이제 다음과 같이 ct-statement의 왼쪽에 있는 드롭다운을 클릭하고 Launch 옵션을 선택하면 ct-statement를 실행할 수 있다:

커맨드라인 인자와 배포 파라미터들을 추가할 수 있는 양식으로 이동하지만, 이 composed 태스크에선 추가 설정이 필요하지 않다. LAUNCH THE TASK 버튼을 클릭해라.
그러면 Data Flow 서버의 태스크 플랫폼에서 composed 태스크 그래프 실행을 관리하는 composed task runner가 실행된다.
팁: composed 태스크를 여러 번 실행해야 한다면, 실행할 때마다
increment-instance-enabled프로퍼티를true로 설정해야 한다.
Verifying the Results
실행이 완료되면 각 태스크 정의의 Status가 녹색으로 변경되며 COMPLETE가 표시된다. 이 태스크의 간단한 실행 내역들을 조회하려면 아래 이미지에 보이는 Task executions 탭을 선택해라.

Deleting a Composed Task
앞에서도 보여줬듯이, composed 태스크는 그래프에 있는 각 애플리케이션마다 정의를 하나씩 생성한다. composed 태스크로 만들어진 모든 정의를 삭제하려면, composed task runner 정의를 삭제하면 된다. 그러려면:
-
ct-statement왼편에 있는 드롭다운을 클릭하고 Destroy 옵션을 선택한다:
-
Confirm Destroy Task를 묻는 대화 상자가 나타날 거다. DESTROY THE TASK 버튼을 클릭해라. 이렇게 하면ct-statementcomposed 태스크를 구성하는 정의들이 삭제된다.
Next :
Deploying a task application on Kubernetes with Data Flow
쿠버네티스 환경에서 Data Flow를 이용해 Spring Cloud Task 애플리케이션을 배포하고 실행해보기
전체 목차는 여기에 있습니다.