Senior Software Engineering
Current폐기물 온라인 솔루션 Upbox 기능 및 성능 개선1. 기술부채 해결을 위한 설계A. email 1. 기존 문제점 - 기존 javamail라이브러리 내부에서 전송 단위별 connection을 별도 생성하여 메일을 전송하고 connection을 close하는 로직 2. 해결방안 - 기존 메일 전송 로직에서 batch형태로 전송시 connection생성하는 부분을 재사용하는 형태로 변경B. batch처리 1. 기존 문제점 - Identity방식으로 채번을 생성하는 테이블에 insert시 Spring Data JPA의 batch형태의 메소드를 사용함으로 인한 insert, update수행 속도 하락 - update수행속도 저하에 따른 다른 기능에서 데이터 접근시 간헐적으로 lock발생 2. 해결 A. 기존 Spring Data JPA방식이 아닌 JdbcTemplate의 batch메소드를 이용하여 수행속도 향상 - Insert의 경우 rewriteBatchStatements옵션 추가 - Update는 임시테이블에 변경하고자 하는 데이터를 insert후 변경하고자 하는 테이블과 임시테이블을 join하여 수행 B. 기존 모든 레코드에 대해서 하나의 트랜잭션으로 처리했던 부분에 대해서 lock발생 가능성을 최소화하기 위해 특정 범위 단위로 트랜잭션 범위를 축소화 C. B에서 지정한 트랜잭션 범위 단위별 별도의 CompletableFuture을 할당하여 기존 순차적인 blocking방식에서 non-blocking방식으로 처리하도록 변경함으로서 요청처리량 및 응답속도 향상 D. Insert시 식별자는 ResultSetMetadata를 통해 batch로 수행된 레코드들의 식별자 목록을 가져오도록 JdbcTemplate 확장