Yun Blog

기술 블로그

Batch Insert 성능 향상기 2편 - 성능 측정

JPA + MySQL + GenerationType.IDENTITY 조합으로는 Batch Insert를 사용할 수 없습니다. 자세한 내용은 Batch Insert 성능 향상기 1편 - With JPA에서 자세하게 정리했습니다. JPA의 단일 insert와, batch insert의 성능적인 차이가 얼마나 발생하는지 측정해보고 batch insert를 ......

Batch Insert 성능 향상기 1편 - With JPA

성능 향상을 위해서 Batch Insert를 도입하는 과정 중 JPA, Mysql 환경에서의 Batch Insert에 대한 방법과 제약사항들에 대해서 정리했습니다. 결과적으로는 다른 프레임워크를 도입해서 해결했으며 본 포스팅은 JPA Batch Insert의 정리와, 왜 다른 프레임워크를 도입을 했는지에 대해한 내용입니다. Batch Insert 란 ......

Spring Batch Test 작성 방법 및 고찰

Spring Batch Test Code 스프링 배치 애플리케이션 테스트 코드를 작성하면서 만났던 이슈와 그에 따른 나름의 고찰을 정리한 포스팅 내용입니다. 배치를 사용하지 않더라도 스프링 기반으로 테스트를 작성하는 경우에도 도움 되는 내용들이 있습니다. @SpringBatchTest Spring Batch 4.1 버전 부터는 @SpringBatchT......

Spring Batch Application 개발하면서 나름의 고찰 정리

현재는 Spring Batch Application 개발을 대부분 개발을 하고 있어, 해당 프레임워크로 개발을 진행하면서 내 나름대로의 고찰을 정리해볼까 한다. 2 ~ 10 개 정도의 배치 애플리케이션을 개발을 하고 크게 늘어날 가능성이 없다면 이 내용을 따르지 않는 것이 더 효율적이라고 생각한다. 본 포스팅은 배치 애플리케이션을 주로 개발하며 그 배......

Spring Batch CSV Reader & Writer

Spring Batch를 이용해서 데이터베이스에 저장되어 있는 정보를 CSV file로 저장을 하는 방법에 대해서 작성해보겠습니다. CSV Writer 데이터 흐름 payment csv 데이터의 흐름은 간단합니다. payment table -> payment.csv으로 변경됩니다. payment table의 불필요한 칼럼 id, created......

Rx Kotlin 이용해서 성능 개선

Rx Kotlin를 사용하면 스레드를 더 쉽게 사용할 수 있습니다. 시나리오 가장 흔한 케이스로 외부 API를 호출하고 그 결과에 맞게 데이터베이스를 수정하는 방식입니다. 주문을 시스템 내부 API를 호출해서 진행한다. 내부 API 시스템 성공 여부에 따라 status를 지정한다. Code Entity 1234567891011121314151617......

JPA @Where 사용법

해당 코드는 Github 공개되어 있습니다. JPA에서 @Where를 사용하면 엔티티를 조회하는 경우 일괄적인 Where 조건을 추가할 수 있습니다. 코드를 살펴보겠습니다. Entity 1234567891011121314151617181920212223242526272829303132333435@Entity@Table(name = "member"......

Mockserver Netty 사용해서 HTTP 통신 Mocking 하기

해당 코드는 Github 공개되어 있습니다. 테스트 코드를 작성할 할 때 외부 서비스와 통신하는 구간은 Mocking 해서 해서 테스트를 진행하게 됩니다. 대표적으로 HTTP 외부 통신이 있습니다. 이와 비슷한 내용으로 RestTemplate Mock 기반 테스트하기을 포스팅을 했었습니다. 그와 비슷한 주제로 Mockserver Netty 기반으로......

Spring Cloud Gateway

Getting Started

해당 코드는 Github 공개되어 있습니다. 용어 명칭 설명 라우트(Route) 라우트는 목적지 URI, 조건자 목록과 필터의 목록을 식별하기 위한 고유 ID로 구성된다. 라우트는 모든 조건자가 충족됐을 때만 매칭된다 조건자(Predicates) 각 요청을 처리하기 전에 실행되는 로직, 헤더와 입력된 값 등 다양한 HTTP 요청이 ......

ApplicationEventPublisher 기반으로 강결합 및 트랜잭션 문제 해결

해당 코드는 Github 공개되어 있습니다. 회원 가입 시나리오 회원 가입 시 회원 가입 쿠폰 발행, 회원 가입 이메일 발등을 해야 한다면 다음 코드처럼 로직을 만들 수 있습니다. 이메일 전송 실패, 쿠폰 발급이 실패하는 경우 회원 가입을 다시 해야 한다는 가정으로 설명드리겠습니다.(다소 과격한 시나리오지만 원자성에 대한 설명을 위해서 이런 시나......