JaeWon's Devlog
반응형
article thumbnail
[Spring Batch 정리하기] 6. Listener
BackEnd/Spring Batch 2024. 8. 6. 09:01

1. Listener(리스너)1-1) 기본 개념- 배치 흐름 중에 Job, Step, Chunk 단계의 실행 전후에 발생하는 이벤트- 각 단계별로 로그기록을 남기거나 소요된 시간을 계산하거나 실행상태 정보들을 참조 및 조회 가능- 사용하기 위해서는 Listener 를 등록해야 하며 등록은 각 API 설정에서 단계별로 지정 가능1-2) 종류Job- JobExecutionListner -> Job 실행 전후Step- StepExecutionListener -> Step 실행 전후- ChunkListener -> Chunk 실행 전후(Tasklet 실행 전후), 오류 시점- ItemReaderListener -> ItemReader 실행 전후, 오류 시점(But, Item 이 Null 인 경우 호출 안 됨)-..

article thumbnail
[Spring Batch 정리하기] 5. 청크(Chunk) 프로세스
BackEnd/Spring Batch 2024. 8. 1. 08:57

1. Chunk(청크)1-1) 기본 개념- Chunk 란 여러 개의 Item 을 묶은 하나의 덩어리(블록)- 한번에 하나씩 아이템을 입력 받아 Chunk 단위의 덩어리로 만들고 Chunk 단위로 트랜잭션을 처리함 -> Chunk 단위로 Commit 과 Rollback 이 진행- 일반적으로 대용량 데이터를 한번에 처리하는 것이 아닌 청크 단위로 쪼개어서 더 이상 처리할 데이터가 없을 때까지 반복- Reader 와 Processor 에서는 1번의 수행이 이루어지고, Writer 에서는 Chunk 단위로 수행for (int i =0; i- Chunk VS ChunkChunk- ItemReader 로 읽은 하나의 아이템을 CHunk 에서 정한 개수만큼 반복해서 저장Chunk- ItemReader 로 부터 전달받..

article thumbnail
[Spring Batch 정리하기] 4. 실행하기
BackEnd/Spring Batch 2024. 7. 29. 09:02

1. JobLauncherpublic interface JobLauncher { public JobExecution run(Job job, JobParameters jobParameters) throws JobExecutionAlreadyRunningException, JobRestartException, JobInstanceAlreadyCompleteException, JobParametersInvalidException;} 1-1) 기본 개념- 배치 Job 을 실행시키는 역할- Job 과 JobParameters 를 인자로 받아 배치를 수행하고 끝나면 JobExecution 을 Return- Application 이 구동될 때 JobLauncher Bean 이 자동 생성2. JobBuilderFa..

article thumbnail
[Spring Batch 정리하기] 3. 도메인
BackEnd/Spring Batch 2024. 7. 25. 09:08

1. Jobpublic interface Job { String getName(); boolean isRestartable(); void execute(JobExecution execution); @Nullable JobParametersIncrementer getJobParametersIncrementer(); JobParametersValidator getJobParametersValidator();}1-1) 기본 개념- 배치 계층 구조에서 최상위의 개념으로 전체 배치 프로세스를 캡슐화한 Entity - Job Configuration 을 통해 생성되는 객체 단위로 배치 작업을 어떻게 구성하고 실행할 것인지 명세해 놓은 객체- 여러 Step 을 포함하고 있는 컨테이너로 반드시 1개 이상의 Step으로..

article thumbnail
[Spring Batch 정리하기] 2. DB Schema
BackEnd/Spring Batch 2024. 7. 22. 09:00

1. Meta Schema- Spring Batch 의 실행 및 관리를 위한 목적으로 여러 도메인(Job, Step, JobParameters 등)들에 대한 정보를 저장, 업데이트, 조회 등의 작업을 할 수 있는 스키마 제공- 과거 및 현재의 Batch 실행에 대한 정보(성공, 실패 여부)를 관리함으로서 배치 운영 및 장애와 관련된 대처 가능- DB 와 연동할 경우 필수적으로 메타 테이블이 생성되어야 함(커스텀마이징을 통해 테이블 없이 수행은 가능)- 위 이미지와 같이 6개의 Meta Table 과 3개의 Sequence Table 이 존재2. Meta Schema DB 생성- spring-batch-core 라이브러리 내부에 schema-*.sql 파일의 데이터베이스 종류별 메타 데이터 스키마가 존재수..

article thumbnail
[Spring Batch 정리하기] 1. Spring Batch 개요
BackEnd/Spring Batch 2024. 7. 17. 10:14

이전 글에서 스프링 배치를 처음 접하고 간단하게 정리한 적이 있습니다. [Spring] Spring Batch 정리회사에서 업무를 하나씩 배우고 맡게 되면서, Spring Batch 를 사용하고 있는 배치서버를 맡게 되었습니다.이전 스케줄링 관련 개발을 할 때는 Crontab, Quartz 등을 사용하였는데, 여기서는 Spring Batchdev-jwblog.tistory.com최근에 스프링배치 장애해결을 위해 강의를 들었는데 이를 간략하게 주로 사용한 부분 위주로 정리하고자 합니다.(이전 글들과 중복된 내용이 있을 수 있습니다.) [Spring] Spring Batch 장애 회고(Feat. ChunkListner 사용하기)작년 하반기 회사에서 발생한 Spring Batch 오류로 인해 긴급 장애 대응이..

article thumbnail
[Spring] Spring Batch 장애 회고(Feat. ChunkListner 사용하기)
BackEnd/Spring Batch 2024. 7. 12. 09:00

작년 하반기 회사에서 발생한 Spring Batch 오류로 인해 긴급 장애 대응이 있었습니다.해당 글에서는 발생한 원인과 조치한 방법에 대해 기록하고자 합니다.1. 장애 발생Spring Batch 특정 Job이 수행 중 내부 로직으로 인해 reader() -> processor() -> writer() 간에 무한으로 반복 수행이 발생하였고, Spring Batch 내부 로직에 따른 BATCH_STEP_EXECUTION 테이블 안에 Select/Update 문이 무한정 발생하였습니다.- 이로 인해 DML 쿼리가 무한정으로 쌓이면서 디스크 용량 과부하가 발생하였고, 긴급 디스크 증설이 진행되었습니다.2. 소스코드- 발생한 Job 은 Chunk 지향 기반 처리로 수행되고, reader() -> processo..

article thumbnail
[ERROR] npm 설치 시 SELF_SIGNED_CERT_IN_CHAIN 에러
Error 2024. 7. 9. 10:00

회사에서 신규 프로젝트로 React + Typescript 를 사용하여 Front를 구성하려고 하였는데, yarn 을 통해서 모듈을 install 하려는 과정에서 아래와 같은 에러가 발생했다.$ yarn create react-app frontend --template typescriptyarn create v1.22.21[1/4] Resolving packages...error Error: self-signed certificate in certificate chain at TLSSocket.onConnectSecure (node:_tls_wrap:1538:34) at TLSSocket.emit (node:events:513:28) at TLSSocket._finishInit (node..

article thumbnail
[클린코드] 14장. 점진적인 개선
Study/CleanCode 2024. 7. 4. 08:25

클린코드(CleanCode)를 읽고 간략하게 정리한 글입니다. 14장. 점진적인 개선1. 점진적인 개선의 중요성지속적 개선- 소프트웨어는 한 번에 완벽해질 수 없다.- 꾸준한 점진적 개선이 필요하다.- 작은 변경을 자주 적용하는 방식이 대규모 변경을 한 번에 적용하는 것보다 효과적이다.유지보수성 향상- 코드는 시간이 지남에 따라 변경되고 개선되어야 유지보수성이 높아진다.- 점진적인 개선은 코드를 최신 상태로 유지하는 데 중요하다.2. 개선 방법2-1. 리팩토링정의- 리팩토링은 소프트웨어의 기능을 변경하지 않으면서 코드를 재구성하는 것을 의미한다.목표- 코드를 더 읽기 쉽고 이해하기 쉽게 만들며, 중복을 제거하고, 구조를 개선한다.방법- 작은 단위로 점진적으로 리팩토링한다.- 하나의 작업을 끝내고 테스트를..

article thumbnail
[클린코드] 13장. 동시성
Study/CleanCode 2024. 7. 2. 13:11

클린코드(CleanCode)를 읽고 간략하게 정리한 글입니다.13장. 동시성1. 동시성이 필요한 이유?- 동시성은 결합을 없애는 전략이다.(= 무엇(what)과 언제(when)를 분리하는 전략)- 스레드가 하나인 프로그램은 무엇과 언제가 서로 밀접한데 이로 인해 호출 스택을 살펴보면 프로그램 상태가 곧바로 드러난다.응답 시간 단축: 동시성은 시스템의 응답 시간을 줄여 사용자 경험을 향상시키는 데 중요한 역할을 한다.자원 활용 극대화: 프로세서와 같은 시스템 자원을 효율적으로 활용할 수 있게 한다.설계 단순화: 큰 문제를 작은 문제로 나누어 병렬로 처리할 수 있다.2. 난관// Code 1-1public class X { private int lastIdUsed; public int getNext..

반응형