🐔

꼬꼬마켓

역할

Backend / Infra

성과

SSAFY 프로젝트 경진대회 우수상 수상

팀 구성

팀 깻잎마을방범대 (총 6명) Front-End: 2명 Back-End: 4명

프로젝트 소개

육아용품.. 너무 비싸고 교체 주기도 너무 짧은데, 똑똑하게 소비하고 싶다면?
육아용품을 쉽고 빠르게 거래할 수 있고, 사용자 성향에 맞춘 거래글 추천까지
빅데이터 기반 육아 용품 중고 거래 추천 플랫폼, 꼬꼬마켓!

주요 기능

거래 완료를 위해 QR 코드를 태그
아이 정보, 상품 조회, 찜 정보를 기반으로 아이에게 맞는 상품 추천
검색어 자동완성 기능 구현
실시간 채팅
거래 한 시간 전 reminder 알림 및 인기 상품 글 조회

프로젝트 사용 기술

Backend

Java (Spring)
Spring Boot
Spring Security
Spring Data JPA
MySQL
Redis
Swagger

Frontend

JavaScript
Next.js
Tailwind
Axios

Infra

AWS EC2
AWS S3
NGINX
Docker
Jenkins

Management Tool

Jira
GitLab
Gerrit
Notion
Figma
Mattermost

IDE

IntelliJ IDEA
VS Code

Architecture

ERD

API

담당 업무

아키텍처 설계
거래 / QR 관련 API 개발
검색 및 Trie 자료구조를 사용한 검색어 자동완성 개발
QueryDsl 적용 및 동적 쿼리 추가
Docker compose & Jenkins를 사용한 CI/CD

문제 해결 및 회고

검색어 자동완성

Trie 자료구조를 사용한 자동완성 기능 개발
검색 시, 판매글 제목이 아닌 상품명으로 자동완성 키워드를 제공하는 기능을 개발했습니다.
옥션의 유아 용품 카테고리를 크롤링하여 상품명 데이터를 확보하고 이를 Trie 자료구조에 저장했습니다. 기존 trie 자료구조는 prefix만을 지원하지만 입력 단어가 포함되는 모든 키워드를 검색하기 위해서 문자열을 분할하여 적재했습니다.

배포 전 테스트 pipeline 추가

젠킨스를 사용한 배포 자동화 설정으로 인해, 오류가 발생하는 코드가 배포되었을 경우 바로 확인하기 어렵다는 문제가 발생했습니다. 따라서 파이프라인에 테스트 stage를 추가하여 테스트가 성공했을 경우에만 배포되도록 설정했습니다. 또한 배포 상태를 확인할 수 있도록 webhook을 설정하여 배포 상태에 대한 알림을 전송하도록 설정했습니다.

Commitlint를 사용한 Commit message 강제 및 Jira Issue Number 자동 등록

Husky와 Commitlint를 사용하여 commit message 형식을 강제했습니다. 또한 커밋 시, 지라 이슈 번호를 commit message에 입력해야 jira에 연동되기 때문에 하나씩 입력하는 번거로움을 해결하고자 브랜치 네임을 바탕으로 Jira Issue Number를 자동으로 입력하도록 pre-commit을 설정하여 팀원들의 편의를 제공했습니다.

외부 API 테스트 문제

카카오 Oauth 로그인과 같이 외부 API를 사용하는 경우, 의존성 문제 때문에 테스트나 예외처리를 하기 어렵다는 문제가 있습니다. 추후 이를 해결하기 위해 Mock을 사용하여 의존성을 줄이고 테스트 할 예정입니다.