ahea team spring batch

Post on 12-Apr-2017

142 Views

Category:

Software

8 Downloads

Preview:

Click to see full reader

TRANSCRIPT

SPRING BATCHAHEA STUDY

LEGACY BATCH PROBLEM

[A] 개발자의 배치 개발 일상 .

배치 통계를 위한 변수를 할당하는 코드 추가

트래픽 증가

배치 개발 개발중 에러발생 - 로그추가

[A] 씨의 일을 인수인계 받은 [B] 개발자

로직이 어디있지 ?

새벽에 도는 배치가 실패

LEGACY BATCH PROBLEM

기존 배치 개발의 문제점 1. 읽 어 오 는 데 이 터 형 태 의 변 화 에 대 응 하 기 힘 들 다 . (CSV -> DB)2. DB 에 한 꺼 번 에 COMMIT 되 는 건 수 가 너 무 많 았 다 .( 트 래 픽 증 가 )3. 배 치 통 계 를 위 한 변 수 를 할 당 하 고 로 깅 하 는 코 드 추 가 .4. 유 지 보 수 가 힘 들 다 . ( 비 지 니 스 로 직 어 디 있 는 거 지 ?)5. 실패 했을때 후 처리가 부족했다 .(B 씨 새벽에 배치가 실패 )

LEGACY BATCH PROBLEM

ABOUT SPRING BATCH

SPRING BATCH != QUARTZ

Simple

ABOUT SPRING BATCH

BATCH 란

Batch 는 일괄 처리를 뜻하는 용어 . Spring Framework 사용 편의성 기반 .스프링 배치는 스케줄러를 포함하지 않고 스케줄러 와 함께 작동 . 

SPRING BATCH HISTORY

Spring batch 는 컨설팅 회사인 엑센츄어(Accenture) 의 실무 경험을 바탕으로 Spring IO 팀과 함께 개발을 했으며 , 이미 많은 회사에서 안정적으로 사용 중

Spring Batch 는 로깅 / 추적 , 트랜잭션 관리 , 작업 처리 통계 , 작업 재시작 , 건너 뛰기 및 자원 관리를 포함

ABOUT SPRING BATCH

SPRING BATCH DOMAIN

JOB

JOB LAUNCHERSPRING BATCH DOMAIN

JobInstance = job + jobParametersJobExecution 은 한번 instance 가 시도 되는 job 개념 .

SPRING BATCH DOMAIN

SPRING BATCH DOMAIN

SPRING BATCH - TABLE

BATCH TABLE

SPRING BATCH - TABLE

TABLE - SAMPLE DATA

SPRING BATCH - TABLE

SPRING BATCH - TABLE

SPRING BATCH - DEMO

BATCH - SAMPLE DATA

SPRING BATCH - DEMO

@ENABLEBATCHPROCESSING

- jobBuilderFactory 와 stepBuilderFactory 빈을 제공

- 생성 되는 TransactionManager 는 DataSourceTransactionManager 사용

SPRING BATCH - DEMO

firstName 과 lastname 을 대문자로 만들어주는 PersionItemProcessor

Item 처리할 데이터의 가장 작은 구성 요소

SPRING BATCH - DEMO

PROCESSOR - BUSSINESS LOGIC

SPRING BATCH - CHUNK

CHUNK 란Chunk oriented processing refers to reading the data one at a time, and creating 'chunks' that will be written out, within a transaction boundary.

One item is read in from an ItemReader, handed to an ItemProcessor, and aggregated.

Once the number of items read equals the commit interval, the entire chunk is written out via the ItemWriter, and then the transaction is committed.

하나의 TRANSACTION 안에서 처리할 ITEM 의 덩어리 .

CHUNK 의 역할

Reader - Item 하나씩Writer - chunk 에 설정한 개수만큼

SPRING BATCH - CHUNK

CHUNK 개수에 따른 속도 변화

chunk 10 일때수행시간 : 1 초

chunk 100 일때수행시간 : 0.1 초

SPRING BATCH - CHUNK

CHUNK 와 TRANSACTION

SPRING BATCH - CHUNK

CHUNK 의 동작방식 정리if> chunk 의 commit interval = 2

SPRING BATCH - CHUNK

READER, WRITER 설정SPRING BATCH - READER, WRITER

JDBCPAGING READER

paging 을 사용해서 대량의 데이터를 짤라 읽는 방식

SPRING BATCH - READER, WRITER

pageSize 를 10 으로 set 후 sortKey 에 따라서 쿼리를 질의 .

RepeatTemplate 에 chunk 만큼 저장 후 Insert

if> chunk 의 commit interval = 5

SPRING BATCH - READER, WRITER

이미 가져온 10 개중 5 개가 남아서 read 로 읽어오고 chunk 에 쌓고 5 개 되면 insert.

sortKey 에 따라서 order 를 걸고 그 다음부터 쿼리 질의 .

SPRING BATCH - READER, WRITER

1.Reader 에 pageSize 만큼 쿼리 해온다 .2.reader 가 한 건씩 처리 .3.chunk 에 세팅한 만큼 쌓이면 write

JDBCPAGING READER - 정리SPRING BATCH - READER, WRITER

SPRING BATCH LISTENER

JOBEXECUTIONLISTENER

SPRING BATCH DOMAIN

정리

SPRING BATCH SOLUTION

BATCH 를 통해 해결 .

1. 읽 어 오 는 데 이 터 형 태 의 변 화 에 대 응 하 기 힘 들 다 . (CSV -> DB)-> ITEMREADER 라는 인터페이스를 통해 비교적 쉬운 방식으로 접근 가능

2. DB 에 한 꺼 번 에 COMMIT 되 는 건 수 가 너 무 많 았 다 .-> CHUNK ORIENTED PROCESSING 으로 COMMIT 되는 양을 조절 할 수 있 다 .

3. 배 치 통 계 를 위 한 변 수 를 할 당 하 고 로 깅 하 는 코 드 추 가 .-> BATCH TABLE 에 통 계 에 필 요 한 값 들 이 알 아 서 저 장 된 다 .

4. 유 지 보 수 가 힘 들 다 . ( 비 지 니 스 로 직 어 디 있 는 거 지 ?)-> PRECESS, READ, WRITER 를 보면 어떻게 되있는지 쉽게 찾을 수 있다 .

5. 실 패 했 을 때 후 처 리 가 부 족 했 다 .-> EXECUTIONCONTEXT 라는 저장 공간에 저장된 정보를 활용해서 처리 .

ETC

추가 - 대용량 배치 처리 병렬 수행

1. 멀티쓰레드 (Multi-threaded Step)2. Parallel Steps.3. 파티셔닝 (Partitioning)

SPRING BATCH SOLUTION

AHEA STUDY 를 준비하면서… ..

>https://docs.spring.io/spring/docs/current/spring-framework-reference/html/scheduling.html

스프링 배치와 전자전부 프레임워크 : http://open.egovframe.go.kr/nforges/information/filearchive/6179/.do

스프링 배치 이점 : https://groups.google.com/forum/#!topic/ksug/9FMlJaE-zKU

스프링 배치 vs DB 프로시저 : https://groups.google.com/forum/#!topic/ksug/vznlOZarb3s

대규모 배치시스템 성공적인 구축 전략 : https://www.kodb.or.kr/info/info_04_view.html?field=&keyword=&type=techreport&page=135&dbnum=128484&mode=detail&type=techreport

top related