arrow_upward
본문 바로가기

Spring8

애플리케이션 쿼리 튜닝 및 성능 개선하기 대규모 시스템에서 각 기능이 독립적인 애플리케이션으로 구현된다고 가정한다. 즉, 각 기능은 모듈로 분리 되어 있다. 여기서는 게시판(board)과 게시글(post) 기능을 개발할 때, 게시글 기능을 위주로 시스템의 성능 개선을 위한 단계를 진행할 것이다. 쿼리 튜닝 및 인덱스 생성 -> 성능 테스트 진행 -> 톰캣 및 DBCP 설정 -> 성능 테스트 진행 및 결과 확인의 순서로 단계를 밟아간다. DB 테이블 구조create table board ( board_id BIGINT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(50) NOT NULL, created_at TIMESTAMP, modified_at TIMESTAMP);create table post.. 2025. 6. 2.
스프링의 이벤트 발행과 구독 사용방법 이벤트 기반 아키텍처는 시스템 내에서 발생하는 이벤트를 통해서 컴포넌트 간의 결합도를 낮추는 방법으로, 스프링에서는 이벤트 발행(publish)과 구독(subscribe) 기능을 통해서 컴포넌트 간의 느슨한 결합을 도와준다.  결합도가 높은 주문 메서드 작성다음 코드는 주문을 하는 코드이다. 예제를 위해 주문 로직은 간단하게 작성했다.@RequiredArgsConstructor@Servicepublic class OrderService { private final OrderRepository orderRepository; private final MemberRepository memberRepository; private final SendMailService mailService; .. 2024. 11. 21.
Spring Rest Docs 사용하기 토이 프로젝트에서 Spring Rest Docs를 사용하면서 프로젝트 API의 문서화를 적용하며 내용을 정리해본다. API 문서API 문서란 웹 애플리케이션을 개발하면서 만들어진 HTTP API를 개발자나 사용자 입자에서 쉽게 이해할 수 있도록 문서화한 자료를 말한다.API의 사용 방법, 엔드 포인트, 요청 및 응답 구조 등을 담고 있다.API 문서를 생성하는 이유API 문서는 팀 내부, 외부 개발자 및 사용자로 하여금 API를 이해할 수 있게 도와준다. API 문서가 없다면 직접 소스를 보고 파악해야 할 수도 있다.API 문서를 제대로 작성하면 시스템의 변경이 있을 때 영향이 있는 부분을 파악해서, 유지보수성을 높일 수 있다.백엔드, 프론트엔드 협업 시 프론트드 개발자들이 API 문서를 통해 인터페이스.. 2024. 8. 23.
[Spring Batch] JobParameters와 검증(JobParametersValidator) 이번 포스팅에서는 JobParameters와 JobParametersValidator를 사용한 JobParameters를 검증하는 방법을 알아볼 것이다. JobParameters란?JobParameters는 배치 작업을 하는데 사용되는 파라미터의 집합이다. JobParameters는 JobInsteance를 식별하고 서로 다른 파라미터를 사용해서 배치를 여러 번 실행할 수 있게 한다.JobInstance를 식별한다는 것은 JobParameters로 동일한 작업을 구분지으며, 중복 실행하는 것을 방지해 준다. 그리고 파라미터를 동적으로 변경해서 처리할 수 있게 해준다. 스프링 부트에서 "시스템 변수를 사용해서 파라미터를 주입받을 수는 없을까?"라고 생각할 수 도 있지만, 시스템 변수는 스프링 배치에서 제공.. 2024. 7. 21.
[Spring Batch] Chunk 지향 처리 이전까지는 Step을 처리할 때 Tasklet으로 단일 작업을 처리했었다. 간단한 처리를 할 때는 Tasklet만 써도 상관없지만 대량의 데이터를 처리할 때 수십 수백만건의 데이터를 한 번에 처리하는 것은 그렇게 용이하지는 않다.이번에는 스프링 배치에서 데이터를 처리할 때 많은 이점을 제공하는 Chunk에 대해서 알아볼 것이다. 프로젝트 설정은 이전 포스팅과 동일하다.  Chunk란?스프링 배치는 일반적으로 Chunk 지향적인 처리 스타일을 사용한다. Chunk는 대량의 데이터를 효율적으로 처리할 수 있으며 데이터를 일정한 크기(청크)로 나누어 처리하는 것을 의미한다.  Chunk는 다음 요소들로 구성된다.ItemReader: 데이터를 읽어온다. (FILE, DB)ItemProcessor: 읽어온 데이터.. 2024. 7. 19.
[Spring Batch] 스프링 배치 메타데이터 스키마 확인 이전에 스프링 부트 2버전과 3버전에서 스프링 배치 프로그램을 간단하게 작성했는데, 이번에는 메타데이터 스키마(테이블)을 한번 확인해볼 것이다. 프로젝트 설정은 이전 포스팅 설정을 그대로 사용한다.  메타데이터 스키마(Meta-Data Schema)출처: Appendix B: Meta-Data Schema  스프링 배치는 Job과 Step의 실행 상태, 결과를 관리하기 위해서 메타데이터 스키마를 사용한다. 각 테이블은 배치 작업의 상태 정보를 저장하며, 표시된 테이블 외에도 키를 관리하기 위한 시퀀스 테이블들이 있다. JobRepository를 통해서 Job, Step의 실행 상태, 시간, 파라미터 정보 등을 저장하고 관리하게 된다. 각 테이블의 ID 값은 레코드를 식별하기 위한 PK(대체키)다.그리고 .. 2024. 7. 14.