[Toy Project] 반려동물 이름 랭킹 & 추천(Paws & Names) 웹 사이트 개발 후기🐶

김찬미·2024년 8월 19일
0

Toy Project

목록 보기
2/9

🐶 Paws & Names 🐱

✅ Background

"Paws & Names"는 뉴욕시에서 제공하는 반려동물 이름 데이터를 활용해 인기 이름 랭킹과 랜덤 이름 추천 서비스를 제공하는 프로젝트이다. 미국에서 반려동물 이름에 대한 관심이 높아지고 있지만, 신뢰할 수 있는 인기 이름 정보를 쉽게 확인하기는 어려운 상황에 주목해 이 프로젝트를 시작했다.

Python을 사용해 NYC 데이터를 전처리하고, 이를 SQLite로 관리하면서 가볍고 빠르게 접근할 수 있는 이름 추천 시스템을 만들었다. 또한, Spring Boot를 통해 간단하지만 직관적인 웹 서비스로 구현했다.


💻 개발 환경

  • IntelliJ Ultimate
  • JDK 17
  • Spring Boot 3.3.2
  • SQLite 3.25.2
  • Maven

🛠️ 기술 스택

  • Backend: Java, Spring Boot, JPA
  • Database: SQLite
  • Data Processing: Python (Pandas, NumPy)
  • Deployment: Docker, Fly.io

🗒️ 주요 기능 소개

1. 인기 이름 랭킹 조회

첫 화면에서 뉴욕시 데이터를 기반으로 반려동물 이름의 TOP 30 랭킹을 보여준다. 성별에 따른 필터링 기능을 제공해 사용자가 원하는 이름을 쉽게 찾을 수 있도록 구성했다.

기술적 포인트:
SQLite를 사용한 이유는 경량 데이터베이스로, 소규모 프로젝트에서 높은 성능을 발휘할 수 있기 때문이다. 데이터 쿼리 최적화를 통해 빠른 조회 성능을 확보했다.

2. 랜덤 이름 생성

랜덤 이름 생성 기능에서는 "Male", "Female" 성별을 선택하면 해당 성별에 맞는 이름을 랜덤으로 추천받을 수 있다. 간단한 버튼 클릭으로 손쉽게 이름을 생성할 수 있어, 사용자 경험을 최대한 단순화했다.

기술적 포인트:
Python으로 NYC 데이터를 전처리하면서 성별, 빈도수 등 다양한 컬럼을 요구에 맞게 생성하고 중복 제거 작업을 진행했다. 이 데이터를 SQLite로 옮기면서 JPA를 통해 효율적인 이름 추천 알고리즘을 구현했다.


💪 기술적 도전과 해결 방법

이 프로젝트의 핵심 도전 과제는 대용량 데이터를 효율적으로 처리하는 것이었다. 처음 NYC 데이터를 가져올 때는 CSV 형태로 제공되었고, Python을 사용해 이를 전처리했다. 이후 데이터베이스로 전환하면서 SQLite의 경량 데이터베이스 특성을 최대한 활용해 데이터 처리 성능을 개선했다.

페이지네이션 기능과 최적화된 쿼리 작성 덕분에 데이터 조회 속도를 높일 수 있었고, Fly.io와 Docker를 이용한 컨테이너 배포로 가벼운 서비스를 안정적으로 운영할 수 있었다.


✈️ 마치며

이번 프로젝트를 통해 Spring Boot와 SQLite의 통합을 경험했고, 데이터 처리 최적화와 서비스 배포 과정도 익혔다. 특히, Python으로 데이터를 가공하고 이를 실무 환경에서 활용하는 경험이 인상 깊었다. 앞으로는 필터링 옵션을 더 세분화하고, 추천 알고리즘을 고도화해 사용자 맞춤형 서비스를 구현할 계획이다.

profile
백엔드 개발자

0개의 댓글

관련 채용 정보