spring boot(5)
-
MySQL에서 ElasticSearch로 대용량 데이터 마이그레이션: OFFSET vs PK 기반 커서 방식 비교
본 문서는 회사의 기존 RDB 에서 ElasticSearch 로의 데이터 마이그레이션 전략을 다룬 문서입니다!개발 환경JDK : 17 Spring Boot : 3.0.0 MySQL : 8.0.36ElasticSearch : 7.15.1 Spring Data ElasticSearch : 5.0.12배경ElasticSearch 설치 이후, 남은 작업은 국내 숙박 목적지 검색에 사용되었던 호텔, 지역 정보 데이터들을 ElasticSearch 로 옮겨야하는 데이터 마이그레이션 작업입니다. 그래서 이관에 앞서 숙박 목적지 검색에 사용되던 데이터들 총 마이그레이션 데이터의 양을 계산 해야 합니다.기존 목적지 검색 API 의 응답 형태는 다음과 같습니다.{ "regions" : [...], "hotels" : [...
2024.10.27 -
Pure Java 프로젝트 의존성 포함법 : Shadow Plugin
1. 문제의 시작: 해축갤 인기 게시물 트래픽 추적 중 에러 해외축구갤러리의 인기 게시물 트래픽을 추적하기 위해 Java 프로그램을 개발하고 Gradle 빌드 시스템을 사용하여 빌드한 후 실행했습니다. 그러나 "java.lang.NoClassDefFoundError: org/jsoup/Jsoup"라는 Gradle 빌드 관련 에러가 발생했습니다. 이는 Spring Boot 프로젝트에서는 경험하지 못한 문제였습니다. Spring Boot 는 jar 파일 빌드시 기본적으로 모든 dependency를 포함하기 때문입니다. 2. Gradle의 기본 동작 이해하기 이 문제를 해결하기 위해 Gradle 커뮤니티의 토론을 참고했습니다. First of all, the default jar that Gradle prod..
2024.01.29 -
Java @Scheduled: 매시 정각에 실행되는 Cron 표현식 테스트하기
배경 @Transactional @Scheduled(cron = "0 0 * * * *") public void updatePopularPosts() { // 새로운 상위 10개 게시물 추출 List top10Posts = postRepository.findTop10Posts(); // 기존의 data 삭제 popularPostRepository.deleteAllInBatch(); // 변환 후 새로운 data 삽입 List popularPosts = convertToPopularPost(top10Posts); popularPostRepository.saveAll(popularPosts); } 위 함수에 대한 테스트 코드를 작성해보려 하다 이런 글을 쓰게 되었습니다. 테스트의 목적은 매 정시에 함수가 실..
2023.12.20 -
postman 띡띡딸깍 귀찮아서 테스트 코드 짭니다
매번 기능 만늘때마다 postman 띡 띡 딸깍 하며 기능 테스트 하는 게 너무나 귀찮습니다. '귀차니즘'이 많은 개발자냐고요? 네! 그거 잘못된 거 아니냐고요? 는 장난입니다만, 사실 진짜 알빠노이긴 합니다. 저는 귀찮은 일은 정말 질색입니다. 매번 기능, 코드 수정할 때 마다 일일히 postman 띡띡딸깍 하기 싫기도 하죠. 그리고 많은 사람들이 CI/CD 를 구축했다면서 테스트 없는 CI 를 구축한 경우를 여럿 봐왔는 데 사실 이건 CI 가 아니라고 생각합니다. 추후 생길 (사실 이미 매번 배포하다가 귀찮음을 겪어버리고) CI/CD 구축을 위해서라도 테스트 코드를 작성해야 할 이유가 있죠. 그래서 이번 기회에 아얘 테스트 코드를 작성하기로 했습니다. 뭘 테스트 해야 하나? 결국 나는 어플리케이션을 ..
2023.10.31 -
Spring Boot JUnit5 : JPA metamodel must not be empty 에러 솔루션
상황 아마 이 에러가 나신 분들은 Controller 에 대한 유닛 테스트 코드를 작성하고 실행하니 에러가 나셨을 겁니다. 많은 분들이 영한님의 Spring Data JPA 강의를 수강 후, 프로젝트 시작 시에 만들어지는 Applicaiton 파일에 붙여둔 @EnableJpaAuditing 어노테이션 때문에 에러가 나게 되는 겁니다. 어째서냐? 원인 Using this annotation will disable full auto-configuration and instead apply only configuration relevant to MVC tests (i.e. @Controller, @ControllerAdvice, @JsonComponent, Converter/GenericConverter, F..
2023.10.31