본문 바로가기

Develop

(317)
[Spring Batch] How to FailOver(Skip) 스프링 배치에서는 중간에 실패시에 많은 전략을 제공해준다. 1. Skip Skip 옵션은 각각의 단위에서 사용이 가능하다. 1. ItemReader 해당 부분에서 skip을 사용하는 경우를 생각해보자 ItemReader에서 Item을 읽다가 Exception이 발생하는 경우, 해당 아이템을 skip으로 넘기고 다음 아이템을 읽는다. 예를 들어, Item2 를 읽다가 Exception이 발생하면, 넘기고 Item3를 읽는다. 2.ItemProcessor 해당 ItemProcessor에서 Exception이 발생한다면, ItemReader로 돌아간다. ItemReader가 캐싱하고 있는 Input Chunk를 다시 받아와서 처음 부터 읽는다 해당 Exception이 발생한 부분을 만나게되면 skip 하고 다..
[Spring Batch] Not Use in Meta Tables 1. in Memory Repository 2. 배치 전용 H2 생성 근데, 둘다 그냥 사용하면 안된다. 사용하면 안되는 이유는 아래와 같다. 1. 배치 정보가, 메모리에 쌓이기 때문에 데이터가 영속적이지 않다. 2. 1번과 같은 사유로, 스키마에 대한 모니터링이 필요하다면 불가하다. 3. 배치 작업 진행동안, 메모리를 점유하게 되므로, 주기적으로 비워주는 작업을 해줘야한다. 그냥 앵간하면, 쓰자
[Spring Batch] Meta Tables Spring Batch의 구조를 살펴봤을떄 Job repostiory라는 것이 있었다. 이 부분에 대한 상세 포스팅을 하겠다. 총 6개의 테이블이 존재한다. BATCH_JOB_INSTANCE BATCH_JOB_EXECUTION BATCH_JOB_EXECUTION_PARAMS BATCH_JOB_EXECUTION_CONTEXT BATCH_STEP_EXECUTION BATCH_STEP_EXECUTION_CONTEXT - 배치 Job의 생성 정보를 담는 테이블이다. - Job의 실행 정보를 담는 테이블이다. Job의 수행여부를 profiling 할 수 있다. - Job 실행시 사용했던 파라미터에 대한 정보를 담아두는 테이블 이다. - 작업중 사용되는 모든 정보가 기록되는 Job의 Context를 저장하기 위한 ..
[Spring Batch] Spring Batch에서 멱등성을 유지하는 방법 멱등성 : 연산을 여러번 적용하더라도, 결과가 달라지지 않는 성질 예를 들어서 오늘 날짜의 매출 데이터를 집계하는 배치가 있다고 가정하자 코드에서 만약에 LocalDate.Now가 있다면, 배치는 항상 오늘 날짜를 가져와서 혹은 오늘기준의 특정 날짜를 가져와서 배치를 실행 시킬 것이다. 근데 만약에,,,어제 배치를 다시 돌려달라고 하거나, 어제 배치가 오류가 나서 어제의 배치를 다시 돌려야할때는? 소스 수정 -> 배포 -> 롤백의 과정을 거쳐야한다. 이와 같은 것은 멱등성이 깨졌다고 할수있다. 해당 케이스의 경우에 멱등성을 지킬수 있는 방법은 몇가지가 있다. Spring Batch Job Parameter를 통해, 오늘날짜의 값을 외부에서 주입받아서 실행 시켜주면 된다. 그러면 이와 같은 경우에는 멱등성..
[Spring Batch] 스프링 배치의 구조 우선 스프링 배치의 구조이다. JobLauncher로 Job을 실행 시키고, 1:N관계로 있는 Job의 step 들이 실행된다. 또한 각 step에 있는 ItemReader, ItemProcessor,ItemWriter 들이 실행이 된다. 하나씩 더 살펴보도록하자 1) JobLauncher Job을실행 시키는 역할을 한다. SpringBatch가 Job의 이름을 받아서 실행 시켜준다. 2) Job JobInstance : 논리적인 Job실행 JobExecution : 한번 시도되는 Job 실행 JobParameter : Job들을 구분하는 파라미터, 오늘의 Job과 내일의 Job 이 다른 것에 대한 구분을 짓기 위함 3) Step Batch Job을 구성하는 형태이다. 하나의 스탭은 reader,writ..
[Spring Batch] 스프링 배치 사용이유 Spring Batch - 스프링 배치는 백엔드의 배치처리 기능을 구현하는데 사용하는 프레임워크이다. 배치는 스프링 배치 설정 요소들을 간편화시켜 빠르게 설정하는데 도움을 준다. Spring Batch 장점 1) 대용량 데이터 처리에 최적화 되어 고성능을 발휘한다. 2) 효과적인 로깅, 통계처리 , 트랜잭션 관리 등 재사용 가능한 필수 기능을 지원한다. 3) 수동으로처리하지 않도록 자동화 되어있다. 4) 예외사항과 비정상 동작에 대한 방어 기능 존재 5) 스프링의 서브 프레임워크이기 떄문에, 스프링의 대표적인 기술들이 사용가능하다(Di, AOP) 6) 실행 이력에 대한 저장이 가능하고, 공유가 가능하다 Spring Batch 단점 -스케줄 기능을 제공하지 않아서 Quarz 나 jenkins와 같이사용한다.
[Spring] 웹 통신 , 스프링 동작 과정 Http 소켓 통신은 계속 연결되어 있기 때문에, 사용자가 늘어남에 따라 부하가 커진다. 그래서 HTTP통신은 연결을 지속시키지 않고 끊어버리는 Stateless방식을 사용한다. 연결이 끊기기 떄문에 부하가 적지만, 이전에 보냈던 요청이나 되돌려준 응답에 대해서는 기억하지 못하는 단점이 있다. 1. 톰캣 웹서버와 was의 차이 1. 정적페이지와 동적 페이지 정적 페이지란 , 서버에 미리 저장된 파일이 그대로 전달되는 웹 페이지를 말한다. 서버에 저장된 데이터가 수정되지 않는 한 항상 동일한 페이지를 반환한다. 반면 동적 페이지는 서버에 있는 데이터들을 스크립트에 의해 가공처리한 후 생성되어 전달 되는 웹 페이지를 말한다. 서버는 사용자의 요청을 해석하여 데이터를 가공한 후 생성 된 웹페이지를 반환하며, ..
[Spring] WebClient WebClient는 RestTamplate과 차이가있다. 공통점은 둘다 HttpClient의 모듈이다 차이점은 RestTemplate과 달리, WebClient는 Non-blocking방식이다. 해당 방식이 필요한 이유는 네트워킹의 병목현상을 줄이고 성능을 향상 시키기 위해서이다. Core당 1개의 쓰레드를 이용합니다. 각 요청은 이벤트 루프 내 job으로 등록이됩니다. 이벤트 루프는 각 Job을 제공자에게 요청하고, 결과를 기다리지 않고 다른 Job을 처리한다. 제공자로부터 이벤트 루프로 콜백으로 응답이 오면, 결과를 요청자에게 제공한다. WebClient는 이벤트에 반응형으로 동작하도록 설계 되었다. 동시 접속자가 많으면, RestTemplate보다 뛰어난 성능을 가지며 Spring 커뮤니티에서는 R..