728x90
IT 연합 동아리 코테이토 9기의 백엔드 네트워킹 세번째 주제로 다량의 엑셀 데이터를 얻었을 때, 코드를 리팩토링하여 성능을 향상 시키는 방식에 대해서 알아보려고 합니다.
제가 찾은 방식은 캐시, 비동기, 멀티스레드, bulk insert (Spring Batch) 사용입니다.
- 먼저 리팩토링 전 [13.656초]
- 데이터 삽입 작업을 비동기적으로 처리하여 UI 스레드를 블록하지 않도록 해줍니다. [11.429초]
@Async 어노테이션을 활용할 수 있습니다.
- 자주 조회되는 데이터는 캐시에 저장하여 데이터베이스 조회를 줄입니다. [10.389초]
@Cacheable 어노테이션을 사용할 수 있습니다.
- bulk insert를 사용하여 성능을 개선할 수 있습니다.
대량의 데이터를 한 번에 삽입하여 성능을 개선해줍니다.
build.gradle에 Spring Batch 라이브러리 추가 한 뒤 리팩토링 할 예정입니다.
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-batch'
implementation 'org.springframework.batch:spring-batch-core'
implementation 'org.springframework.batch:spring-batch-infrastructure'
}
여유가 생길 때 추가할 예정입니다.
- 데이터 삽입 작업을 멀티스레드로 분산시켜 처리 속도를 높일 수 있다.
ExecutorService나 스프링의 TaskExecutor를 사용할 수 있다.
여유가 생길 때 추가할 예정입니다.
728x90