JaeWon's Devlog
반응형
article thumbnail
[Spring Batch 정리하기] 6. Listener
BackEnd/Spring Batch 2024. 8. 6. 09:01

1. Listener(리스너)1-1) 기본 개념- 배치 흐름 중에 Job, Step, Chunk 단계의 실행 전후에 발생하는 이벤트- 각 단계별로 로그기록을 남기거나 소요된 시간을 계산하거나 실행상태 정보들을 참조 및 조회 가능- 사용하기 위해서는 Listener 를 등록해야 하며 등록은 각 API 설정에서 단계별로 지정 가능1-2) 종류Job- JobExecutionListner -> Job 실행 전후Step- StepExecutionListener -> Step 실행 전후- ChunkListener -> Chunk 실행 전후(Tasklet 실행 전후), 오류 시점- ItemReaderListener -> ItemReader 실행 전후, 오류 시점(But, Item 이 Null 인 경우 호출 안 됨)-..

article thumbnail
[Spring Batch 정리하기] 5. 청크(Chunk) 프로세스
BackEnd/Spring Batch 2024. 8. 1. 08:57

1. Chunk(청크)1-1) 기본 개념- Chunk 란 여러 개의 Item 을 묶은 하나의 덩어리(블록)- 한번에 하나씩 아이템을 입력 받아 Chunk 단위의 덩어리로 만들고 Chunk 단위로 트랜잭션을 처리함 -> Chunk 단위로 Commit 과 Rollback 이 진행- 일반적으로 대용량 데이터를 한번에 처리하는 것이 아닌 청크 단위로 쪼개어서 더 이상 처리할 데이터가 없을 때까지 반복- Reader 와 Processor 에서는 1번의 수행이 이루어지고, Writer 에서는 Chunk 단위로 수행for (int i =0; i- Chunk VS ChunkChunk- ItemReader 로 읽은 하나의 아이템을 CHunk 에서 정한 개수만큼 반복해서 저장Chunk- ItemReader 로 부터 전달받..

article thumbnail
[Spring Batch 정리하기] 4. 실행하기
BackEnd/Spring Batch 2024. 7. 29. 09:02

1. JobLauncherpublic interface JobLauncher { public JobExecution run(Job job, JobParameters jobParameters) throws JobExecutionAlreadyRunningException, JobRestartException, JobInstanceAlreadyCompleteException, JobParametersInvalidException;} 1-1) 기본 개념- 배치 Job 을 실행시키는 역할- Job 과 JobParameters 를 인자로 받아 배치를 수행하고 끝나면 JobExecution 을 Return- Application 이 구동될 때 JobLauncher Bean 이 자동 생성2. JobBuilderFa..

article thumbnail
[Spring Batch 정리하기] 3. 도메인
BackEnd/Spring Batch 2024. 7. 25. 09:08

1. Jobpublic interface Job { String getName(); boolean isRestartable(); void execute(JobExecution execution); @Nullable JobParametersIncrementer getJobParametersIncrementer(); JobParametersValidator getJobParametersValidator();}1-1) 기본 개념- 배치 계층 구조에서 최상위의 개념으로 전체 배치 프로세스를 캡슐화한 Entity - Job Configuration 을 통해 생성되는 객체 단위로 배치 작업을 어떻게 구성하고 실행할 것인지 명세해 놓은 객체- 여러 Step 을 포함하고 있는 컨테이너로 반드시 1개 이상의 Step으로..

article thumbnail
[Spring Batch 정리하기] 2. DB Schema
BackEnd/Spring Batch 2024. 7. 22. 09:00

1. Meta Schema- Spring Batch 의 실행 및 관리를 위한 목적으로 여러 도메인(Job, Step, JobParameters 등)들에 대한 정보를 저장, 업데이트, 조회 등의 작업을 할 수 있는 스키마 제공- 과거 및 현재의 Batch 실행에 대한 정보(성공, 실패 여부)를 관리함으로서 배치 운영 및 장애와 관련된 대처 가능- DB 와 연동할 경우 필수적으로 메타 테이블이 생성되어야 함(커스텀마이징을 통해 테이블 없이 수행은 가능)- 위 이미지와 같이 6개의 Meta Table 과 3개의 Sequence Table 이 존재2. Meta Schema DB 생성- spring-batch-core 라이브러리 내부에 schema-*.sql 파일의 데이터베이스 종류별 메타 데이터 스키마가 존재수..

article thumbnail
[Spring] Spring Batch 장애 회고(Feat. ChunkListner 사용하기)
BackEnd/Spring Batch 2024. 7. 12. 09:00

작년 하반기 회사에서 발생한 Spring Batch 오류로 인해 긴급 장애 대응이 있었습니다.해당 글에서는 발생한 원인과 조치한 방법에 대해 기록하고자 합니다.1. 장애 발생Spring Batch 특정 Job이 수행 중 내부 로직으로 인해 reader() -> processor() -> writer() 간에 무한으로 반복 수행이 발생하였고, Spring Batch 내부 로직에 따른 BATCH_STEP_EXECUTION 테이블 안에 Select/Update 문이 무한정 발생하였습니다.- 이로 인해 DML 쿼리가 무한정으로 쌓이면서 디스크 용량 과부하가 발생하였고, 긴급 디스크 증설이 진행되었습니다.2. 소스코드- 발생한 Job 은 Chunk 지향 기반 처리로 수행되고, reader() -> processo..

article thumbnail
[Spring] Spring Batch 사용해보기(2) - step(skip, retry)
BackEnd/Spring Batch 2022. 9. 14. 15:41

이전 글에서는 간단하게 Spirng Batch 환경을 구성하고 동작하는 것을 확인해보았습니다.이번 글에서는 Spring Batch 의 기능 중 Step 에 대해 활용하여 사용해보려고 합니다.0. 다양한 Step 설정- 해당 테스트를 위해 간단하게 controller 를 선언하여 배치를 수행하도록 추가하겠습니다.@Controller@Slf4j@RequiredArgsConstructorpublic class TestController { private final Job StepTestJob; private final JobLauncher jobLauncher; @SneakyThrows @GetMapping("/test/{number}") public void test(@PathVa..

article thumbnail
[Spring] Spring Batch 사용해보기(1) - 환경구성, 기본구현
BackEnd/Spring Batch 2022. 9. 8. 14:45

최근에 Spring Batch 에 대해 정리를 하였는데, 이를 간단하게 사용하는 것도 정리하고자 합니다. [Spring] Spring Batch 정리회사에서 업무를 하나씩 배우고 맡게 되면서, Spring Batch 를 사용하고 있는 배치서버를 맡게 되었습니다. 이전 스케줄링 관련 개발을 할 때는 Crontab, Quartz 등을 사용하였는데, 여기서는 Spring Batchdev-jwblog.tistory.com1. Spring Batch 프로젝트 구성- 개발 환경은 아래와 같습니다.IDE : Intelli J 2022.02SpringBoot : 2.7.3java : JDK 11DB : MySQL1-1. 프로젝트 생성- 인텔리제이를 통해서 프로젝트를 생성합니다.- 프로젝트에서 필요한 Dependency..

article thumbnail
[Spring] Spring Batch 정리
BackEnd/Spring Batch 2022. 8. 26. 13:26

회사에서 업무를 하나씩 배우고 맡게 되면서, Spring Batch 를 사용하고 있는 배치서버를 맡게 되었습니다.이전 스케줄링 관련 개발을 할 때는 Crontab, Quartz 등을 사용하였는데, 여기서는 Spring Batch 를 사용하고 있었고, 해당 내용을 이해하는데 러닝커브도 있어 정리하고자 합니다.추후에는 Spring Batch 사용 예제에 대해서도 포스팅할 예정입니다.1. Spring Batch- Spring Batch 는 일괄 처리를 위한 오픈 소스 프레임워크이다.Batch Processing(일괄 처리)사용자의 개입 없이 실행을 스케줄링할 수 있는 작업(job)을 의미하며. 컴퓨터 프로그램 흐름에 따라 순차적으로 자료를 처리하는 방식이다. 배치는 예약된 시간에 자동으로 실행될 수 있으며 컴..

반응형