Spring Batch 최적화: Partitioning 및 멀티스레딩
I. 문제 상황 (그림 I-1) 기능 개선 전, 배치 실행 결과 공공 API로부터 전국의 기업 정보를 동기화하는 배치 기능을 구현했다. 약 120만 건의 데이터를 페이지네이션 방식으로 가져와 데이터베이스에 저장하는 단순한 작업이지만, 처리 시간은 예상보다 훨씬 길었다. 총 데이터: 약 1,200,000건 페이지당 데이터: 1,000건 총 페이지...
I. 문제 상황 (그림 I-1) 기능 개선 전, 배치 실행 결과 공공 API로부터 전국의 기업 정보를 동기화하는 배치 기능을 구현했다. 약 120만 건의 데이터를 페이지네이션 방식으로 가져와 데이터베이스에 저장하는 단순한 작업이지만, 처리 시간은 예상보다 훨씬 길었다. 총 데이터: 약 1,200,000건 페이지당 데이터: 1,000건 총 페이지...
이전 글에서 CI 최적화를 통해 변경된 모듈만 테스트하는 방법을 다뤘다면, 이번에는 CD(Continuous Delivery)를 최적화 방법을 정리해보려 한다. I. 문제 상황: 불필요한 배포 멀티모듈 프로젝트에서 CD를 구성할 때 마주하는 가장 큰 문제는 불필요한 배포가 너무 자주 발생한다는 것이다. 예를 들어 프로젝트 구조가 다음과 같다고...
멀티모듈 프로젝트가 커질수록 CI 파이프라인의 실행 시간이 기하급수적으로 증가한다. 특히 단일 모듈만 수정했을 뿐인데 전체 모듈의 테스트가 실행되면, 개발자는 불필요하게 긴 시간을 기다려야 한다. 이번 글에서는 GitHub Actions를 활용해 변경된 모듈만 감지하고, Matrix Strategy로 병렬 테스트를 수행하는 방법을 정리해보려 한다. ...
멀티모듈 및 DDD로 구성한 사이드 프로젝트 진행 중 BE 팀원에게 이런 질문을 받았다. 어플리케이션 계층에 Repository의 Interface가 존재하는 이유가 뭔가요? 인프라 계층에서 Interface를 정의하고 구현하면 되지 않을까요? 어플리케이션 계층과 도메인 계층에서 공통적으로 서비스 패키지가 존재하는 이유가 뭔가요? 역할...
I. GHSA-j288-q9x7-2f5v gradle 설정 시, springdoc-openapi-starter-webmvc-ui에 대해 다음과 같은 취약점이 확인되었다. (그림 I-1) IntelliJ alert OSV 를 통해 확인했을 때, Apache Commons Lang 3 라이브러리가 원인이었다. 입력을 받았을 때 무한 재귀하는 문제...
1. 목적 SpringBoot 기반 프로젝트의 실시간 통신 시스템 구현. 순수 WebSocket과 STOMP, Redis Pub/Sub을 활용해 확장 가능하고 안정적인 실시간 통신을 목표로 한다. 예시로 구현한 사용자별 알림 기능뿐만 아니라, LLM + RAG를 통한 사용자 정보 분석 등 엔드 유저의 대기가 발생하는 모든 기능에 대응할 수 있도록...
1. 목적 SpringBoot 기반 프로젝트의 인증 도메인 구현. OAuth2, PKCE, JWT를 적용해 보안성 높은 인증 시스템을 목표로 한다. 2. 주요 기능 1) OAuth2 인증 지원 Google OAuth2 Kakao OAuth2 PKCE(Proof Key for Code Exchange) 방식으로 보안성 강화 2...
PKCE란? PKCE(Proof Key for Code Exchange, RFC 7636)는 OAuth 2.0의 Authorization Code Grant Flow를 보다 안전하게 만들기 위해 도입된 방법이다. 원래 모바일 앱과 SPA(Single Page Application) 같은 Public Client를 위해 고안되었지만, 현재 모든 OA...
SAP MM 모듈의 문서 흐름 이해 1. 개요 SAP MM(Materials Management) 모듈은 자재 관리 프로세스의 핵심 요소를 통합하여 조직의 조달 및 재고 관리를 효율화한다. 전체 문서 흐름은 다음과 같은 순차적 과정으로 구성된다: graph LR A[Material Master 생성] --> B[PR: 구매요청] B ...
SAP SD 무상 상품 생성 프로세스 1. 무상 상품(Free Goods) 개요 고객에게 추가 비용 없이 제공되는 상품을 의미. 다음과 같은 비즈니스 시나리오에서 활용된다. 판촉 활동: 특정 수량 이상 구매 시 무료 제공되는 상품 샘플 제공: 신제품 홍보를 위한 무료 샘플 보상 상품: 고객 불만 처리나 보상을 위한 무료 상품 번들...