반응형 spring18 스프링 배치 개선하기 정리 스프링 배치 성능에 관한 아래 두 영상을 간략하게 정리한 글입니다. Batch Performance 극한으로 끌어올리기https://www.youtube.com/watch?v=2IIwQDIi3ys&t=589sSpring Batch 애플리케이션 성능 향상을 위한 주요 팁https://www.youtube.com/watch?v=VSwWHHkdQI4&t=1011s Batch Performance 극한으로 끌어올리기 영상 정리대량 데이터 READbatch 성능 개선에서 제일 중요한 것은 Reader를 개선하는 것이다.일반적으로 Read의 복잡한 조건으로 인해 Write보다 성능의 더 큰 영향을 받는다.읽을 때 항상 Chunk 프로세싱이다. 예를 들어 천 만개를 1000개씩 나누어 1만번 처리한다.JpaPagi.. 개발/Spring Batch 2024. 9. 10. @RequestBody 직렬화와 역직렬화 눈으로 확인하기 자바 스프링에서 @RequestBody 직렬화, 역직렬화에 대해 알아보겠다. Java에서 @RequestBody필자는 요청 바디에 json 객체를 담아 요청했다.따라서 헤더의 content-type은 application/json이다. @RequestBody를 사용하면 RequestResponseBodyMethodProcessor가 HTTP 요청을 우리가 정의한 자바 객체로 변환해준다. 그럼 어떻게 HTTP 요청을 자바 객체로 변환해주는지 살펴보자. 실습 코드는 아래와 같다.import org.springframework.web.bind.annotation.PostMapping;import org.springframework.web.bind.annotation.RequestBody;import org.s.. 개발/Spring MVC 2024. 5. 30. Chunk Process Chunk Chunk란 여러 개의 아이템을 묶은 하나의 덩어리, 블록을 의미 한번에 하나씩 아이템을 입력 받아 Chunk 단위의 덩어리로 만든 후 Chunk 단위로 트랜잭션을 처리함, 즉 Chunk 단위의 Commit과 Rollback이 이루어짐 일반적으로 대용량 데이터를 한번에 처리하는 것이 아닌 청크 단위로 쪼개어서 더 이상 처리할 데이터가 없을 때까지 반복해서 입출력하는데 사용된다. Chunk는 ItemReader로 읽은 하나의 아이템을 Chunk에서 정한 개수만큼 반복해서 저장하는 타입 Chunk는 ItemReader로부터 전달받은 Chunk를 참조해서 ItemProcessor에서 적절하게 가공, 필터링한 다음 ItemWriter에 전달하는 타입 아키텍쳐 ChunkOrientedTasklet Ch.. 개발/Spring Batch 2023. 11. 10. FlowJob FlowJob Step을 순차적으로만 구성하는 것이 아닌 특정한 상태에 따라 흐름을 전환하도록 구성할 수 있으며 FlowJobBuilder에 의해 생성된다. Flow와 Job의 흐름을 구성하는데만 관여하고 실제 비즈니스 로직은 Step에서 이루어진다. 내부적으로 SimpleFlow 객체를 포함하고 있으며 Job 실행 시 호출한다. 사용해야하는 경우 Step이 실패하더라도 Job은 실패로 끝나지 않도록 해야 하는 경우 Step이 성공했을 때 다음에 실행해야 할 Step을 구분해서 실행해야 하는 경우 특정 Step은 전혀 실행되지 않게 구성해야 하는 경우 조건적 흐름이 필요하면 FloJob, 순차적 흐름은 SimpleJob 활용 배치 상태 유형 BatchStatus JobExecution과 StepExecu.. 개발/Spring Batch 2023. 11. 7. Executor와 TaskExecutor 이모저모 Java Executor Executor public interface Executor { void execute(Runnable command); } 제출된 Runnable 작업을 실행하는 객체이다. 태스크 제출과 각 태스크가 어떻게 실행될 것인지의 메커니즘을 분리하는 방법을 제공하며, 이는 스레드 사용, 스케줄링 등의 세부 사항을 포함한다. Executor는 일반적으로 명시적으로 스레드를 생성하는 대신 사용된다. 보통 스레드 풀을 사용하는 구현체가 많다. Executor 인터페이스는 실행이 반드시 비동기라는 것을 요구하지 않는다. Executor는 제출된 태스크를 즉시 호출자 스레드에서 실행할 수도 있다. Execuotr에서는 보통 태스크는 호출자의 스레드가 아닌 다른 스레드에서 실행된다. 많은 Ex.. 개발/Spring Core 2023. 10. 24. 스프링 배치 핵심 도메인 기초 Job 배치 계층 구조에서 가장 상위에 있는 개념으로 하나의 배치 작업 자체를 의미한다. 'A 데이터베이스의 데이터를 B 데이터베이스로 옮기는 배치'는 Job 자체를 의미한다. JobConfiguration을 통해 생성되는 객체 단위, 배치 작업을 어떻게 구성하고 실행할 것인지 전체적으로 설정하고 명세해 놓은 객체 배치 Job을 구성하기 위한 최상위 인터페이스이며 스프링 배치가 기본 구현체를 제공한다. ex SimpleJob, FlowJob 여러 Step을 포함하고 있는 컨테이너로서 반드시 한 개 이상의 Step으로 구성해야 한다. JobInstance Job이 실행될 때 생성되는 Job의 논리적 실행 단위 객체로서 고유하게 식별 가능한 작업 실행을 나타낸다. Job의 설정과 구성은 동일하지만 Job이 .. 개발/Spring Batch 2023. 10. 21. 토비의 스프링 Vol.1 8장 스프링이란 무엇인가 8.1 스프링이란 무엇인가? 스프링에 대해 가장 잘 알려진 정의는 '자바 엔터프라이즈 개발을 편하게 해주는 오픈소스 경량급 애플리케이션 프레임워크'다. 이 문장을 풀어서 살펴보자. 애플리케이션 프레임워크 경량급 자바 엔터프라이즈 개발을 편하게 오픈소스 애플리케이션 프레임워크는 특정 계층이나, 기술, 업무 분야에 국한되지 않고 애플리케이션의 전 영역을 포괄하는 범용적인 프레임워크를 말한다. 애플리케이션 프레임워크는 애플리케이션 개발의 전 과정을 빠르고 편리하며 효율적으로 진행하는데 일차적인 목표를 두는 프레임워크다. 경량급 스프링이 가볍다는 건 기술수준이 가볍다거나, 스프링이 유치하고 용도가 제한적이라는 의미가 아니다. 불필요하게 무겁지 않고 가볍고 단순한 환경에서도 엔터프라이즈 개발의 고급 기술을 대부분.. 독서/토비의 스프링 2023. 2. 21. Spring Data JPA 정리 강의를 수강한지 1년이 되가는 Spring Data JPA에 대해 정리해보도록 하겠습니다. Spring Data JPA 스프링 데이터 JPA는 스프링 프레임워크에서 JPA를 편리하게 사용할 수 있도록 지원하는 프로젝트다. CRUD 처리를 위한 공통 인터페이스를 제공하며, 리포지토리를 개발할 때 인터페이스만 작성하면 실행 시점에 스프링 데이터 JPA가 인터페이스를 구현한 객체를 동적으로 생성해서 주입한다. 이 밖에도 많은 JPA의 기능을 편리하게 사용할 수 있도록 지원한다. 본격적으로 살펴보자. 공통 인터페이스 스프링 데이터 JPA에서 제공하는 공통 인터페이스 JpaRepository에 대해 살펴보자. //JpaRepository 공통 기능 인터페이스 public interface JpaRepository.. 개발/JPA 2023. 2. 8. Spring Boot에서 build.gradle은 의존성 관리를 어떻게 하는걸까? 먼저 이전에 우아한 스프링 부트에 대한 공부 기록을 남기면서 의문점이 한 가지 남아있었다. 이전 우아한 스프링 부트에 대한 공부 기록이 남아있는 게시글은 아래와 같다. https://devdebin.tistory.com/229?category=1039778 우아한 스프링 부트 공부 기록 스프링 부트 스프링 부트는 스프링을 쉽게 제공하기 위해 제공되는 툴이다. 참고로 스프링이란 자바 엔터프라이즈 개발을 편하게 해주는 오픈소스 경량급 애플리케이션 프레임워크다. 스프링 devdebin.tistory.com 우리 개발자들은 스프링 부트를 사용하면서 직접적인 의존성의 버전을 적지 않아도 구체적인 의존성의 버전을 가져온다. maven의 경우는 pom.xml 파일에서 parent가 버전을 이미 다 알고 있기 때문이었.. 개발/Spring Boot 2022. 9. 15. 졸업 프로젝트 세팅 시작하기(aws, ec2, gabia, rds, docker, spring) 다음주면 슬프게도 벌써 개강이다. 필자의 학교는 3학년 2학기에 졸업 프로젝트를 하는데, 12주 동안만 진행한다. 짧으므로 개강전에 미리 사용할 서버 환경을 조금이나마 구축하려고 한다. 먼저 할 일은 다음과 같다. (계속 수정할 여지가 있다) 새로운 AWS 프리티어 계정 생성 ec2 인스턴스 생성 후 탄력적 IP 할당 가비아에서 도메인 구매 rds 세팅. docker 세팅: 스프링 컨테이너 + nginx + redis(추후에 추가, 다른 컨테이너도 추가할 예정) ssl를 사용해 https 적용하기 도커와 깃허브 액션을 통합해 CI CD 파이프 라인 구축하기. 일단 이번 포스팅에서는 5번 스프링 컨테이너까지 띄워보겠습니다. 1. 새로운 AWS 프리티어 계정 생성 프리티어 계정으로 가입을 진행했다. http.. 프로젝트 2022. 8. 25. 스프링 트랜잭션 전파 본 게시글은 인프런 김영한 선생님 강의 스프링 DB 2편을 완강하고 배운 것을 남기고자 적은 포스팅입니다. 강의 링크는 아래와 같습니다. https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-db-2/dashboard 스프링 DB 2편 - 데이터 접근 활용 기술 - 인프런 | 강의 백엔드 개발에 필요한 DB 데이터 접근 기술을 활용하고, 완성할 수 있습니다. 스프링 DB 접근 기술의 원리와 구조를 이해하고, 더 깊이있는 백엔드 개발자로 성장할 수 있습니다., - 강의 소개 | 인 www.inflearn.com 이번 파트는 특히 놀라웠다. 이런 깊은 내용을 어떻게 학습하신지.. 선생님의 노하우가 궁금해지는 파트였다. 스프링 트랜잭션 전파에 대한 내용을 .. 개발/Spring DB 2022. 6. 25. JPA 관련 기술 파트 요약 및 의문점 본 게시글은 인프런 김영한 선생님 강의 스프링 DB 2편을 완강하고 배운 것을 남기고자 적은 포스팅입니다. 강의 링크는 아래와 같습니다. https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-db-2/dashboard 스프링 DB 2편 - 데이터 접근 활용 기술 - 인프런 | 강의 백엔드 개발에 필요한 DB 데이터 접근 기술을 활용하고, 완성할 수 있습니다. 스프링 DB 접근 기술의 원리와 구조를 이해하고, 더 깊이있는 백엔드 개발자로 성장할 수 있습니다., - 강의 소개 | 인 www.inflearn.com Spring Data Jpa와 Jpa는 이전에 한번 학습했으므로 가볍게 중요 내용을 요약하겠으며, Querydsl을 좀 더 중점적으로 다루겠습니.. 개발/Spring DB 2022. 6. 23. 이전 1 2 다음 반응형