전체 글 (461) 썸네일형 리스트형 TaskletStep 아키텍처 1. Job과 TaskletStep 사이에서 StepExecution 도메인 객체가 생성이 됨. 2. StepExecution 안에 ExecutionContext를 생성하고, taskletStep에 StepExecution을 전달한다. 3. 이때 ExecutionContext의 배치 상태는 STARTED(시작) 종료 상태는 EXECUTING(실행) 상태이다. 4. TaskletStep, RepeatTemplate 사이에서 StepListener의 beforeStep이 호출된다. 5. tasklet 실행이 끝나게 되면 RepeatStatus.Continuable -> 에서 RepeatStatus.finished 상태값으로 변한다. (null 값을 return하긴 함) 6. StepListener에서 aft.. tasklet() - startlimit() / allowStartIfComplete StepContribution과 ChunkContext 에는 step 과 job과 관련된 정보들이 저장되어 있다. startLimit() step의 실행 횟수를 조정할 수 있다. 재시작을 할 수 있는 횟수 제한이라고 보면 된다. startLimit(3) 이라고 한다면 해당 step을 총 3번까지 실행할 수 있다는 것이고 3을 넘게 되면 아래와 같은 에러가 발생한다. allowStartifComplete() 재시작 가능한 job에서 step의 이전 성공 여부와 상관없이 항상 step을 실행하기 위한 설정 (default: 실패 -> 재시작 가능 , 성공 -> 재시작 불가능) -> 성공을 했더라도 재시작이 가능하게 됨. 동기-비동기, 블로킹-논블로킹 사실 저는 동기-비동기와 블로킹-논블로킹을 제대로 알지 못하고 있었습니다. 막연하게 동기면 다음 작업 처리 못하고 비동기면 계속 작업하는거 아니야?라고 생각했었습니다. (이러면 동기와 블로킹의 차이가 없어져버리죠) 공부해보니 동기-비동기와 블로킹-논블로킹은 좀 다른 개념이었습니다. 그리고 이해하기 쉽지 않은 헷갈리는 개념이기도 했습니다. 앞으로 비동기 처리나 논블로킹 IO를 활용할 일이 많을 것으로 예상하기 때문에 미리 정리를 하는 시간은 가져보려 합니다. 설명의 편의를 위해 함수 또는 작업이라는 용어를 사용하게 될텐데요, 단순히 코드에 작성한 함수 뿐 아니라 IO를 진행하는 프로세스, 네트워크 모델에서의 요청 및 응답 등에도 적용되는 개념이라고 생각해주시면 편할 것 같습니다. 저는 설명의 편의를 위해 .. Tomcat 설정 1. conf 파일 확인 참고 https://pshcode.tistory.com/108 server.xml: 톰캣 설정에서 가장 중요한 파일이다. 톰캣의 Service, Connector(포트 설정 등), Host 정보와 같은 중요한 정보들을 설정한다. catalina.policy: 보안 정책 권한 설정 파일이다. JVM에 의해서 웹 애플리케이션에 강제적으로 보안 정책 권한을 설정한다. catalina.properties: 서버를 시작할 때 검색하는 서버, 공유로더, jar 등의 공유정보를 포함한다. tomcat-users.xml: 사용자 권한과 인증 정보를 설정한다. - 톰캣 관리자를 사용할 때 활용되는 정보이며, 기본적으로 주석처리가 되어 있다. 주석해제 및 설정을 하여야 톰캣 관리자가 활성화 된다... Nginx config 설정 1.서버 사양 확인 참고 링크 http://bahndal.egloos.com/581863 [step1] cpu 확인 less /proc/cpuinfo [step2] cpu 코어 확인 nproc [step3] 메모리 확인 free -h 2. 리눅스 최적화 세팅 [Step1] limit.conf 설정 리눅스는 /etc/security/limit.conf 파일을 통해 서버의 리소스를 관리함 참고 링크 https://wasking.tistory.com/92 https://www.burndogfather.com/190 ulimit는 프로세스의 자원 한도를 설정 및 확인하는 명령(limit.conf)에서 읽어온다. soft / hard 두가지 제한으로 나뉨 soft : 새로운 프로그램을 생성하면 기본으로 적용되는 .. TaskletStep spring batch 가 제공하는 step의 구현체 중에서 가장 기본이 되는 구현체이다. stepBuilder 클래스가 하위 builder 클래스를 통해서 다양한 step을 만들 수 있는데 그중 우리는 TaskletStep을 실행시키는 Step에 대해서 살펴볼 예정이다. repeatTemplate은 반복하는 기능을 가진 클래스이다. TaskletStep은 반복 실행이 기본이다. taskletstep은 task기반과 chunk 기반으로 나눠져 있다. repeatTemplate을 설정하는 클래스 stepOperations (반복에 대한 설정) taskexecutor는 multithread로 task를 수행해야 하는 경우에 대한 설정 AbstractStep 에서 execute 메서드에서 실행이 됨 (Simp.. StepBuilderfactory taskletStepBuilder: tasklet 인터페이스를 구현한 구현체를 실행시킴 아래와 같이 batch job을 구성하였다. @Bean public Job batchJob() { return this.jobBuilderFactory.get("batchJob") .incrementer(new RunIdIncrementer()) .start(step1()) .next(step2()) .next(step4()) .next(step5()) // .next(step3()) .build(); } step1을 살펴보겠습니다. step1은 3가지 과정을 거치고 있습니다. - get 메서드 호출 - tasklet 메서드 호출 - build 메서드 호출 각각의 과정이 하는 역할을 살펴보도록 하겠습니다. @Bean .. simpleJob 아키텍처 jobLauncher와 simpleJob 사이의 발생하는 일 job이 실행될 때 오직 하나의 값을 가진 유일한 객체인 jobinstance가 생성된다. jobExecution은 jobInstance의 한번의 실행이고 jobInstatnce와 jobExecution은 1:n 고나계이다. jobExecution은 ExecutionContext 객체를 생성해서 포함하고 있다. simpleJob과 Step 사이 발생하는 일 job을 구성할 때 joblistener를 구성할 수 있고 simplejob과 step사이 job이 실행 전 beforeJob을 실행할 수 있다. step과 tasklet 사이에는 step 마다 stepExecution이 생성되고 StepExeuction은 내부으로 Executionconte.. 이전 1 ··· 9 10 11 12 13 14 15 ··· 58 다음