Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- ajax
- HTTP
- Java
- spring
- javascript
- Linux
- cache
- r
- git
- libuv
- Lombok
- mybatis
- nodejs
- VCS
- AWS
- Static
- Heap
- reactor
- github
- 네트워크
- Elk
- reactive
- socket
- mongodb
- html
- network
- effective
- 데이터통신
- NoSQL
- redis
Archives
- Today
- Total
빨간색코딩
[스프링배치 완벽가이드] 1장 배치와 스프링 본문
- 참조문서
초심자의 눈으로 이해한 내용을 정리해보았다. 책에 있는 내용을 기반으로 썼지만, 책에 없는 내용도 조금씩 적어보았다. 책은 꼭 사서 보시길 바랍니다..
1. 배치 처리는 언제?
- 배치 처리는 상호 작용이나 중단없이 유한한 양의 데이터를 일괄로 처리하는 것
- 실시간 처리가 불필요하거나 최선이 아니고, 주기적으로 반복해야할 때
- 월별 거래명세서
- 자원의 효율적 사용
- 데이터과학분야
2. 배치 역사
- 과거에는 메인프레임 서버에서 코볼로 개별 배치들을 작업하고 수행
- 2007년 Accenture 의 도메인 지식 + Pivotal 의 스프링 기술을 결합하여 오픈소스 배치를 개발
- 2008년 3월 : 스프링배치 1.0 출시
- 2009년 4월 : 스프링배치 2.0
- jdk 1.5
- 2014년 : 스프링배치 3.0
- JSR 352 구현
- 2017년 : 스프링배치 4.0
- java config
3. 배치 어플리케이션을 개발할 때의 특성
- 사용성 : 오류 처리 및 유지보수가 쉬운가?
- job이 실패했을 때, 디버깅에 오랜시간을 쏟진 않을지?
- 테스트 용이성 등
- 확장성 : 배치 어플리케이션은 왠만한 웹어플리케이션보다 대용량을 다룬다.
- 가용성 : 수행되어야만 하는 시간에 바로 수행이 가능한지?, 다른시스템에 영향은 없는지?
4. 자바(or 스프링) 배치의 이점
- 유지보수성
- 배치는 다른 어플리케이션의 코드들보다 수명이 길다.
- 밖으로 들어나지 않기때문
- 테스트 용이성, 풍부한 API
- 배치는 다른 어플리케이션의 코드들보다 수명이 길다.
- 유연성
- JVM 을 이용한 이식성 (기존의 코볼, C++ 등과 비교했을 때)
- 코드 공유능력 (POJO 재활용 등)
- 확장성
- 과거의 메인프레임 방식이나, 커스텀하게 처리하던 방식은 병렬 처리를 하려면 고려할게 많음. 확장성과 안정성이 떨어짐
- 자바(or스프링) 배치는 단일 처리, 병렬 처리 등이 모두 가능함
- 개발인력
- 자바, 스프링 프레임워크를 기반
- 커뮤니티의 강력한 지원
- 비용
- 오픈소스
5. 배치 프레임워크 중 스프링배치를 쓰면 뭐가 좋나?
- ETL(추출=extract - 변환=transform - 적재=load) 패턴에 적합
- 청크 기반 처리
- 다양한 확장 기능
- 데이터 마이그레이션
- 보통 1회성으로 대충 만들 가능성이 높으나, 스프링 배치를 사용한다면, 풍부한 지원(커밋수, 롤백 등)
- 병렬 처리
- 워크로드 조정
- Spring Cloud Data Flow 등을 통해 GUI로 태스크 조정 등
6. 스프링 배치의 3가지 레이어
- 어플리케이션 : 개발자가 작성한 비즈니스 로직
- 코어 : 배치 도메인을 정의하는 모든 부분
- Job, Step 등
- 인프라스트럭처 : 각종 reader, writer, 템플릿, 헬퍼
- IO다루기
- job 실패 시 정책
- cf) 배치 프레임워크 내에는 스케줄링 기능이 없다.
7. 스프링 배치 job 개요
- job은 중단이나 상호작용없이 처음부터 끝까지 실행되는 처리
- job은 여러개의 step 으로 구성
- 각 step 은 입력과 출력이 있음 (=chunk processing, 하나의 트랜잭션)
- ItemReader : 입력
- ItemProcessor : Optional
- ItemWriter : 출력
- step이 실패했을 때, 반복실행할 수도 있고 못할수도 있다.
- job의 flow는 조건부일 수 있음
- ex) 총 점이 100점이 넘었을 경우에만 특정 step 실행
- JobLauncher 가 job을 실행핸다
- 현재 실행중인 job의 메타정보들은 JobRepository 에 저장된다.
- 일반적으로 RDB 에 기록
- job의 병렬화
- 병렬 chunk/step 처리
- 원격 chunk 처리
- 파티셔닝
'Spring' 카테고리의 다른 글
Spring Data JPA 살펴보기 (JpaRepository, Bean으로 만들어지는 원리, 메소명으로 쿼리 만들기) (0) | 2022.01.05 |
---|---|
[스프링배치 완벽가이드] 2장 스프링 배치 (0) | 2021.08.18 |
Spring Event와 SSE 로 리액티브하게 접근하기 (EventListener, Server-Sent Events, 비동기 컨트롤러, RxJava로 동일하게 재구현) (1) | 2020.12.31 |
Reactive와 Spring 4 (C10K, 리액티브 선언문, 리액티브 스프링 등장 전) (0) | 2020.12.30 |
spring webflux와 armeria 살펴보기 (Mono, Flux, gRPC, Thrift) (0) | 2020.06.19 |
Comments