Petting (반려견 성격유형검사 서비스)

FastAPI SQLAlchemy Classical Mapping Domain Event Kakao Local API MySQL Docker

목차

  1. 프로젝트 개요
    1. 팀 구성 및 정보
  2. 기술 구현 상세
    1. 기술 스택 및 개발 환경
    2. 주요 기능
    3. 개발 성과

프로젝트 개요

서비스 소개반려견의 성향을 기반으로 적합한 친구를 매칭하고, 견주들이 반려 경험과 정보를 공유할 수 있는 커뮤니티 및 소통 플랫폼임.
핵심 목표 1반려견의 성향에 맞는 친구를 안전하게 연결할 수 있는 PDTI(반려견 성향 분석) 기반의 1:1 매칭 시스템을 구축하는 것을 목표로 함.
핵심 목표 2동네 근접 위치 및 공간 좌표 연동을 이용해 주변 반려견 정보를 편리하게 탐색하고 소통할 수 있는 반려인 친화적 소통 채널을 제공하는 것을 목표로 함.

팀 구성 및 정보

항목내용
참여 인원총 3명 (PO/PM 1명, BE 1명, FE 1명)
진행 기간2024.04 ~ 2024.07 (약 2개월)
담당 역할백엔드 API 개발 및 AWS 인프라 유지보수 수행
협업 도구Slack: 팀 내부 소통 및 실시간 알림 연동
Jira: Sprint 기반 일정 및 세부 태스크 관리
Notion: 기획 안, 스펙 명세, 개발 및 API 문서 통합 관리

기술 구현 상세

기술 스택 및 개발 환경

항목내용
담당 역할백엔드 API 개발 및 AWS 인프라 유지보수 수행
기술 스택Python 3.10, FastAPI, SQLAlchemy, MySQL, dependency-injector, boto3 (AWS S3), requests, PyJWT, Aligo SMS API, Kakao Local API, Docker
InfrastructureAWS(EC2, S3, RDS)를 활용함
FastAPI: EC2 환경에 Docker 컨테이너 기반으로 배포함
RDS: MySQL 엔진을 적용해 데이터를 적재함
S3: 반려견 프로필 및 커뮤니티 미디어 자산 저장소로 활용함
RepositoryPETTING-API Repo

주요 기능

기능상세 내용
PDTI 및 성격 유형 검사반려견 성향 및 행동 양식 자체 진단 테스트를 개발하고 점수 산정 알고리즘을 구현함
성향 기반 친구 매칭PDTI 진단 결과 유형의 연산 및 비교를 통해 근접 매칭 및 성격 적합도 높은 친구 강아지 매칭 추천 기능을 개발함
위치 기반 근접 강아지 탐색유저의 주소 유효성을 검증하고, 추출된 공간 좌표(경위도)를 활용하여 주변에 거주하는 반려견을 거리순 탐색하는 서비스를 구현함
실시간 1:1 매칭 채팅 및 게시판매칭에 동의한 반려인 간 1:1 대화가 가능한 채팅 인프라를 구축하고 정보 공유 커뮤니티 게시판을 제공함

개발 성과

특징상세 내용
SQLAlchemy Classical Mapping 아키텍처 설계문제: 테이블 데이터 모델과 도메인 모델 간의 강한 결합으로 영속성 스펙(DB 스키마) 변경 시 도메인 규칙이 오염되거나 테스트 작성이 어려웠음.
해결: SQLAlchemy map_imperatively() API를 도입하여 테이블 모델과 비즈니스 엔티티를 완벽히 단방향 격리하는 Classical Mapping 아키텍처를 설계함.
성과: 외부 프레임워크나 DB 오염 없이 순수한 핵심 도메인만 테스트할 수 있는 고신뢰 단위 테스트 환경을 구축함.
도메인 이벤트(Domain Event) 아키텍처 도입문제: 미디어 업로드 로직과 리워드 지급 보상 로직이 하나의 트랜잭션 안에 묶여 강하게 결합되어 있어, 리워드 지급 장애 시 업로드까지 함께 실패하는 신뢰성 문제 및 확장성 저하가 발생함.
해결: 도메인 이벤트 발행-구독 패턴을 지원하는 공통 EventHandler 버스를 자체 설계함.
성과: 미디어 업로드와 리워드 지급 로직 간의 물리적인 결합도를 완전히 제거하고, 향후 신규 비즈니스 리스너를 간편하게 추가할 수 있는 확장 구조를 확보함.