일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 스프링부트공부
- 스프링부트
- JPA예제
- 플러터 공부
- Kafka
- 스프링공부
- 스프링 공부
- JPA
- querydsl
- Axon framework
- JPA스터디
- nestjs스터디
- 자바공부
- nestjs
- JPA 공부
- 기술공부
- nestjs공부
- 자료구조공부
- 플러터 개발
- 기술면접공부
- 코테준비
- 프로그래머스
- 스프링
- 카프카
- 알고리즘공부
- JPA공부
- Flutter
- K8S
- 코테공부
- DDD
- Today
- Total
목록Develop/[Spring Batch] (16)
DevBoi
스프링 배치에서는 중간에 실패시에 많은 전략을 제공해준다. 1. Skip Skip 옵션은 각각의 단위에서 사용이 가능하다. 1. ItemReader 해당 부분에서 skip을 사용하는 경우를 생각해보자 ItemReader에서 Item을 읽다가 Exception이 발생하는 경우, 해당 아이템을 skip으로 넘기고 다음 아이템을 읽는다. 예를 들어, Item2 를 읽다가 Exception이 발생하면, 넘기고 Item3를 읽는다. 2.ItemProcessor 해당 ItemProcessor에서 Exception이 발생한다면, ItemReader로 돌아간다. ItemReader가 캐싱하고 있는 Input Chunk를 다시 받아와서 처음 부터 읽는다 해당 Exception이 발생한 부분을 만나게되면 skip 하고 다..
1. in Memory Repository 2. 배치 전용 H2 생성 근데, 둘다 그냥 사용하면 안된다. 사용하면 안되는 이유는 아래와 같다. 1. 배치 정보가, 메모리에 쌓이기 때문에 데이터가 영속적이지 않다. 2. 1번과 같은 사유로, 스키마에 대한 모니터링이 필요하다면 불가하다. 3. 배치 작업 진행동안, 메모리를 점유하게 되므로, 주기적으로 비워주는 작업을 해줘야한다. 그냥 앵간하면, 쓰자
Spring Batch의 구조를 살펴봤을떄 Job repostiory라는 것이 있었다. 이 부분에 대한 상세 포스팅을 하겠다. 총 6개의 테이블이 존재한다. BATCH_JOB_INSTANCE BATCH_JOB_EXECUTION BATCH_JOB_EXECUTION_PARAMS BATCH_JOB_EXECUTION_CONTEXT BATCH_STEP_EXECUTION BATCH_STEP_EXECUTION_CONTEXT - 배치 Job의 생성 정보를 담는 테이블이다. - Job의 실행 정보를 담는 테이블이다. Job의 수행여부를 profiling 할 수 있다. - Job 실행시 사용했던 파라미터에 대한 정보를 담아두는 테이블 이다. - 작업중 사용되는 모든 정보가 기록되는 Job의 Context를 저장하기 위한 ..
멱등성 : 연산을 여러번 적용하더라도, 결과가 달라지지 않는 성질 예를 들어서 오늘 날짜의 매출 데이터를 집계하는 배치가 있다고 가정하자 코드에서 만약에 LocalDate.Now가 있다면, 배치는 항상 오늘 날짜를 가져와서 혹은 오늘기준의 특정 날짜를 가져와서 배치를 실행 시킬 것이다. 근데 만약에,,,어제 배치를 다시 돌려달라고 하거나, 어제 배치가 오류가 나서 어제의 배치를 다시 돌려야할때는? 소스 수정 -> 배포 -> 롤백의 과정을 거쳐야한다. 이와 같은 것은 멱등성이 깨졌다고 할수있다. 해당 케이스의 경우에 멱등성을 지킬수 있는 방법은 몇가지가 있다. Spring Batch Job Parameter를 통해, 오늘날짜의 값을 외부에서 주입받아서 실행 시켜주면 된다. 그러면 이와 같은 경우에는 멱등성..
우선 스프링 배치의 구조이다. JobLauncher로 Job을 실행 시키고, 1:N관계로 있는 Job의 step 들이 실행된다. 또한 각 step에 있는 ItemReader, ItemProcessor,ItemWriter 들이 실행이 된다. 하나씩 더 살펴보도록하자 1) JobLauncher Job을실행 시키는 역할을 한다. SpringBatch가 Job의 이름을 받아서 실행 시켜준다. 2) Job JobInstance : 논리적인 Job실행 JobExecution : 한번 시도되는 Job 실행 JobParameter : Job들을 구분하는 파라미터, 오늘의 Job과 내일의 Job 이 다른 것에 대한 구분을 짓기 위함 3) Step Batch Job을 구성하는 형태이다. 하나의 스탭은 reader,writ..
Spring Batch - 스프링 배치는 백엔드의 배치처리 기능을 구현하는데 사용하는 프레임워크이다. 배치는 스프링 배치 설정 요소들을 간편화시켜 빠르게 설정하는데 도움을 준다. Spring Batch 장점 1) 대용량 데이터 처리에 최적화 되어 고성능을 발휘한다. 2) 효과적인 로깅, 통계처리 , 트랜잭션 관리 등 재사용 가능한 필수 기능을 지원한다. 3) 수동으로처리하지 않도록 자동화 되어있다. 4) 예외사항과 비정상 동작에 대한 방어 기능 존재 5) 스프링의 서브 프레임워크이기 떄문에, 스프링의 대표적인 기술들이 사용가능하다(Di, AOP) 6) 실행 이력에 대한 저장이 가능하고, 공유가 가능하다 Spring Batch 단점 -스케줄 기능을 제공하지 않아서 Quarz 나 jenkins와 같이사용한다.