거래성사 목록 쿼리에 인덱스를 적용하여 tps 속도를 높일려고 한다. 거래성사 목록 조회 쿼리 explain select completere0_.complete_request_id as col_0_0_, completere0_.from_card as col_1_0_, item3_.item_name as col_2_0_, card2_.thumbnail as col_3_0_, item3_.price_range as col_4_0_, completere0_.to_card as col_5_0_, item8_.item_name as col_6_0_, card7_.thumbnail as col_7_0_, item8_.price_range as col_8_0_, completere0_.created_date as c..
문제점 클라이언트는 에러가 날 때 어떤 오류가 나는지 상세히 알지 못한다. 프론트와의 원활한 협업을 위해 에러를 상세히 내려주자는 의견이 나왔다. 우리 프로젝트에선 에러코드를 Enum으로 정의하고 있었는데, 이 ErrorCode를 건드리지 않고 그대로 클라이언트에게 전송할 수 있을지가 이슈였다. @Getter @AllArgsConstructor public enum ErrorCode { UNKNOWN("G0001", "알 수 없는 오류가 발생했습니다."), INVALID_ACCESS("G0002", "잘못된 접근입니다."), DUPLICATED_EMAIL("G0003", "중복된 이메일이 이미 존재합니다."), DUPLICATED_NAME("G0004", "중복된 이름이 이미 존재합니다." ), INVA..
멀티 모듈을 도입한 이유 나비마켓 프로젝트는 서버가 한대로 구성되어 있어, 멀티 모듈로의 변환이 필수적이지는 않았다. 하지만 대부분 기업에서는 여러 서버로 운영되므로 멀티모듈 적용의 경험이 필요하다 느끼게 되었다. 멀티모듈이란 ? 멀티 모듈은 하나의 시스템이나 프로젝트를 여러 개의 독립적인 모듈로 분리하여 구성하는 방식이다. 모듈화된 구조는코드의 재사용성을 높여주는데, 비슷한 기능을 가진 모듈을 다른 프로젝트에서도 재사용해서 개발 시간과 노력을 절약할 수 있다는 장점이 있다. 모듈의 분리 기준 하나의 모듈을 여러개의 모듈로 분리를 하게 되면서 기존 프로젝트의 패키지 별, 즉 계층별로 모듈을 분리하게 되었다. 이렇게 모듈을 구성했을 시에 순환 참조의 문제가 생기게 되었다. 순환참조 문제를 해결한 아키텍처 ..
문제 카드 이미지를 기존 jpaRepository.saveAll 하는 과정에서 insert 쿼리가 다음과 같이 image url의 갯수만큼 나간다. insert into card_images (created_date, modified_date, card_id, image_url) values (?, ?, ?, ?) Hibernate: insert into card_images (created_date, modified_date, card_id, image_url) values (?, ?, ?, ? 한번의 쿼리만 나갈 수 있는 방법이 없을까? Batch insert INSERT INTO table (col1, col2) VALUES (val1, val11), (val2, val22), (val3, val3..