공부/개발일지

[Spring 리팩토링 프로젝트] Potato Market Project refactoring-1

Neulbo 2022. 5. 24. 12:49

4학년 1학기 때 만든 프로젝트를 리팩토링해보려한다!

회사 다니고 있는 동기언니랑 같이 하려는! 우리의 포테토마켓웹사이트 만들기!

주제 및 개요

- 당근 마켓을 모티브 한 거래 플랫폼 개발

 

세부기능

- 메인 화면 : 신상품 추천
- 직거래, 공동 구매 : 등록/수정/삭제, 구매 예약, 관심 항목 추가/삭제, 장바구니
추가/삭제, 구매
- 경매 : 등록/수정/삭제, 관심 항목 추가/삭제, 입찰, 낙찰 및 장바구니 추가, 낙찰
포기, 후순위자 낙찰, 구매
- 회원 간 메세지
- 카테고리 별 상품 검색
- 회원 관리 : 회원 가입/로그인, 회원 정보 수정, 관심 항목/구매 내역/등록 및 판매
내역 조회

 

[회의 결과]

기존 Eclipse 를 이용하였지만 IntelliJ 를 이용하여 만들어 보기로 했다.

 

# 2022.05.21 #

Potato Market Project refactoring Start

# 개선점 찾기

1. 패키지 구조

As Is

- 현재 큰 프로젝트안에 컨트롤러, 서비스, 도메인 패키지가 존재하고 모든 파일이 해당 패키지에 때려박아져 있음

To Be

- 큰 틀의 객체를 기준으로 상위 패키지를 구성하고 하위에 컨트롤러, 서비스, 모델이 들어가도록 설정한다.
- Account(회원가입, 로그인-소셜로그인, 회원정보 수정, 장바구니 등)
- Order(각종 구매, 주문 내역)
- Item(상품 등록, 수정, 삭제, 판매 내역)
- Chat
- * 디비 스키마가 정해지면 구체화될 예정

1. 디비 스키마

** 우선 각자 생각해서 개선점을 찾아 디비 스키마 작성하고 27일에 다시 회의 예정 **

1. MyBatis

Mybatis가 아닌 jpa를 활용해보자

1. MySQL을 그대로 사용하는 것이 좋을지 고민해보기

1. 도메인 활용이 필요할듯!

As Is

- 기존의 모든 타입에 대한 객체들을 독립적인 객체로 설계
- 덩달아 서비스단도 따로 놀고 있음

To Be

- 공통적인 부분( 제목, 가격, 상세 설명 등) 을 추출해 abstract클래스 Item을 만들고 중고거래, 경매, 공동구매에 해당하는 자식 클래스를 만들어서 상속받게 함
- 아이템 관련 서비스를 인터페이스로 정의
- 서비스에서는 트랜잭션을 관리하도록 하고 Reader나 Store같은 컴포넌트를 활용

 

1. 사진업로드

 

AWS - S3 공부가 필요해보임

 

1. 결제

 

결제 서버 - MSA 개발 여건이 된다면 해보면 좋을 듯 

 

 

우리가 개발한 것

https://drive.google.com/file/d/1SOKopOyTmkz2eivGYQqR-nkL6Nxd91oa/view?usp=sharing 

 

potatoMarket.mp4

 

drive.google.com