인프런 커뮤니티 질문&답변
batch_db 생성 관련 문의 드립니다.
작성
·
29
1
안녕하세요
우선 강의 잘 들었습니다~
batch 를 실무에 적용해보고자 하는데요
spring batch의 경우 batch_db에
batch_job 관련 테이블이 자동 실행되는 걸로 보이는데요
실무에서는 dba를 통해 테이블을 생성해야되는데요
batch_job 관련 스키마를 모두 반드시 생성을 해야 되는 건가요??
답변 1
0
안녕하세요 solarscw85님! JSCODE 시니 입니다.
강의 잘 들어주시고, 실무 적용을 위한 중요한 질문까지 남겨주셔서 정말 감사합니다.
결론부터 말씀드리면, Spring Batch가 제공하는 메타 데이터 테이블(스키마)들은 실무 환경에서도 반드시 생성해주셔야 합니다!
Spring Batch가 단순히 코드를 반복 실행하는 것을 넘어, 강력한 기능을 발휘하는 핵심이 바로 이 테이블들에 있기 때문인데요~ Spring Batch는 이 테이블들을 통해 다음과 같은 정보들을 관리하고 있습니다.
실행 이력 관리: 배치가 언제 시작해서 언제 끝났는지, 성공했는지 실패했는지 기록
재시작(Restart) 지원: 배치가 실패했을 때, 어디서부터 다시 시작해야 하는지 판단 (이게 배치의 핵심 기능입니다! :))
중복 실행 방지: 같은 파라미터로 중복해서 실행되는 것을 막음
만약 이 테이블들이 없다면, Spring Batch는 배치의 상태를 기억할 수 없어(In-memory 방식 제외) 실무에서 요구하는 안정적인 배치 운영이 불가능해집니다..!
말씀하신 대로 실무에서는 애플리케이션이 자동으로 테이블을 생성(ddl-auto 등)하도록 두는 것은 권장되지 않습니다. 그래서 보통 다음과 같은 절차로 진행합니다.
SQL 스크립트 확보: Spring Batch 라이브러리 내부에는 이미 각 DB 벤더(Oracle, MySQL, PostgreSQL 등)에 맞는 테이블 생성 SQL 파일이 포함되어 있습니다. (운영 환경에 맞는 쿼리로 선택하시면 됩니다!)
파일명 예시:
schema-mysql.sql,schema-oracle.sqlIDE에서 파일 검색(Ctrl+Shift+N 등)으로 해당 파일을 찾거나, Spring Batch 공식 GitHub에서도 확인 가능합니다.
DBA 요청: 위에서 찾은 SQL 스크립트 내용을 DBA분께 전달리고, 배치 프레임워크 구동을 위한 필수 메타 테이블 생성을 요청 하시면 될 것 같습니다!
설정 변경: 그리고 애플리케이션 설정(
application.yml)에서는 자동 생성 옵션을 끄고 배포하시면 됩니다.spring: batch: jdbc: initialize-schema: never # 혹은 validate
실무 적용을 앞두고 계신 만큼, 이 메타 테이블들이 배치의 '블랙박스' 역할을 해준다고 생각하시면 이해가 편하실 거예요.
도움이 되셨길 바라며, 실무에서도 성공적으로 적용하시길 응원하겠습니다! 또 궁금한 점 있으시면 언제든 질문 남겨주세요. :)




