개요500만개의 레코드에서 키워드 기반 문자열 검색을 수행했을 때, 속도가 저하되는 문제를 MySQL의 Full-Text Search를 통해 해결해보려 한다. 개선 결과 기존 API 처리 시간 1185ms → 564ms로 약 52% 성능 개선이 이뤄졌다. 기존 쿼리의 문제점아래는 기존에 사용하던 쿼리이다. 키워드를 기반으로 post 테이블을 검색한다.explain select *from post pjoin category c on c.category_id = p.category_category_idwhere p.title like '%**:keyword**%' and p.region_region_id in (**:region_ids**) and p.status not in ('HIDE', ..
중고 거래 플랫폼 API 서버 개발
https://github.com/f-lab-edu/used-trading-market GitHub - f-lab-edu/used-trading-market: [당근마켓 모티브] 개인 간 거래 플랫폼 API 서버[당근마켓 모티브] 개인 간 거래 플랫폼 API 서버. Contribute to f-lab-edu/used-trading-market development by creating an account on GitHub.github.com중고 거래 API 서버에 Kafka를 적용하고 이벤트를 통해 비동기적으로 로직을 처리하려고 한다. 아래의 사진은 프로젝트 RDB의 일부이다. Member 테이블은 Post, Region 테이블을 참조하고 있다. Post는 Member를 통해 작성자의 Region을 간접..
이번 프로젝트는 멀티 모듈환경에서 헥사고날 아키텍처를 적용하여 구성해 보았다. 모듈과 클래스의 의존성 방향 다이어그램은 아래와 같다. 이처럼 헥사고날 아키텍처로 프로젝트를 구성해보니 MVC 아키텍처와 비교했을 때, 장단점이 확실하게 보였다. 장점은 비즈니스 로직, 도메인이 UI, Infra(세부사항)를 모른다는 것과 세부사항이 비즈니스 로직의 플러그인이 된다는 것이다. 이는 세부사항이 결정되지 않은 시점에도 비즈니스 핵심 로직을 구현할 수 있다. 세부사항이 자주 변경되거나 아직 결정되지 않은 시점에 헥사고날 아키텍처를 도입하면 생산성이 증가할 것이라고 생각한다. 하지만 단점또한 명확하다. 아직 헥사고날 아키텍처의 디렉터리 구조에 익숙하지 않다는 점을 감안하더라도 패키지 구조가 복잡하다. MVC 아키텍처와..
🥕 이번 당근 클론 프로젝트에서는 기존에 자주 사용하던 MVC 구조가 아닌 헥사고날 아키텍처를 적용해보려 한다. 따라서 먼저 배경 지식을 습득후 간단한 예제 코드를 통해 헥사고날 아키텍처에 대해 익숙해지려 한다. 이전 포스팅과 이어집니다. MVC 구조에서 헥사고날 아키텍처로 🥕 이번 당근 클론 프로젝트에서는 기존에 자주 사용하던 MVC 구조가 아닌 헥사고날 아키텍처를 적용해보려 한다. 따라서 먼저 배경 지식을 습득후 간단한 예제 코드를 통해 헥사고날 아키텍처 hyunsb.tistory.com 이번에는 이전 포스팅에서 설명한 MVC 구조에서 싱글 모듈 헥사고날 아키텍처를 적용한 API 서버를 멀티 모듈로 마이그레이션 해보려 한다. 싱글 모듈의 한계점은 명확하게 존재한다. 모든 로직이 하나의 dependen..
🥕 이번 당근 클론 프로젝트에서는 기존에 자주 사용하던 MVC 구조가 아닌 헥사고날 아키텍처를 적용해보려 한다. 따라서 먼저 배경 지식을 습득후 간단한 예제 코드를 통해 헥사고날 아키텍처에 대해 익숙해지려 한다. 헥사고날 아키텍처를 적용하려는 이유이전의 협업 프로젝트에서 이런 일이 있었다.여러 회의를 거쳐 프로젝트의 방향성을 정하고, 데이터를 추출한 뒤, 백엔드 팀은 데이터베이스 구조를 모두 설계하고 엔티티에 맞게 비즈니스 로직을 작성하여 4~5 개의 MVP 기능을 구현한 상태였다. 이후 PM과의 회의를 통해 새로운 기능을 추가하기 위해, 데이터베이스 테이블 구조의 변경이 필요하다는 것을 인지했다. 따라서 데이터베이스 테이블 구조를 다소 변경하게 되었다. 여기서 문제가 발생했다. 데이터는 거의 변함..