
목차
1. 배치 프로그램 목표
이 배치의 최고 목표는 1분마다 돌아가는 것이다!
그래서 처음부터 다음과 같은 점을 고려했다.
- 이전 실행이 끝나지 않았을 경우
- 외부 API 호출 자체가 실패했을 경우
- 동일 데이터가 중복 반영될 경우
- 처리량이 늘어날 경우
- 실시간으로 해당 배치가 잘 돌고있는지 확인 가능한지
일단 간략하게 이정도를 목표로 배치 프로그램을 만들어봐야겠다.
2. 배치 프로그램 막간 공부 정리
친구랑 배치 프로그램에 대해 대화를 나누면서 step, reader, processor, writer에 관해서 이야기를 들었는데
너무너무 알기 쉽게 설명해준 친구 쵝오
그래두 조금 더 공부를 해보자면,,
배치 프로그램은 사용자의 요청을 받아서 바로 응답을 주는 프로그램이 아닌
정해진 시점에, 정해진 작업을, 정해진 순서대로 처리하는 역할을 한다.
지금까지 반응형 프로그램만 유지보수 하다보니 이런 배치형 프로그램은 처음 만들게 되어서 약가안 무섭다ㅜㅜㅎ 운영에서도 잘 돌아갈 수 있을 것인지..!
보통 배치 프로그램은
- 주기적으로 정산 데이터를 만들거나
- 주기적으로 외부 시스템의 데이터를 가져오거나 (이번 나의 경우!)
- 누적된 데이터를 한 번에 정리하는 경우
와 같이 사람이 직접 버튼을 누르지 않아도 돌아가야 하는 일들을 한다
보통 크론이나 스케줄러에 의해서 실행이 되고,
실행이 되면 서버 어딘가에서 조용히 일을 하다가 자기 할 일이 끝나면 그냥 종료된다.
그래서 배치는 반응 속도보다는 중간에 실패하지는 않았는지, 실패했다면 어디까지 처리했는지가 더 중요한 것 같다.
친구가 말해준 step, reader, processor, writer도 배치 프로그램에서 빼놓을 수가 없는데
배치 프로그램은 보통
- 데이터를 읽기
- 필요한 형태로 가공
- 결과를 저장
이렇게 세 단계를 반복하는 구조를 가진다.
내가 진행할 Spring Batch에서는 이 흐름을
- Reader (읽기)
- Processor (가공)
- Writer (쓰기)
로 나눠서 표현하고 이 묶음을 하나로 Step이라고 하는 것 같다.
그리고 이 여러 Step을 묶어서 하나의 배치 작업 Job으로 구성하게 된다.
배치 프로그램에 관해서 대략적으로 이해를 했으니! 이제 배치용 계획서를 작성해봐야겠다.
참고사이트
친구개발자님, 챗지피티 사랑합니당
'공부하면서 > spring boot' 카테고리의 다른 글
| [Spring Boot / Batch] 배치 연습 마지막..! 그리고 폐쇄망 가만안둬 (0) | 2026.01.19 |
|---|---|
| [Spring Boot / Batch] 2년만에 다시 봄이 왔다. Spring Boot 로 배치 프로그램 만들기 (1) | 2026.01.16 |
| [Spring Boot / JPA] Gradle plugin 에러 (0) | 2024.02.09 |
| [Spring Boot / JPA] DTO / entity 형변환 ModelMapper (0) | 2024.02.08 |
| [Spring Boot/JPA] JPA 책 추천, intelliJ, vscode로 프로젝트 만들기 (1) | 2024.02.06 |