← 프로젝트 목록으로
기간 2021.12 ~ 2022.03 역할 Backend Engineer

PIECE

미술품 조각 투자 플랫폼

FastAPI Python SQLAlchemy MySQL RabbitMQ WebSocket JWT Pydantic ASGI (Gunicorn/Uvicorn)

서비스 소개

고가의 미술품을 조각 단위로 나누어 소액으로 투자하고 포트폴리오를 관리하는 핀테크 투자 플랫폼입니다. FastAPI 기반 마이크로서비스 아키텍처를 설계·구축하여 금융 거래의 안정성과 확장성을 확보했습니다.

마이크로서비스 아키텍처

도메인별로 독립적인 8개의 서비스로 분리하여 결합도를 최소화하고, 각 서비스의 독립적인 배포와 확장을 가능하게 했습니다:

  • 사용자/인증 서비스 — JWT 기반 회원가입·로그인·토큰 재발급, 프로필 관리, 북마크, PIN 설정
  • 상품 서비스 — 미술품 정보·조각 단위·가격 관리
  • 구매 서비스 — RabbitMQ 기반 비동기 구매 요청 처리
  • 입금 서비스 — 결제 처리 및 잔액 관리
  • 포트폴리오 서비스 — 보유 자산·수익률 계산 및 조회
  • 게시판 서비스 — 커뮤니티 게시글·댓글 관리
  • 알림 서비스 — 푸시 알림 발송 관리
  • WebSocket 서비스 — 실시간 양방향 통신, 구매·포트폴리오 상태 실시간 업데이트

핵심 개발 내용

  • 비동기 구매 처리 파이프라인 — RabbitMQ 메시지 큐를 활용한 구매 요청 비동기 처리, 동시 구매 시 재고 관리 및 Race Condition 방지
  • 실시간 알림 시스템 — WebSocket 기반 양방향 통신으로 구매 상태·입금 확인 등 실시간 업데이트 제공
  • SQLAlchemy ORM 모델링 — 사용자·상품·구매·포트폴리오 간 관계 설계, N+1 쿼리 최적화 및 인덱싱
  • JWT 인증 및 권한 관리 — Access/Refresh Token 기반 안전한 인증, 사용자 등급별 API 접근 제어
  • Pydantic 데이터 검증 — Request/Response 스키마 정의, 타입 힌팅 및 자동 문서화
  • ASGI 프로덕션 배포 — Gunicorn 프로세스 관리 + Uvicorn 워커로 고성능 비동기 처리 환경 구축
  • API 문서 자동화 — FastAPI의 OpenAPI(Swagger) 자동 생성으로 프론트엔드 협업 효율화

기술적 도전과 해결

  • 동시 구매 처리 — 여러 사용자가 동시에 같은 조각을 구매할 때 재고 초과 방지를 위해 RabbitMQ의 메시지 큐를 활용하여 순차 처리 보장
  • 서비스 간 데이터 일관성 — 분산 트랜잭션 대신 이벤트 기반 아키텍처로 최종 일관성(Eventual Consistency) 구현
  • WebSocket 연결 관리 — 사용자별 WebSocket 세션 관리 및 재연결 처리, 메모리 누수 방지
  • 금융 데이터 정합성 — 포트폴리오 계산 로직의 정확성 보장, 소수점 처리 및 Decimal 타입 사용