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 Batch 정리하기] 1. Spring Batch 개요
BackEnd/Spring Batch 2024. 7. 17. 10:14

이전 글에서 스프링 배치를 처음 접하고 간단하게 정리한 적이 있습니다. [Spring] Spring Batch 정리회사에서 업무를 하나씩 배우고 맡게 되면서, Spring Batch 를 사용하고 있는 배치서버를 맡게 되었습니다.이전 스케줄링 관련 개발을 할 때는 Crontab, Quartz 등을 사용하였는데, 여기서는 Spring Batchdev-jwblog.tistory.com최근에 스프링배치 장애해결을 위해 강의를 들었는데 이를 간략하게 주로 사용한 부분 위주로 정리하고자 합니다.(이전 글들과 중복된 내용이 있을 수 있습니다.) [Spring] Spring Batch 장애 회고(Feat. ChunkListner 사용하기)작년 하반기 회사에서 발생한 Spring Batch 오류로 인해 긴급 장애 대응이..

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 JobParameter 활용 하기(With. Custom 하기, 공통 관리하기)
BackEnd/Spring Batch 2023. 10. 27. 15:34

최근에 회사에서 스프링배치를 사용하는 배치업무를 담당하고 있습니다.간략하게 JobParameter를 수정할 내용이 있었는데 이를 추가할 때마다 모든 배치 소스를 수정해야 하는 불편함을 알게 되었습니다.(아래 적용하려다가 괜히 일이 커지긴 했다...) 해당 글에서는 이 JobParameter 를 조금 더 활용하는 법과 별도의 클래스(Class)로 만들어 공통으로 관리하고 빈(Bean)으로 등록해서 사용하는 것을 포스팅해보려고 합니다. 해당 글에서 사용된 소스는 Git 에서 확인하실 수 있습니다.1. 기존 방식- 기존에서는 JobParameter 를 사용하기 위해 아래와 같은 형태로 작성하였습니다.1-1. 샘플코드@Slf4j@Configuration@RequiredArgsConstructorpublic cl..

article thumbnail
[MySQL] Clustered Index와 Secondary Index 정리
BackEnd/DataBase 2023. 10. 4. 20:37

1. 인덱스(Index) 1-1. 인덱스란? - 데이터를 좀 더 빠르게 찾을 수 있도록 해주는 도구 조금 더 자세히 설명하자면, Disk에서 발생하는 I/O 시간은 Main Memory 에서 발생하는 I/O에 비해 매우 크다. 인덱스를 설정함으로서 DB의 데이터를 검색시 Diks 의 I/O가 빈번히 일어나지 않도록 하는 것이다. - 속성 값을 기준으로 이미 정렬되어 있으며, 그에 해당하는 레코드 주소가 있어 빠르게 데이터 접근이 가능 - 인덱스 검색을 위한 조건은 WHERE 절에 인덱스로 설정된 컬럼명이 나와야 함 1-2. 장/단점 장점 - 검색 속도가 빨라진다. -> (무조건 그런 것은 아니다.) : 인덱싱보다 전체 테이블 검색(Full Scan)이 더 나은 경우 - 적은 처리량으로 결과를 얻을 수 있..

article thumbnail
[JAVA] JAXB(Marshalling, UnMarshalling) 사용하기(Feat. XML 파싱)
BackEnd/Java 2023. 8. 16. 13:37

1. JAXB(Java Architecture for XML Binding) - JAXB는 Java Object 를 XML 로 직렬화 해주거나, XML 을 Java Object 로 역직렬화 해주는 Java API 입니다. 마샬링(Marshalling) : Java Object -> XML 언마샬링(UnMarshalling) : XML -> Java Object - 기본적으로 JDK6 ~ 9 버전에는 JAXB 가 내장되어 있어 라이브러리를 따로 추가할 필요가 없습니다.(JDK 11 부터는 Dependency 추가가 필요합니다) - 최근 Object 는 관련해서는 대부분 JSON(JavaScript Object Notation)을 많이 사용하지만, XML 도 종종 사용되고 있습니다. - JSON 을 다룰 때..

반응형