이번 포스팅을 시작으로 이벤트 기반의 MSA를 개선하는 과정에 대해서 시리즈로 작성하려고 합니다. 이번 포스팅에서는 레거시의 구조 및 문제점과 이를 해결하기 위해 어떻게 MSA로 전환했는지 공유드리며, MSA로 전환했음에도 남아있는 문제점들을 해결하기 위해 이벤트 기반의 MSA로 전환하게 된 과정까지 작성해보겠습니다. MSA 전환 배경 레거시의 구조저희 서비스 백엔드는 톰캣 웹 애플리케이션 서버에 서블릿 애플리케이션을 배포하여, JDBC를 사용해 DB와 통신하는, 전형적인 모놀리식 아키텍처의 레거시 웹 애플리케이션으로 구축되어 있었습니다. 심지어 서비스 레이어도 없었고, 백엔드 서버는 주로 DB에서 데이터를 읽어와 프론트에 전달하는 역할만 수행하여, 대부분의 비즈니스 로직은 클라이언트 또는 AWS Lam..
Spring Batch 시리즈를 포스팅하고 있습니다. 기준이 되는 버전은 5.x 버전입니다.1. Spring Batch 소개2. Job과 Step의 구조 및 생성3. Job과 Step의 실행 과정4. Job의 흐름 제어 - Flow5. FlowJob의 실행 과정6. 청크 기반 프로세싱의 구조 및 생성7. 청크 기반 프로세싱의 진행 과정8. Flat File, JSON 형식 파일 읽기 및 쓰기9. DB 데이터 읽기 및 쓰기10. Step의 예외 제어하기(스킵, 재시도)11. 배치 작업 확장하기 - 현재 포스팅 서버 개발자라면 스케일 업, 스케일 아웃이라는 용어를 들어봤을 것이다. 방식의 차이가 있지만, 공통적으로 시스템의 처리량과 성능을 향상하기 확장(스케일링) 방법론을 지칭하는 용어들이다. 배치 작업 ..
Spring Batch 시리즈를 포스팅하고 있습니다. 기준이 되는 버전은 5.x 버전입니다.1. Spring Batch 소개2. Job과 Step의 구조 및 생성3. Job과 Step의 실행 과정4. Job의 흐름 제어 - Flow5. FlowJob의 실행 과정6. 청크 기반 프로세싱의 구조 및 생성7. 청크 기반 프로세싱의 진행 과정8. Flat File, JSON 형식 파일 읽기 및 쓰기9. DB 데이터 읽기 및 쓰기10. Step의 예외 제어하기(스킵, 재시도) - 현재 포스팅11. 배치 작업 확장하기 이번 포스팅에서는 `Step`에서 예외가 발생하는 경우 무조건 실패 처리를 하는 것이 아니라, `ExceptionHandler`를 통해 커스텀하게 제어하는 방법에 대해서 살펴볼 것이다.그리고 Spri..