Job

· Spring
회사 업무 중에 데이터 마이그레이션을 해야했는데 약 9만건의 데이터와 13만건의 데이터를 옮기는 작업을 해야했다. Connection는 총 3개고 A Database에서 각각 B, C Database로 마이그레이션을 하는 상황이다. 업무를 하면 작성한 코드를 기준으로 예제를 정리해보겠다. 해당 예제는 Spring Boot, Gradle을 기준으로 하겠다. Spring Batch의 개념 및 설정하는 방법은 얼마전에 작성한 블로그 글을 참고 바란다. 1. application.yml Docker를 통해 mysql를 생성하고 hikariCP와 JPA를 사용해 마이그레이션 하려고 한다. spring: datasource: hikari: a-database: jdbc-url: jdbc:mysql://localho..
· Spring
앞서 Spring Batch를 소개하고 간단한 예제를 작성하고 실행해보았다. Spring Batch는 메타 테이블이 있어야 정상적으로 작동하고 MySQL을 사용할때는 직접 메타 테이블을 생성해야 한다고 했다. 그렇다면 메타 테이블에는 어떤 정보들이 있는지 간단히 알아보자. BATCH_JOB_INSTANCE BATCH_JOB_INSTANCE 테이블은 Job Parameter에 따라 생성되는 테이블이다. Job Parameter는 Spring Batch가 실행될때 외부에서 받을 수 있는 파라미터를 의미한다. 예를 들어, 특정 날짜를 Job Parameter로 넘기면 Spring Batch에서는 해당 날짜 데이터로 조회/가공/입력 등의 작업을 할 수 있다. @Slf4j @RequiredArgsConstruct..
· Spring
스프링 배치(Spring Batch)란? Spring Batch는 엔터프라이즈 시스템의 운영에 있어 대용량 일괄처리의 편의를 위해 설계된 가볍고 포괄적인 배치 프레임워크다. Spring의 특성을 그대로 가져왔기 때문에 DI, AOP, 서비스 추상화 등 Spring 프레임워크의 3대 요소를 모두 사용할 수 있다. 보통 아래와 같은 경우 많이 사용한다. 대용량의 비즈니스 데이터를 복잡한 작업으로 처리해야하는 경우 특정한 시점에 스케쥴러를 통해 자동화된 작업이 필요한 경우 (ex. 푸시알림, 월 별 리포트) 대용량 데이터의 포맷을 변경, 유효성 검사 등의 작업을 트랜잭션 안에서 처리 후 기록해야하는 경우 Spring Batch는 로깅/추적, 트랜잭션 관리, 작업 처리 통계, 작업 재시작, 건너뛰기, 리소스 관..
앞서 디플로이먼트 컨트롤러(Deployment Controller)에 의한 파드(Pod) 실행 예제에서 hello-world 컨테이너는 단발성 형태의 워크로드였다. 이에 적합한 쿠버네티스의 컨트롤러로 잡 컨트롤러(Job Controller)가 있다. kubectl 옵션으로 --restart=OnFailure를 지정하면 잡 컨트롤러의 제어하에 파드가 가동된다. 잡 컨트롤러는 파드가 비정상 종료하면 재시작하며 파드가 정상 종료될 때까지 지정한 횟수만큼 재실행한다. 디플로이먼트 컨트롤러를 만들 때와 마찬가지로 kubectl run 명령어 대신 kubectl create job 명령어를 사용해야 한다. 잡 컨트롤러는 컨테이너의 프로세스 종료 코드 값으로 성공과 실패를 판정하는데 , 그럼 job 2개를 생성해 하..
beekei
'Job' 태그의 글 목록