본문 바로가기

Spring130

Chunk Size and Parallel Spring Batch -- 결론 -- 1. Chunk Size 가 클수록 Batch 의 실행시간이 빨라(짧아)지는 것은 아니다. 2. 병렬 처리의 속도가 더 빠르다. Case) 1억 건의 파일을 DB에 저장해야 한다 Chunk Size 를 최소화해서 여러번 Commit 한다 → Commit 리소스 비용이 크기 떄문에 비효율적 , 커밋을 되도록 줄인다보통 금융권 기준으로 2~3000 으로 설정하는 것 같다고 함. Chunk Size 를 1억으로 설정하면 OOM 이 발생할 수 있다. ( 메모리에 올려두고 작업하기 때문에 ) ChunkSize 에 따른 속도 비교 → 약 1만건(10,209) 의 데이터를 가지고 테스트 // Chunk Size Test @RequiredArgsConstructor @Configuration publi.. 2024. 4. 22.
Spring Batch 5.x DB 사용하기 기존 Tasklet 방식에 이어 Chunk 방식을 이용한 간단한 예제를 작성해 보려고 한다. 스프링 배치 아키텍처이다. Tasklet 에서는Item 과 관련된(노란색) 부분은 사용하지 않았다. Chunk 방식에서는 Item 을 사용하려고 한다. DB 에서 데이터를 가져올 case 1. ItemReader -> DB 에서 데이터 조회 2. ItemProcessor -> 데이터 가공 3. ItemWriter -> DB 에 다시 INSERT 이렇게 순서로 진행할 예정이다. . MySQL DB 에 BATCH 테이블이 정상적으로 생성되어있다고 가정. JPA 를 이용해서 Entity 2개를 만들어주었다. Person 테이블에서 가공 후 PersonTemp 테이블에 넣어줄 예정. @Entity @NoArgsConst.. 2024. 4. 20.
Spring Batch 5.x 기본 연습 - tasklet Spring Batch 5 는 이전과 많은 변화가 있다. 새롭게 생성하기 전이나 마이그레이션하기 전에 어떤게 변했는지 참고해본다. https://github.com/spring-projects/spring-batch/wiki/Spring-Batch-5.0-Migration-Guide Spring Batch 5.0 Migration Guide Spring Batch is a framework for writing batch applications using Java and Spring - spring-projects/spring-batch github.com 💡 이전에는 @EnableBatchProcessing 어노테이션을 통해서 스프링 배치의 스프링 부트 자동설정을 활성화할 수 있었습니다. 하지만 이제는.. 2024. 4. 19.
동시성 문제 해결 - Synchronized, Pessimistic Lock, Optimistic Lock, Redis https://www.inflearn.com/course/%EB%8F%99%EC%8B%9C%EC%84%B1%EC%9D%B4%EC%8A%88-%EC%9E%AC%EA%B3%A0%EC%8B%9C%EC%8A%A4%ED%85%9C/dashboard 재고시스템으로 알아보는 동시성이슈 해결방법 | 최상용 - 인프런 최상용 | 동시성 이슈란 무엇인지 알아보고 처리하는 방법들을 학습합니다., 동시성 이슈 처리도 자신있게! 간단한 재고 시스템으로 차근차근 배워보세요. 백엔드 개발자라면 꼭 알아야 할 동 www.inflearn.com 위 강의를 학습하며 작성. 작업환경 세팅 brew install docker brew link docker docker version docker pull mysql docker run -d .. 2024. 4. 8.
현재 열려있는 포트 조회 및 닫기 (macOs) iterms (터미널, 쉘) 을 이용해서 현재 사용하고 있는 PORT 를 조회할 수 있다. lsof -PiTCP -sTCP:LISTEN sudo lsof -PiTCP -sTCP:LISTEN 종료하는 방법은 PID 의 번호와 kill 명령어를 사용한다. kill -9 (PID번호) sudo kill -9 (PID번호) 2024. 3. 24.
Mac 자바 설치 경로 확인하기 Iterm 를 이용해서 자바 경로를 조회한다. /usr/libexec/java_home -V 해당 경로로 이동 cd /Users/joyunjong/Library/Java/JavaVirtualMachines 2024. 3. 13.
@Transactional 안에 @Transactional 테스트 @Transactional 안에 @Transactional 이 있는 경우 테스트를 해보았습니다. TransactionSynchronizationManager.*isActualTransactionActive*() 메서드를 이용해서 트랜잭션이 적용되는지 확인 할 수 있습니다. 1. ### 외부메서드(트랜잭션) + 이너메서드 @Slf4j @Service public class TransactionService { @Transactional public void outerMethod() { log.info(" ****** outerMethod start ******"); log.info(" ****** outerMethod transaction Active : {}" , TransactionSynchroniza.. 2024. 3. 4.
@Conditional 을 이용해 특정 조건일 때만 사용 @Conditional 특정 조건이 참인 경우에만 빈에 등록해야하는 상황에 사용할 수 있습니다. Condition 인터페이스를 상속받아 구현해 사용합니다. 반환타입은 boolean 값입니다. @FunctionalInterface public interface Condition { boolean matches(ConditionContext context, AnnotatedTypeMetadata metadata); } @Slf4j public class MemoryCondition implements Condition { @Override public boolean matches(ConditionContext context, AnnotatedTypeMetadata metadata) { // -Doption=.. 2024. 2. 22.
인프런- 김영한님 온라인 밋업 Live [ 30만 수강생 기념 ] 느낀점 10만 , 20만 을 넘어 30만 수강생에게 지식을 나눔하고 계신 영한님의 온라인 밋업 동영상이 인프런에 게시되었습니다. https://www.inflearn.com/course/30%EB%A7%8C-%EA%B9%80%EC%98%81%ED%95%9C-%EB%9D%BC%EC%9D%B4%EB%B8%8C%EC%84%B8%EC%85%98 [지금 무료] [30만 수강생 기념] 1/31 김영한님 온라인 밋업 Live 강의 - 인프런 1월 31일 저녁 7시에 진행되었던 밋업 영상입니다., [사진][사진]여러분들의 인생멘토가 될,김영한님의 첫 라이브 세션!😟 내가 개발자로 평생 일할 수 있을까?🤔 현 시점 개발자가 갖춰야 할 가 www.inflearn.com 해당 영상을 보고 현재 나의 상황과 느낀점에 대해 간단히 정.. 2024. 2. 9.