batch 프로젝트-1

후하후핳·2022년 5월 29일
0

spring batch

목록 보기
2/2

내가 다니고 있는 회사에서 굉장히 많은 데이터 처리를 한다.
batch로 데이터 처리를 하고 있지 않아서 spring batch 로 회사의 데이터 처리를 해보면 어떨까 생각해서 회사의 작은 스케줄 작업부터 변경해볼려고 한다.

나도 사실 배치라는 것을 잘몰라서 일단 배치란 무엇이고 spring batch를 왜 사용해야하는지 살펴볼려고 한다.

만약 중간에 더 괜찮은 프레임워크가 있다면 spring batch를 사용 안할 수 있다.

1. 배치 처리란

  • 컴퓨터에서 사람과의 상호작용 없이 이어지는 프로그램(작업)들의 실행이다.
  • 사용자와의 상호 작용이 주력인 웹 애플리케이션과는 지향점이 다르다.

2. web과 batch 차이

web 실시간 처리/ 상대적인 속도 / QA 용이성
batch 후속 처리 / 절대적인 속도 / QA 복잡성

web은 QA 분들이 테스트를 진행해주면 개발자가 생각하지 못한 부분을 발견해준다.
batch 프로그램은 db를 QA분들이 들여다 볼 수 없기 때문에 테스트 코드가 필수 이다.

3. Spring Batch와 Quartz

  1. Quartz는 스케줄링 프레임워크
    ex ) 매시간/ 마지막주 금요일에 실행
  2. 배치는 api로 실행하든 스케줄링으로 실행하든 실행되면 실행자와는 관련이 없다.
  3. 쿼츠는 자바코드를 일정 주기마다 실행해주는 것 일뿐이다.
  4. Quartz는 Spring Batch의 보안제이지 대체제가 아니다.
  5. Spring Batch는 배치에 필요한 기능을 제공해준다. 개발자는 비지니스 로직만 신경쓰면 된다.

배치 애플리케이션이 필요한 상황

  • 일정 주기로 실행되어야 할때
  • 실시간 처리가 어려운 대량의 데이터를 처리 할때

우리 회사에서는 새벽마다 돌아가는 스케줄이 존재한다.
또한 실시간 처리가 어려운 대량의 데이터를 처리때문에 배치 애플리케이션이 필요해졌는데 간단히 설명하자면 기능 중에 하나가 상품마다 태그가 존재하고 그 태그의 명이나 값을 변경해주는 서비스가 존재한다. 그러면 해당 태그를 가지고 있는 모든 상품의 값이 변경되어야하는데 상품 수가 엄청 많다보니 해당 처리가 오래 걸린다.

Spring Batch란

  1. Spring Batch에서는 모든 데이터를 메모리에 쌓지 않는 조회 방식이 기본 방식
    findAll 방식으로 진행하면 안된다.

  2. Job>Step>Tasklet

참고: https://www.youtube.com/watch?v=_nkJkWVH-mo&t=315s

0개의 댓글