본문 바로가기

전체 글321

chunk vs tasklet 차이 Chunk-Oriented Processingchunk는 데이터를 일정 크기로 나누어 처리하는 방식으로 chunk를 기준으로 트랜잭션이 관리된다.데이터를 Read(ItemReader) → Processing(ItemProcessor) → Write(ItemWriter) 단계를 기준으로 나누어 처리한다.주로 데이터 작업을 수행하는 경우 효과적이다.@Configurationclass ChunkBatchConfig( private val jobRepository: JobRepository, private val platformTransactionManager: PlatformTransactionManager, private val domainRepository: DomainRepository) { .. 2024. 11. 18.
HikariCP 데드락 이슈 HikariCP 데드락 이슈와 해결 방법JMeter로 스트레스 테스트를 진행하던 중 아래와 같은 에러가 발생했다.Connection is not available, request timed out after 30000ms.@Entitydata class Domain( @Id @GeneratedValue(strategy = GenerationType.AUTO) val id: Long? = null, val name: String? = null,)@Serviceclass DomainService( val repository: DomainRepository) { @Transactional fun save(domain: Domain): Domain { retur.. 2024. 11. 14.
Spring Batch Writer 성능 비교 Spring batch writer 의 구현체는 아래와 같은 종류들이 존재한다.Jdbc 및 JPA 는 mysql 8.0 을 기준으로 테스트 진행1.1. JdbcBatchItemWriterJDBC를 사용하여 관계형 데이터베이스에 데이터를 배치로 쓰는 Writer대량의 데이터를 효율적으로 삽입할 수 있으며, 트랜잭션 관리가 용이AUTO_INCREMENT 사용하지 않은 경우GenerationType.AUTO 을 사용하는 경우 Domain 과 쿼리가 같아 테스트 진행하지 않음 @Testfun testDomainJdbcBatchItemWriter() { // given val writer = JdbcBatchItemWriterBuilder() .dataSource(jdbcTemplat.. 2024. 11. 13.
Kubernetes Resource PodKubernetes에서의 Pod는 Kubernetes 애플리케이션의 기본 실행 단위입니다. Pod는 공유 네임스페이스와 공유 파일 시스템 볼륨을 가진 일련의 컨테이너와 유사합니다. 이를 애플리케이션이 실행되는 고유한 환경으로 생각할 수 있으며, 하나 이상의 애플리케이션 컨테이너와 공유 스토리지/네트워크 리소스를 캡슐화합니다. Pod는 코드가 실행되는 장소입니다.ReplicaSetKubernetes의 오브젝트 중 하나로, 특정 수의 Pod를 항상 실행하도록 보장하는 역할을 합니다. ReplicaSet은 지정된 수의 Pod가 항상 실행되고 있는지를 모니터링하고, 파드가 종료되거나 장애가 발생하면 새로운 파드를 생성하여 지정된 수를 유지합니다. 이를 통해 애플리케이션의 가용성을 높이고, 자동으로 복구하는.. 2024. 6. 2.