본문 바로가기

백엔드/Spring Batch6

Multi Thread로 처리하기 주어진 상황 : 사실, 많은 데이터도 아니다. 하지만 더 많다고 가정하고, 이런 데이터를 넣어야 하는 상황이다. 1. 매핑할 데이터가 필요하다! 2. 이를 직접 생성자를 불러서 넣는것보단, field mapping을 하자 : 생성자를 안쓰고 이렇게 설정해준 이유는? 이제, config를 설정하자 3. data를 읽어오는 reader! amountdto를 일겅오며, 그 이름을 지정했다. setmapper는 위에서 설정한대로, 각 라인의 분할은 linetokenizer로 분할하였다. 4. 중간 과정 processor! 사실은 이보다 복잡한 process가 생길 수 있다. (전처리 등등) 5. writer! 이 부분이, 간단한 예시이다. 지금은 outputfile에 저장하는 정도로 마무리 되었지만, 실제로는 .. 2024. 1. 15.
Spring Batch Exception 목표 : 문제 발성시 최대한 빠른 exception을 발생. 이와 같이, job을 진행할때 ( step은 chunk단위가 아닌 tasklet으로 초 간단하게 진행했다) 실제 job의 진행중, step 진행 이전 exception을 발생시켜 그 전에 종료되게끔 유도하였다. 목표 : job의 실행 전후로 job상태를 확인하는 joblistener 생성 현재는 로그만을 발생시키게 만들었으며, 여기서 처리도 가능하다 . File의 data를 읽어서 이를 작성하고 삽입하는 방식은 , 해당 블로그께서 잘 정리해 주셨다. https://velog.io/@foodsmith96/%EC%A0%95%EC%88%98%EC%9B%90-%EC%8A%A4%ED%94%84%EB%A7%81-%EB%B0%B0%EC%B9%98-9-Fla.. 2024. 1. 15.
Spring Batch Test @ExtendWith는 beforeEach,AfterEach등을 사용한다. @ActiveProfiles는 test 연동시 profile로 설정한다. (test용 프로퍼티를 사용하기 위하여) @ContextConfiguration은, 해당 config들의 설정을 load함을 의미한다. Test에서 주로 사용하는 autowired 방식. 허나 .. 주의해야 할 것이 2개 있다. 1. 간단함을 위해 autowired를 쓴것이다. (생성자를 주로 필요로 하지 않기 떄문에 ) 2. teardown은, 모든 test 실행후 plaintext를 지워주는 것인데, 지금 dbms를 test용은 h2로 , 별도로 지정해두었다 . 그렇지 않고 둘다 mysql을 쓴다면, 이러한 방식으로 진행해선 안된다. 그 이후는 간단하다 .. 2024. 1. 15.
Spring Batch 활용 1. 개발 환경 : java, docker, mysql 2. 기술 스택 : Spring boot, Spring boot batch, spring boot data jpa, junit, lombok, gradle (groovy 기반 build) Docker Container를 띄우는 법. 이후, 터미널에 docker-compose up -d로 , docker를 띄운다 (image를 보고 docker가 해당 내용을 띄운다. 이미 결정되어 있는 mysql 을썻다 ) docker가, 컨테이너를 띄웠다! 왜 docker를 사용할까? 만약에 spring batch를 그냥 원래 하던대로 하면, local db에 이를 저장하는 것이다. 이를 남이 쓰려면 인텔리제이 설치 -> mysql workbench 세팅 .. 등등.. 2024. 1. 14.
Spring Batch 아키텍처 0. spring batch 구조를 보자 JOBLAUNCER는 COMPONENT . (JOB을 실행시킨다) JOB은 실제 진행하는 배치 작업을 의미한다. STEP은 배치 작업의 단계 . 1개의 JOB에, 여러가지 STEP 단계를 지닐 수 있다. 테이블을 읽는 ITEM READER -> ITEMPROCESSOR -> ITEMWRITER 등의 구성을 가질 수 있다. 사용자의 코드와 구성인 application -> job등을 포함하는 core -> 외부와 작용하는 infrastrcture layer (step) (3 Layer) 1. JOB (일) 전체 배치 과정을 캡슐화 한 것. (내부 과정과 내부 CLASS등을 가린다) 주로 CLASS 형태로 JOB을 구현하고. -> 내부 INSTACNE나 EXECUTI.. 2024. 1. 14.
배치 프로그램이란? / Spring Batch를 쓰는 이유 주로, 대용량 데이터를, 일괄적으로 처리한다. 데이터를 특정 일자에 재 작업, 혹은 고의 적인 지연시 주로 사용한다. 리소스를, 트래픽이 적은 시간에 처리하는 역할ㄷ ㅡㅇ을 한다. 실제 프로그램 ETL -> DATA WAREHOUSE에 저장 *DATA WAREHOUSE란, 각 주제 별로 DATA를 분류하는 부분 ( 정보처리기사 참고) 머신러닝 모델 ( 동기 중 왕병권형이 모델을 만들때 ) -> DATA 전 처리 , 변환 등을 배치 프로그램을 사용한다. 1. MESSAGE 발송. 많은 USER들에게 전송할때, DB의 USER LIST를 기반으로 변환 , 발송을 진행한다. 2. DATA MIGRATION . 데이터를 APPLICATION에서 APPLICATION 혹은 DB에서 DB로 이동할때 사용 DELET.. 2024. 1. 14.