목록전체 글 (531)
개발놀이터
본 포스팅은 인프런의 정수원님의 스프링 배치 강의를 듣고 정리한 포스팅입니다. 더 자세한 내용은 강의를 참고해주세요. 스프링 배치는 실행 및 관리를 위한 목적으로 여러 도메인(Job, Step, JobParameter 등등)의 정보들을 저장, 업데이트, 조회할 수 있는 스키마를 제공합니다. 과거, 현재의 실행에 대한 세세한 정보, 실행에 대한 성공과 실패 여부 등을 일목요연하게 관리함으로써 배치운용에 있어 리스크 발생시 빠른 대치가 가능합니다. DB와 연동할 경우 필수적으로 메타 테이블이 생성되어야 합니다. DB 스키마 제공 파일 위치는 /org/springframework/batch/core/schema-*.sql에 존재하고 DB 유형별로 제공합니다. 이때 스키마 생성에 대한 설정을 할 수 있는데 ap..
본 포스팅은 인프런의 정수원님의 스프링 배치 강의를 듣고 정리한 포스팅입니다. 더 자세한 내용은 강의를 참고해주세요. 1. 스프링 배치 탄생 배경 자바 기반 표준 배치 기술 부재 배치 처리에서 요구하는 재사용 가능한 자바 기반 배치 아키텍처 표준의 필요성이 대두 스프링 배치는 SprintSource(현재는 Pivotal)와 Accenture(경영 컨설팅 기업)의 합작품 Accenture - 배치 아키텍처를 구현하면서 쌓은 기술적인 경험과 노하우 SpringSource - 깊이 있는 기술적 기반과 스프링의 프로그래밍 모델 Accenture는 이전에 소유했던 배치 처리 아키텍처 프레임워크를 Spring Batch 프로젝트에 기증함 2. 배치 핵심 패턴 Read - 데이터베이스, 파일, 큐에서 다량의 데이터를..
구글링을 통해 많은 코드들을 보다보니 문득 궁금증이 생겼습니다. super, super() 이런게 뭘까? 스프링을 공부한다는 사람이 자바의 기본적인 문법도 모르는게 조금 부끄럽긴 하지만 그래도 모르니까 배우지 라는 마인드로 한번 포스팅 해보도록 하겠습니다. super super는 자손클래스에서 조상클래스로부터 상속받은 멤버를 참조하는데 사용되는 참조변수이다. 멤버 변수와 지역 변수의 이름이 같을 때 this를 사용해서 구별했듯이 상속받은 멤버와 자신의 클래스에 정의된 멤버의 이름이 같을 때는 super를 사용해서 구별할 수 있다. 조상클래스로부터 상속받은 멤버도 자손클래스 자신이 멤버이므로 super대신 this를 사용할 수 있다. 그래도 조상클래스의 멤버와 자손클래스의 멤버가 중복 정의되어 서로 구별해..
생각해보니 스프링 배치를 깊게 공부한다는 사람이 스프링 배치이 뭔지에 대한 포스팅이 없다는게 이상해서 스프링 배치의 특징 (장점) 에 대해서 포스팅 해보겠습니다. 추가적으로 다른 언어에서 배치 프로세스를 어떻게 처리하는지에 대해서도 살짝 알아보도록 하겠습니다. 배치 (Batch) 란? 우선 배치가 뭔지부터 알아야겠죠. 배치란 일괄 처리를 의미합니다. 저도 처음엔 한글인줄 알았는데요. 어디에 뭐를 배치하다. 뭐 대충 이런 의미로 생각하고 있었죠. 하지만 배치는 영어입니다. Batch란 '일괄' 이라는 뜻입니다. 즉 데이터를 일괄처리 할 때 사용하는 것이라고 생각하면 좋습니다. 일반적인 서비스 로직은 사용자의 request에 따라서 동작을 수행하는 것이 일반적인데, 배치는 사용자의 request를 받지 않고..
서론 요즘 배치에 대해서 깊이있게 공부중입니다. 하지만 한가지 아쉬운 점이 있더라구요. 바로 JPA를 사용하면 배치에서 기본으로 제공해주는 JpaCursorItemReader, JpaPagingItemReader가 순수 JPQL을 사용해야 한다는 것이었습니다. 아시다시피 순수 JPQL은 문자열로 쿼리를 만들기 때문에 안전성 부분에서 큰 부담이 됩니다. 흔히 말하는 휴먼 에러를 피할 수 없습니다. 순간 잘못해서 공백을 한칸 더 추가한다거나 혹은 오타가 나기 시작하면 어디서 틀렸는지 찾기도 만만치않게 힘들죠 그래서 아 Querydsl에 관련된 ItemReader가 있으면 정말 좋겠다 라는 생각을 하고 있었습니다. 그래서 혹시 있을까 싶어서 구글링을 해봤는데 우아한형제들 기술블로그에 향로(jojoldu)님이 ..
스프링 배치에서는 각기 다양한 ItemReader를 제공하는데 그 중 CursorItemReader 와 PagingItemReader는 언뜻 보기에 비슷해 보이고 실제로도 하는 일이 비슷합니다. 그래서 이번 포스팅에선 이 둘의 차이점에 대해 탐구해보는 시간을 가져보도록 하겠습니다. ItemReader 우선 ItemReader에 대해서 짚고 넘어가야 할 것 같습니다. ItemReader란 뭘까요? 스프링 배치의 ItemReader는 데이터를 읽어들이는 일을 합니다. 그게 꼭 DB의 데이터만을 얘기하진 않습니다. File, XML, JSON 등 다른 데이터 소스를 배치 처리의 입력으로 사용할 수 있습니다. 이외에도 Spring Batch에서 지원하지 않는 Reader가 필요한 경우 직접 해당 Reader를 ..
JobParameter란? 우선 JobParameter에 대해 알아보자면, 스프링 문서에는 이렇게 나와있습니다.. https://docs.spring.io/spring-batch/docs/current/reference/html/domain.html#jobparameters The Domain Language of Batch This section describes stereotypes relating to the concept of a batch job. A Job is an entity that encapsulates an entire batch process. As is common with other Spring projects, a Job is wired together with either a..
실제 환경에서는 스프링 배치의 Job을 어떻게 실행합니까? In real environment how to run spring batch Job? (실제 환경에서 스프링 배치 잡을 실행하는 방법은 무엇입니까?) -> How do you run the Job in the spring batch in a production environment comment : 1. '실제 환경에서' 라는 부분을 맨 앞으로 뺐는데 너무 한국적으로 작문한건가...라는 생각이 든다. 2. '실제 환경' 이라는 부분을 나는 real environment라고 했는데 맞는 말이긴 한데 너무 기계가 말하는 듯한? 느낌이 든다. 파파고는 production environment라고 썼다. 좀 더 부드러운 표현같다. 휴면 계정 관리를 스..
저번 포스팅과 이어지는 내용입니다. https://coding-review.tistory.com/177 스프링 배치를 이용해서 휴면 계정을 관리해보자 스프링 배치에 대한 전반적인 내용은 아래의 포스팅을 참고해주세요. 때문에 스프링 배치에서 사용되는 단어에 대한 설명은 생략합니다. https://coding-review.tistory.com/172 스프링 부트 배치 개념 대 coding-review.tistory.com 때문에 배치와 관련된 코드는 생략하도록 하겠습니다. 스프링 배치 vs 스케줄러 배치에 대해 잘 알고계시지 못하는 분이 배치와 스케줄러를 같다고 생각하십니다. 하지만 둘은 엄연히 다른 존재입니다. 스프링 배치는 대용량 데이터를 단발성으로 처리해야 하는 경우에 사용하는 프레임워크입니다. 스케줄..
스프링 배치에 대한 전반적인 내용은 아래의 포스팅을 참고해주세요. 때문에 스프링 배치에서 사용되는 단어에 대한 설명은 생략합니다. https://coding-review.tistory.com/172 스프링 부트 배치 개념 대략 10만명의 회원을 거느리는 웹 서비스를 운영한다고 가정했을 때 우린 매일마다 회원들의 상태변화를 감지하고 운용할 수 있어야 합니다. 가령 오늘까지 우리 서비스에 접속하지 않은지 1년 coding-review.tistory.com 스프링 배치를 이용해서 휴면 계정을 관리해 보겠습니다. 사용한 기술 스택 -Spring Boot 2.7.2 -Spring Data JPA 우선 Entity를 만들어 보겠습니다. 코드에 대해서 하나씩 설명하면서 진행하도록 하겠습니다. Member.java p..