[Spring Batch] JpaPagingItemReader 대신 CustomNoOffsetPagingItemReader 만들기
·
Spring/Batch
오늘 작성할 포스팅은 포스팅 제목에 적혀있는 것처럼 `Spring Batch`에서 `JPA`와 기반의 Reader인`JpaPagingItemReader`의 동작 방식과 한계를 알고, 그 부분을 보완하기 위한 `CustomNoOffsetPagingItemReader`를 기록하고 정리하기 위한 포스팅이다. JpaPagingItemReader 란?`JpaPagingItemReader`는 이름 그대로 데이터를 페이지 단위로 처형하는 `ItemReader`다.전체 데이터를 일정 수의 페이지만큼 읽고 내가 블로그에서 직접 다루지는 않았지만 `JdbcPagingItemReader`와 유사하다. 하지만, 내부적으로 JPA 구현체를 사용한다는 점, 그리고 가장 중요한 페이징 방식에서 `JdbcPagingItemReade..
SSE(Server-Sent Events) in Spring Boot: 스레드/재연결/유실 대응 정리
·
Spring/유용한 정보
사실 일전에 블로그 포스팅에서 SSE에 다룬적이 있다. 2024.11.04 - [Spring/WebSocket] - [Spring WebSocket] SSE vs WebSocket [Spring WebSocket] SSE vs WebSocketSSE와 WebSocket, 그들은 왜 실시간 통신 환경에서 자주 비교될까?우리가 알림과 실시간 채팅 같은 서비스를 구현할 때, 우리는 자연스럽게 두 가지 기술 사이에서 고민한다.`SSE`와 `WebSocket`은 각기hdbstn3055.tistory.com 하지만, 최근 회사에서 패션 리테일 챗봇(Spring Boot, FastAPI) 사용 간 SSE를 사용할 일이 많았기에,그 속에서 얻은 지식, 고민, 결정을 정리하고자 이렇게 포스팅을 하게 되었다. 크게 아래 ..
Spring Security 7 MFA 토이 프로젝트
·
Spring
[Spring Security 7] OTT MFA를 FACTOR 권한으로 붙이면서 겪은 고민, 헷갈림, 해결 과정 이번 포스팅은 toy-mfa-system 백엔드에서 Spring Security 7 OTT MFA를 붙이면서 실제로 겪은 문제와 해결 과정을 정리한 글이다. 이번 글의 핵심은 아래다. FACTOR(PASSWORD, OTT) 기반 권한 설계OneTimeTokenService 커스텀 구현Resolver / Converter / SuccessHandler / FailureHandler를 실제 코드로 연결한 방식구현하면서 헷갈렸던 개념과 정리된 결론왜 이 구조로 갔는가MFA를 붙일 때 내가 가장 먼저 고민했던 건 이거였다.“2차 인증을 붙였다”가 아니라,“2차 인증 상태를 권한처럼 다룰 수 있나?”..
[LangChain(LangGraph), Spring AI] - LangChain과 LangGraph란?
·
Spring
[LangChain(LangGraph), Spring AI] 라는 대목으로 여러 포스팅을 작성할 예정이지만, 이번 포스팅에서는 주로 LangChain과 LangGraph에 관해 설명하려고 한다. 내 블로그를 자주 확인하시는 분이 있을 지는 모르겠지만, 지금껏 SpringBoot, Infra, DB 등의 내용이 주를 이뤘던 내 블로그에서 왜 갑자기 "LangChain과 LangGraph?" 라고 하실 수 있는 분이 계실 수도 있기에 간략하게 이유(?)에 대해 얘기하고 시작하려고 한다. 아래 내용이 이 포스팅의 주 내용은 아니기에 LangChain과 LangGraph에 관해서만 궁금하신 분들은 스킵하셔도 됩니다. 갑자기 LangChain, LangGraph? 현재 재직 중인 회사에서 챗봇을 개발하게 되었..
[Spring JPA] JPA Transactional 좀 더 알기
·
Spring/JPA
현재 `SpringBoot`를 사용하시는 대부분의 개발자라면, 대부분 `Spring Data JPA`를 사용할 것이다.또한, `Spring`에서 제공해주는 `@Transactional`이라는 어노테이션을 많이 활용할 것이다. 그런데, 이것저것 공부를 하며 내가 몰랐던 `JPA Transactional`에 관한 많은 지식을 카카오페이의 테크 블로그를 통해 알게 되었다. 따라서, 이번 포스팅 내용은 해당 블로그에서 얻은 지식을 정리하는 것이다.추후, 진행중인 `StudyWithMe`에도 적용해 볼 예정이다. 그럼 시작해보자.@Transactional이란?`Spring Transactional annotation`, 이하 `@Transactional`은 `Spring`에서 메서드의 원자성을보장하기 위해 정의된..
[Spring] Tomcat Thread Pool
·
Spring/유용한 정보
이번 포스팅에서는 Spring Boot의 내장 서버로 활용할 수 있는 `Tomcat`의 `Thread Pool`에 관해 좀 자세히 알아보려고 한다. Thread 개요스레드, 스레드.. 컴공과 개발자를 꿈꾸는 사람이라면 수도 없이 들어봤을 그 이름이다. `Thread`는 `Process`의 작업의 단위이다. 그리고 CPU Core가 `Thread` 단위로 작업을 처리하게 된다. 즉, 결론적으로 `Thread`는 CPU Core의 실행 단위라고 할 수 있다. `Thread`를 사용함으로 하나의 `Process`에서 두 가지 이상의 작업을 동시에 실행 가능하게 된다. 단순하게 Thread를 사용하게 된다면?만약 새로운 요청이 들어올 때마다 새로운 `Thread`가 생성된다고 가정해보자. 생성 비용이 큰 Thr..