[Spring Boot] 대량 배치에서 쿼리 개선을 통한 성능 개선 (sub. 커스텀 ItemReader 없이 성능 개선해보기) - 과거에 저질렀던 오류 정정 버전
·
Backend/Spring Boot & JPA
🙇‍♂️ 과거에 RepositoryItemReader가 최악의 성능을 보인다는 분석은 엄연히 제 실수였습니다.RepositoryItemReader가 최악의 성능을 보인다는 수치를 보인 이후, 당시 작업이 너무 많아 원인을 제대로 분석할 여유가 없어서 추측만 하고 넘겼었습니다.그러나 반 년이 지난 지금까지도 개인적인 의문이 풀리지가 않았고, 그 와중에 조회수는 계속 오르고, 제 말이 사실인 것처럼 받아들이신 분들까지 나타나는 상황을 보았습니다.찝찝한 기분이 들어 급하게 다시 분석해본 결과, RepositoryItemReader의 성능 저하는 제가 만든 Repository 구현체에서 비롯했으며, 잘못된 정보를 장기간 전달드리게 되어 사죄의 말씀드립니다.처음엔 Hibernate의 동작을 알아보는 방향으로 포..
[Spring Boot] 로그 잃고 외양간 고치기
·
Backend/Spring Boot & JPA
💡 Spring Boot에서 로그 파일을 관리하는 방법이 주된 내용이고, 이와 관련한 다양한 정책들은 이론적으로 구상만 해봤습니다.왜냐면, 프리티어 서버에게 로그 관리란 사치일 뿐이니까..😏1. Introduction 📌 Problem로그 관리의 중요성은 알고 있었다.다만, 혼자서 API 개발부터, 프로젝트 관리에 온갖 회의는 물론이고, 개인적으로도 영어, OS, JVM 공부까지 하다가, 또 틈만 나면 Spring 프레임워크 소스 코드 분석하는데 로그 관리에 투자할 시간이 없었을 뿐. 애초에 런칭도 못 하고 있는데다, 어떤 로그가 중요한 지도 모르는 주제에로그 시스템에 시간을 투자하는 것 자체가 의미가 없다고 생각했다. 그런데 엊그제 iOS 팀에서 서버에서 에러가 났다고 확인을 요청했었다.하필 그 ..
[Spring Boot] Spring은 어떻게 Proxy의 Advice 실행 순서를 결정하는가?
·
Backend/Spring Boot & JPA
⚠️ Spring의 Proxy 기반 동작을 모르면 이해하기 어렵습니다.1. Introduction 📌 How Does Spring Determine Proxy Order?바로 이전 포스팅에서 kotlin의 trailing lambda를 사용해 Spring AOP를 벗어나는 방법에 대해 알아보았다. 그런데 포스팅을 쓰면서, '여러 AOP가 동작하는 경우엔 어떻게 해야 하지?'라는 의문이 자연스레 뒤따라 왔다.물론 kotlin이 익숙칠 않아서 넘긴 것도 있지만, 그보다 Proxy 실행 순서를 알 수가 없었다. @Serviceclass UserService { @Transactional @Cacheable public User createUser(UserSaveCommand command) ..
[Spring Boot] Kotlin으로 Spring AOP 탈출하기
·
Backend/Spring Boot & JPA
⚠️ AOP와 Spring Aspect를 어느정도 이해하고 다뤄보신 분이 아니라면 이해하기 어렵습니다.1. Introduction 📌 Reason GitHub - CollaBu/pennyway-was: 🪙 Pennyway Spring Boot Web Application Server🪙 Pennyway Spring Boot Web Application Server. Contribute to CollaBu/pennyway-was development by creating an account on GitHub.github.com위 프로젝트에서 채팅 서버를 점진적으로 Java에서 Kotlin으로 마이그레이션을 하고 있다. 이유를 묻는다면 정석적이고 모범적인 답안을 제시할 수는 있지만, 실상은 그냥 코틀린을..