이종관
프로젝트 목록으로

MeetX — 소셜 매칭 서비스

FastAPI 기반 소셜 매칭 플랫폼 풀스택 개발

·2025.12 - 현재·풀스택 설계 및 개발
FastAPI
SQLAlchemy
PostgreSQL
React
Vite
Tailwind CSS
Docker
GitHub Actions

배경

퇴사 후 참여한 외부 프로젝트로, 사용자가 연락처를 익명으로 등록하면 프로필을 조회한 상대방과 매칭되어 연결 기회를 제공하는 소셜 매칭 플랫폼입니다. 초기 Django 프로토타입으로 시작했으나, 동기 우선 모델과 무거운 ORM이 경량 API 서비스에 적합하지 않았고, 비동기 처리가 필요한 실시간 매칭/알림 기능에 한계가 있었습니다. 비즈니스 로직이 라우터에 혼재되어 테스트와 유지보수도 어려운 상황이었습니다.

해결 과정

3단계 진화 전략: Django 프로토타입으로 시작한 뒤, FastAPI + SQLAlchemy 2.0 async + uv 패키지 매니저로 전면 재구성했습니다. 이후 Router → Service → Repository DDD-lite 레이어드 아키텍처로 전환하여 도메인 로직의 독립성을 확보했습니다.

트랜잭션 무결성: 복합 비즈니스 연산(회원가입, 결제, 계정 통합)에서의 데이터 정합성 문제는 UnitOfWork 패턴으로 해결했습니다. SQLAlchemy 세션을 컨텍스트 매니저로 감싸 여러 리포지토리 작업을 하나의 트랜잭션으로 묶었습니다.

3사 결제 통합: Apple IAP, Google Play Billing, Toss Payments를 결제 상태 머신(Pending → Confirmed → Completed/Refunded/Cancelled)과 PaymentEvent 이벤트 소싱으로 통합했습니다. 단일 커밋에서 12개 결제 엔드포인트와 전 계층 테스트 코드를 함께 작성했습니다.

소셜 로그인 및 계정 통합: Kakao, Naver, Google 3사 OAuth를 통합하고, 동일 이메일 기반 자동 계정 연동과 SMS 폰 인증 후 수동 계정 연동을 모두 지원했습니다. 리팩토링에서 기능을 추가하면서도 코드 구조를 개선하여 순 코드량 감소를 달성했습니다.

프론트엔드 모듈화: 단일 App.jsx 모놀리스를 37개 모듈(18페이지 + 7컴포넌트 + 10 API 모듈 + 2레이아웃 + 2컨텍스트)로 분해하고, Axios 기반 토큰 자동 갱신 HTTP 클라이언트를 구축했습니다.

성과

  • 50개 API 엔드포인트, 13개 서비스, 8개 리포지토리, 13개 엔티티로 구성된 DDD 아키텍처
  • 테스트 커버리지 66% → 82% 달성, testcontainers 기반 실제 PostgreSQL 통합 테스트 환경 구축
  • 3사 결제 + 3사 소셜 로그인 통합, 단일 커밋에서 결제 12개 엔드포인트 + 테스트 코드 일괄 구현
  • GitHub Actions 3개 파이프라인(CI, staging, production), EC2 테스트 서버 운영 중