2026/02 30

[Spring] 웹소켓/Stomp 8

다중 서버에서의 Redis Pub & Sub 다중 서버 상황에서 서버 메모리에 의존적인 기능들은 대부분 문제가 생길 가능성이 크다. 문제A 서버와 B 서버가 있을 때 클라이언트1과 2가 실시간 채팅하는 상황에서 1은 A 서버에 발행, 2는 B 서버를 구독하게 되면A 서버는 클라이언트 2에 대한 정보를 알고 있지 않기 때문에 실시간 채팅 기능이 정상적으로 동작하지 않는다. 해결 - 서드 파티 솔루션으로 Redis Pub Sub 기능 사용 주로 Redis 또는 Kafka를 사용Redis는 pub sub 기능 외에도 캐싱, 리프레시 토큰 관리 등 여러 역할을 많이 수행한다. Redis Pub Sub : Redis가 제공하는 메시징 기능 - 실시간 통신에서 메시지를 전파해주는 목적으로 사용한다.- Redis..

[Spring] Batch 6

Job Listener- 배치 작업은 백그라운드에서 수행된다.- 리스너는 배치의 주요 시점들을 감지하는 역할을 담당한다. - 배치 모니터링- 배치 시작, 성공 여부, 종료 시점, 알림 발송, 데이터 초기화 .. - Job Listener 클래스는 스프링 빈으로 등록되어야 한다. (@Component) Job Execution Listener - Job 실행의 시작, 종료 시점에 호출되는 리스너- beforeJob : Job 시작 전 필요한 리소스를 준비 등 초기화 작업 수행- afterJob : Job 종료 직후 리소스를 정리하는 등 후처리 작업 (email 전송, Job 상태 변경 ..) 수행 Step Execution Listener - Step 실행의 시작, 종료 시점에 호출되는 리스너- befor..

Java & Spring/Batch 2026.02.26

[Spring] Batch 5

Job Parameter- 배치 작업을 실행할 때 외부에서 주입하는 파라미터 묶음 LocalDate targetDate = LocalDate.of(2026, 1, 26);deleteLogs(targetDate); Job Parameter 사용 x :- 위의 2026, 1, 26 처럼 값을 매 번 수동으로 변경, 재배포해야 한다.- 동적으로 변하는 값들에 대해 다루기 힘들다. Job Parameter 을 이용해 동적인 값들을 터미널 명령어 입력 시 주입할 수 있다.- 배치 작업 실행 시점에서 동적 데이터 주입 => 매 번 프로젝트 수정이 일어나지 않는다. ./gradlew bootRun --args='--spring.batch.job.name=myJob requestDate=20260225' Job Par..

Java & Spring/Batch 2026.02.25

[Spring] Batch 4

스프링 배치 처리 방식 : Chunk - 크고 무거운 작업의 처리 단위- 대용량 처리가 필요할 때 사용 (매월 1일 포인트 지급, 배송 상태를 일괄적으로 변경 ..)- 대용량 처리 도중 실패 시 '현재 청크 단위' 부터 이어서 실행 가능 청크 지향 처리의 동작 : 데이터 읽기 -> 가공 -> 쓰기 데이터 읽기 : ItemReader 함수형 인터페이스데이터 가공 : ItemProcessor 함수형 인터페이스데이터 쓰기 : ItemWriter 함수형 인터페이스 package spring.batch.lowerToupper;import lombok.RequiredArgsConstructor;import org.springframework.batch.core.job.Job;import org.sprin..

Java & Spring/Batch 2026.02.25

[Spring] Batch 2

스프링 배치 처리 방식 : Tasklet - 작고 독립적인 작업의 처리 단위- 단발성 작업이 필요할 때 사용 (파일 관리, 단순 DB 작업, Email, 문자 알림 발송, 쉘 스크립트 실행 ..) @FunctionalInterface : 함수형 인터페이스, 메서드가 하나이다.리턴 타입이 RepeatStatus인 execute 메서드 하나만 가지고 있다. StepContribution : 현재 단계(Step)가 얼마나 진행되었는지 기록하는 객체- ex : 책을 읽은 횟수, 메모를 쓴 횟수, 커피를 제작한 횟수 .. ChunkContext : 작업 수행에 필요한 정보가 담겨있는 객체 (외부 파라미터, 이전 단계 step에서 넘긴 데이터 ..) Tasklet 방식 1 : 람다식으로 RepeatStatus..

Java & Spring/Batch 2026.02.25

[Spring] Batch 1

스프링 배치- 대용량 데이터를 끊기지 않고 안전하고 효율적으로 처리하기 위한 표준화 프레임워크- 자동화할 '업무'를 대상으로 한다. Job- 배치 처리의 가장 큰 단위 Step - Job을 수행할 세부 단계, 실행 단위- 하나의 Job은 여러 Step으로 구성되어 있다. Job Repository- 배치 처리에 필요한 '메타 데이터'를 DB에 저장하고 관리하는 역할- 메타 데이터 : 스프링 배치 실행에 대한 데이터 (Job의 시작 시간, Step의 실행 시간 ..) Job Operator - 스프링 배치 5에서는 Job Launcher라고 불렀다. - 스프링 배치 운영 조작 인터페이스 - 스프링 배치에 대해 작업을 시작, 관리, 운영 등 조작할 수 있다. @SpringBootApplication..

Java & Spring/Batch 2026.02.25

Redis 3

스프링 서버에서 Redis 적용 현재 진행 중인 중고책 거래 플랫폼 프로젝트에 Redis 적용- Trade 단일 조회에 cache aside 적용 (TTL 10분)- TradeList 전체 조회에 cache aside 적용 (TTL 5분) *아래 메서드들은 Service 계층이고 기본적으로 @Transactional(readOnly = true) 적용 중1. Trade 단일 조회 캐시 등록// 판매글 단일 조회@Cacheable(value = "trade", key = "#trade_seq", unless = "#result == null")public TradeVO search(long trade_seq) { // 쿼리를 2번 조회하기 때문에 cache TradeVO findTrade = ..

Infra/Redis 2026.02.25