Springbatch
Java 기반 Springbatch 백엔드 컴포넌트
Java Spring Batch는 로깅, 트랜잭션 추적, 관리, 작업 처리 통계, 재시작 등 대용량 처리에 필수적인 기능들을 제공하는 프레임워크입니다. Spring Batch는 작업이 중단되어 추후 재시작 시, 처음부터 작업하는 것이 아닌 중단점 지점부터 실행을 합니다.
Turaco에서는 이러한 Job을 간단하게 구현할 수 있도록 Spring Batch 기반으로 구성된 Springbatch 컴포넌트를 제공하며 데이터베이스 또는 데이터베이스-카프카 간 대용량 데이터를 처리할 수 있습니다. 현재 Springbatch에서 지원하는 컴포넌트는 다음과 같습니다.
| 원본 데이터베이스 | 대상 데이터베이스 | 설명 |
|---|---|---|
| MariaDB MySQL PostgreSQL Kafka | MariaDB MySQL PostgreSQL | 원본 데이터와 대상 데이터는 상호 혼합된 조합으로 구성될 수 있습니다. - MariaDB - MariaDB, MariaDB - PostgreSQL, MariaDB - MySQL - MySQL - MariaDB, MySQL - MySQL, MySQL - PostgreSQL - PostgreSQL - MariaDB, PostgreSQL - MySQL, PostgreSQL - PostgreSQL - Kafka - MariaDB, Kafka - MySQL, Kafka - PostgreSQL |
Springbatch는 단순 Job만 지원하며 해당 Job을 구동하기 위해서는 Quartz, Scheduler, Cron 같은 전용 스케줄러를 사용해야 합니다.
컴포넌트 배치
Springbatch 컴포넌트는 원본 데이터와 해당 데이터 처리 후 저장할 대상 데이터 컴포넌트와 연동하도록 설계되었습니다. 원본 데이터는 아래 그림과 같이 RDBMS(MariaDB, MySQL, PostgreSQL) 컴포넌트와 카프카 클러스터 컴포넌트로 구성이 가능합니다.

Springbatch 컴포넌트는 아키텍처 설계 화면 (이하 디자이너 화면)에서 좌측에 위치한 컴포넌트 목록에서 백엔드 카테고리에 있습니다.
3.치 이름과 설명을 입력 후 확인을 클릭합니다.
이름과 설명은 필수 입력값이며 입력하지 않으면 확인 버튼이 활성화되지 않습니다.
입력된 이름과 설명은 아키텍처 설계 및 생성되는 리소스에 사용됩니다.

패키지 이름 설정

4. 패키지 이름은 반드시 지정되어야 합니다.
지정된 패키지 이름은 생성되는 소스내의 패키지 이름으로 저장됩니다.
또한 패키지 이름은 애플리케이션을 구분하는 고유한 값입니다.
* 중복되지 않도록 FQDN 형식으로 입력합니다.
ex) com.turaco.batch
배치 설정
배치 동작 방식은 cron 및 Scheduled 방식 중 1가지를 선택할 수 있습니다.
| 타입 | 설명 |
|---|---|
| Cron | 특정한 시간을 지정하고 지정된 시간에 Batch Job을 실행할 수 있습니다. ex) 매일 2시, 매주 수요일 12시 등. |
| Scheduled | 일정 주기로 반복적으로 작업을 수행합니다. 일정 주기로 동작하는 점은 Cron과 같지만 시작과 동시에 스케줄 동작이 수행된다는 점에 차이가 있습니다. `` |

배치 설정 항목은 배치 타입 및 배치 수행을 위한 반복 주기를 설정할 수 있습니다.
-
프로퍼티 속성창에서 배치 타입 선택 항목으로 이동합니다.
-
드롭 다운 버튼을 클릭합니다.
-
드롭다운 메뉴 항목중에서 Cron과 Scheduled 중 하나를 선택합니다.
-
배치 Job 타입 항목으로 이동합니다.
-
드롭다운 메뉴를 선택하여 배치 Job 타입 항목을 선택합니다.
chunk와 Tasklet 항목을 선택할 수 있습니다.
속성 설정
컴포넌트 속성은 아래와 같이 3개 속성으로 구성됩니다.
- 포트 설정 -> 컨테이너의 포트 정보로 주입
- 영구 볼륨 -> 컨테이너 저장소로 주입
- 환경 변수 -> 컨테이너의 환경 변수로 주입
스토리지 및 환경 변수 설정
컨테이너는 로컬 스토리지를 사용할 수 있으나 컨테이너의 특성상 재시작되거나 삭제되는 경우 저장된 데이터가 같이 삭제됩니다. 이러한 특성 때문에 외부에 영구 볼륨을 설정하고 저장을 해야 데이터가 유실되지 않고 보관이 됩니다. Turaco에서는 운영 환경에서 많이 사용하는 2가지 스토리지 클래스를 지원합니다.
- NFS 기반의 스토리지 클래스 (tlc-nfs-sc)
- Disk 기반의 스토리지 클래스 (tlc-block-sc)
1. 스토리지 설정에는 아래와 같이 3개의 속성이 있습니다.
3가지 옵션 중 원하는 옵션을 선택할 수 있습니다.
3가지 옵션 중 원하는 옵션을 선택할 수 있습니다.
'+ADD' 버튼을 통해 필요한 만큼 반복해서 추가합니다.

데이터베이스 연결타입 설정
Springboot 컴포넌트는 주로 비즈니스 로직 개발을 위해 사용하는 컴포넌트입니다. 이를 위해서 데이터베이스와 연동을 해야하고 RDBMS를 연결해서 사용할 수 있습니다. MariaDB, MySQL, PostgreSQL 컴포넌트를 Springboot와 연결할 경우 이 옵션이 활성화 됩니다.

-
초기 베이터베이스 연결 타입 항목은 비활성화 되어 있으며 데이터베이스 컴포넌트를 연결해야 연결타입 항목을 선택할 수 있습니다.
연결 타입은 배치된 원본 또는 대상 데이터베 이스(RDBMS)에 대한 스키마로 사용됩니다.
(Springbatch에 연결된 원본 또는 대상 데이터베이스 컴포넌트가 모두 RDBMS일 경우 원본 및 대상 데이터베이스 모두에 스키마가 적용됩니다.) -
데이터베이스 연결 타입 활성화를 위해 데이터베이스 컴포넌트를 배치합니다.
연결된 데이터베이스와 Springbatch 컴포넌트를 연결합니다. -
데이터베이스 컴포넌트가 연결 후 해당 항목의 활성화 여부를 확인합니다.
-
드롭다운 메뉴를 클릭하여 원하는 스키마를 선택합니다.
선택할 수 있는 옵션에는 아래와 같이 2가지가 있습니다.
- MyBatis -> DB 연결시 MyBatis 스키마를 사용
- JPA -> DB 연결시 JPA 스키마를 사용
기본적으로 Springbatch는 원본 저장소에 있는 데이터를 Springbatch에서 가공후 대상 데이터베이스 저장하기 때문에 항상 원본 및 대상 컴포넌트를 설정해야 합니다.
원본 및 대상 데이터베이스가 연결되지 않으면 Springbatch 컴포넌트는 동작하지 않을 수 있습니다.
Springbatch 컴포넌트는 데이터의 흐름 및 템플릿 코드만 제공합니다.
설계 후 생성되는 코드에 개발자가 직접 필요한 로직을 구현하여야 합니다.