Skip to content

fresh-trash-project/fresh-trash-backend

Repository files navigation

🌱 중고 상품 플랫폼 Fresh Trash

로고 클릭시 노션페이지로 이동합니다.

fresh-trash-logo

spring-boot mariadb redis

Fresh Trash는 중고 상품을 판매, 구매, 경매 할 수 있는 온라인 플랫폼입니다.

  • Fresh Trash에 가입해서 집안에 안쓰고 자리만 차지했던 중고상품을 등록하고 판매, 나눔하세요.
  • 판매하고 싶은 상품의 가치를 잘 모르겠다면 경매를 등록해보세요.
  • 다른 유저가 등록한 중고상품를 살펴보고 구매해 보세요.
  • 마음에 드는 중고상품를 하세요.
  • 중고상품에 대해 궁금한 점이 있으면 실시간 채팅으로 물어보세요.

Project Architecture

architecture

3-Layered Architecture

architecture

API Documentation

추천 시스템

  • fresh-trash-recsys에 Python과 FastAPI를 활용하여 추천 시스템 서버를 구축했습니다.

Tech Stacks

Backend

spring_boot Spring Security RabbitMQ query_dsl websocket nginx

  • Spring Boot 로 애플리케이션 서버를 구축했습니다.
  • Spring Data JPA(Hibernate) 로 객체 지향 데이터 로직을 작성했습니다.
  • Spring SecurityJWT 기반의 로그인/회원가입 기능을 구현했습니다.
  • OAuth2 를 사용하여 구글, 네이버, 카카오를 통한 간편 로그인합니다.
  • Spring Mail(+ Email Validation API) 를 사용하여 이메일을 전송 및 유효성 검사를 합니다.
  • QueryDSL 로 컴파일 시점에 SQL 오류를 감지합니다. 더 가독성 높은 코드를 작성할 수 있습니다.
  • Spring WebSocket(+ STOMP) 로 유저간에 채팅을 할 수 있습니다.
  • Spring AMQP(RabbitMQ) 로 서버간의 의존성을 제거하고 고가용성을 보장합니다.
  • SSE(Server-Sent Event) 를 사용해서 서버에서 클라이언트로 알림을 전송합니다.
  • Nginx를 리버스 프록시로 활용하여 CORS 에러를 해결하고 HTTPS를 적용하여 보안을 강화했습니다.

Database

mariadb redis

  • 데이터베이스는 MariaDB를 사용합니다.
  • 캐싱을 위해 NoSQL 데이터베이스인 Redis를 사용합니다.

Data

grafana prometheus

  • Grafana 를 통해 성능 차트, 그래프 등을 시각화하여 모니터링합니다.
  • Prometheus 를 통해 모니터링을 위한 메트릭(metric)을 저장합니다.

AWS

ec2 s3 s3 s3 code_deploy

  • Amazon EC2 로 서버를 구축했습니다.
  • Amazon S3 를 사용하여 이미지를 저장, 관리합니다.
  • Amazon RDS 에서 데이터베이스를 관리합니다.
  • Amazon ElastiCache 로 메모리 데이터베이스 캐싱을 관리합니다.
  • CodeDeploy 로 지속적 배포(CI)를 진행합니다.

DevOps

github_action docker

  • GithubAction 으로 자동 배포, 코드 커버리지 측정, 코드 리뷰를 진행합니다.
  • Docker 로 일관성있는 개발 환경을 구축합니다.

Testing Tools

mockito jacoco codecov jmeter

  • Mockito 를 활용하여 단위(Unit) 테스트를 수행합니다.
  • JaCoCo 로 코드 커버리지를 측정하고, CodeCov 에 Report 를 업로드합니다.
  • Jmeter 로 부하 테스트, 동시성 테스트를 수행합니다.

ERD

ERD

주요 기능

  • 로그인
  • 회원가입
  • 사용자 정보
  • 중고상품 조회/등록/수정/삭제
  • 알림 기능
  • 1:1 채팅 기능
  • 경매 조회/등록/삭제
  • 경매 입찰/낙찰

About

fresh-trash 프로젝트의 backend 파트입니다.

Resources

Stars

Watchers

Forks

Languages