Full-Text Search로 TPS 개선하기 과거에 진행했던 프로젝트에 리팩토링을 진행하면서 검색 쿼리의 성능을 개선해 보았다. 인덱스를 쓰지 않는 쿼리 개선 대상은 특정 키워드로 게시글을 조회하는 쿼리다. 이 쿼리는 where 절에 like 문과 '%키워드%' 형태로 조건이 걸려 있었다. 이런 방식의 쿼리는 인덱스를 쓰지 않는 풀 테이블 스캔을 해 개선점이 있을 거라 판단했다. type 값이 ALL, 즉 풀 테이블 스캔 당연히 개선 방법으로 인덱스 사용이 가장 먼저 떠올랐지만, 한편으론 무수히 많은 문자열 조합이 가능한 TEXT 데이터에 인덱스를 생성하는 것이 가능할까? 하는 의문도 들었다. 그러면 어쩔 수 없이 검색 엔진을 도입해야 하나? 생각도 했지만, 간단한 검색 기능일 뿐인데 과하다는 생각도..
정적 멤버 클래스로 DTO 관리하기 최근 프로젝트 리팩토링을 진행하면서 DTO 클래스가 많아 관리에 어려움을 겪었다. 문제 상황 엔터티 속성 중 일부를 나타내는 VO 클래스에 새로운 속성이 추가됨 엔터티 변경에 따라 DTO 및 DTO assembler의 변경이 요구됨 많고 분산되어 있는 DTO, 가독성이 떨어지고 관리가 어려운 문제 발생 비슷하고 중복된 필드가 많아 실수도 잦음 수많은 DTO들 변경이 요구되는 파일을 모두 열어봐야 하는 상태 @Getter public class BoardResponseDto { private Long boardIdx; private User author; private String boardTitle; private String boardContents; private ..
2022-10-28 01:23:46.064 INFO 29124 --- \[ restartedMain\] .RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.deco.gachicoding.comment.domain.repository.CommentRepository. If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframew..
이번 글에서는 Spring Boot 환경에서 CORS 이슈를 경험하고 해결한 과정을 정리했다. 혹시 CORS를 모르거나 관련된 배경지식에 대해 궁금하다면 아래 포스팅을 참고하면 좋을 것 같다. SOP와 CORS 최근 프로젝트를 진행하면서 CORS 이슈를 경험했다. 과거에도 여러 번 겪었던 문제이지만 계속 미뤄오다가 이번 기회에 공부도 할 겸 자료를 정리해보았다. 이 글에서는 SOP와 CORS, 그리고 CORS의 bool-flower.tistory.com 기본적으로 Access-Control-Allow-Origin 헤더 값을 통해 CORS 설정을 해줄 수 있다. Spring Boot 환경에서는 일반적으로 Filter를 구현해서 헤더 값을 설정한다. CORSFilter를 직접 구현하여 헤더 값 설정 Cors..
얼마 전 웹 프로젝트에서 메일을 통한 유저의 이메일 인증 기능을 개발했다. 이메일을 유저 아이디로 사용하기 때문에, 사용자의 이메일이 유효한지 확인하는 절차가 필요했기 때문이다. 사전 지식 및 설정 메일 시스템과 SMTP에 관한 포스팅 https://bool-flower.tistory.com/13 이메일과 SMTP 유튜브 한기대박승철교수님 채널의 컴퓨터 네트워크 제9강 이메일과 SMTP 강의를 보며 작성된 글이다. 강의를 들으면서 같이 좋을 것 같다. 최근 진행하던 프로젝트에서 메일을 통한 회원 인증 bool-flower.tistory.com 구글 SMTP 설정방법 https://hyunmin1906.tistory.com/276 [Go] Google Gmail SMTP 설정 방법 및 메일 전송 ■ SMT..