Skip to content

leewooyup/PROJECT_LOTDIZ

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 

Repository files navigation

🛒 Project _ LOTDIZ

Project Summary

✔️ 프로젝트 명

크라우드 펀딩 쇼핑몰 LOTDIZ

✔️ 프로젝트 기간

2023.09.04 ~ 2023.11.03

✔️ 홈페이지 url

https://lotdiz.lotteedu.com/

✔️ 관리자 페이지 url

https://admin.lotdiz.lotteedu.com/

✔️ 프로젝트 설명

롯디즈 서비스는 펀딩 개설자(메이커)와 후원자(서포터)간의 펀딩 거래를

중개하는 온라인 중개 플랫폼입니다.

✔️ 기술 스택

기술스택


01. 팀 소개

✔️ 팀 ‘ OJJOK ’

이름 주 포지션 세부 담당 GITHUB 주소
이상원 Leader
Back
Front
Infra
Project Service
- 프로젝트 등록하기
Notification Service
- 배송 시작 알림, 목표 금액 달성 알림
- event-bridge와 sqs를 이용한 주기적 알림 구성
https://github.com/nowgnas
이우엽 Back
Front
Member Service
- 회원가입 및 이메일 인증, 로그인 (인증, JWT 토큰 발급), 로그아웃
- 마이페이지 (서포터 활동 내역 + 회원 정보 조회 및 수정)
- 찜 조회, 삭제
APIGateway Service
- JWT를 통한 인가 로직 구현
Payments Service
- 멤버십 가입 (단건 결제)
https://github.com/leewooyup
이진우 Back
Front
Funding Service
- 펀딩 결제
- 펀딩 내역 조회
- 펀딩 상세 내역 조회
https://github.com/binarywoo27
이채민 Back
Front
Infra
Admin Service
- 회원 정보 조회, 메이커 정보 조회
- 프로젝트 정보 조회 및 프로젝트 인증
- 각 정보 통합 검색
Delivery Service
- 배송 조회
Notification Service
- 알림 조회, 프로젝트 마감 및 프로젝트 미달성 알림
Infrastructure
- MicroService 별, 개별 컨테이너 환경 AWS Fargate EKS를 사용하여 구축 → 운영과 관리의 편리함을 고려하여 Serverless 환경 도입
- MicroService 단위의 DB 독립적으로 구축 → 하나의 Pod에 App과 DB를 두어 생명주기를 함께하도록 구성
- AWS EFS & Kubernetes Persistent Volume 및 Claim을 사용한 DB 정보 독립적으로 영구 저장환경 구축
- Kubernetes Rolling Update 전략으로 Pod 재배포시 Service의 Downtime을 제거
- AWS NLB를 사용하여 Spring Cloud API Gateway의 엔드포인트를 외부로 노출
- AWS Route 53 + AWS Certificate Manager + AWS NLB를 연결해 DNS → Load Balancer로 라우팅
- EventBridge + SQS를 사용한 이벤트 스케줄러 구축
- SNS + SQS를 사용한 이벤트 기반 Pub/Sub 환경 구축
- Cloudfront + S3 웹 퍼블리싱 기능을 사용하여 Vue App 구축
- Github Actions Workflows를 사용하여 각 마이크로서비스 및 프론트엔드 CI/CD 구축
- 각 마이크로서비스 로깅을 위한 CloudWatch와 연동후 로그 모니터링
https://github.com/CokeLee777
최소영 Back
Front
Project Service
- 메인 페이지 (배너, 베스트 롯딜, 마감임박순 롯드+)
- 프로젝트 리스트 조회 (롯드+, 롯딜, 기획전 조회)
- 프로젝트 리스트 상세 조회 (상세 정보, 지지서명, 함께 하는 서포터)
- 지지서명 작성, 수정
https://github.com/cso6005

02. 프로젝트 기획

✔️ 주제 선정 방식

⇒ 마인드 맵을 통해 기획

mindmap


✔️ 주제 선정 이유 및 기획 의도

온라인 쇼핑몰 웹사이트 제작을 위해 이커머스와 유사한 경매 서비스와 티켓팅, 공동구매를 떠올리게 되었습니다.

동시성 처리와 트래픽을 고려해 티켓팅과 공동구매에서 많은 아이디어가 나왔습니다.

투자와 펀딩에서 다양한 기술을 경험할 수 있다는 점에서 펀딩 플랫폼을 선정하게 되었습니다.


✔️ 주요 기능

🛒 메인 기능

  • 회원
    • 회원 가입 / 로그인, 로그아웃 / 개인 정보 조회, 수정
    • 상품 찜 누르기, 찜 조회, 찜 삭제
  • 프로젝트
    • 프로젝트 리스트 페이지
      • 카테고리 별, 롯드+ 조회 / 기획전 롯드+ 조회 / 베스트 롯드+ 상품 조회 / 롯딜 조회
    • 프로젝트 상세 페이지
      • 프로젝트 상세 조회
      • 지지서명 조회, 작성, 수정
      • 함께 하는 서포터 조회
  • 롯딜 프로젝트
    • 특가 할인 적용 이벤트
  • 펀딩
    • 프로젝트 펀딩 및 취소 환불
    • 펀딩 내역 조회 / 펀딩 상세 내역 조회
  • 멤버십
    • 멤버십(펀딩 프렌즈 / 펀딩 파트너) 가입
  • 알림
    • 목표 펀딩 금액 달성 알림
    • 프로젝트 마감 알림 / 목표 펀딩금액 미달성 알림
    • 배송 시작 알림

🙋‍♀️ Maker 전용 기능

  • 프로젝트 개설
    • 프로젝트 등록
  • 펀딩 관리
    • 등록한 프로젝트 목록, 상세 조회
    • 각 프로젝트에 대한 펀딩 내역 조회
    • 펀딩 내역 건에 대한 배송 시작
  • 알림
    • 목표 펀딩 금액 달성 알림
    • 프로젝트 마감 알림 / 목표 펀딩금액 미달성 알림

🧑‍💼 Back Office

  • 회원, 메이커, 프로젝트 조회 및 검색
  • 프로젝트 관리
    • 프로젝트 인증

03. 프로젝트 설계

✔️ USE CASE

Untitled (1)


✔️ 와이어 프레임

https://www.figma.com/file/d8jErJg73JWxxqms1BYZ2F/%EB%A1%AF%EB%94%94%EC%A6%88?type=design&node-id=1158-14&mode=design&t=TV939ndKw3PjmX8l-0


✔️ ERD

LOTDIZ (1)


✔️ 아키텍처

Untitled (2)

04. 프로젝트 수행 내용

✔️ 프로젝트 진행 및 협업 방식

  1. 데일리 스크럼
    • 매일 정해진 시간에 스크럼 미팅을 통해 진행 상황을 공유하고 전날의 성과와 그날의 계획, 그리고 겪고 있는 어려움을 공유하였습니다.
  2. 회의록 작성
    • 모든 회의에 대한 내용을 작성하여 팀원들 간의 결정 사항을 기록하였습니다.
  3. 문서화
    • 노션
    • 마인드맵
    • 요구사항 명세서
    • ERD
    • Use-Case diagram
    • 아키텍처
    • API 명세서
    • 포스트맨
  4. 스케줄 달력
    • 일정, 공지, 업무 마감일을 스케줄 달력에 기록하여 전체 프로젝트 일정을 관리하였습니다.

✔️ 개발 및 기술 구현 결과

  • 회원
    • 인증 및 인가(JWT) 외부로부터의 요청은 단일 진입점인 Spring Cloud Gateway을 거쳐 (Authorization) Filter를 탄다. ( 단, 로그인/회원가입 요청만 Spring Cloud Gateway의 Filter 거치지 않음. )

      Member-Service에서 로그인 시 DB의 이메일 및 비밀번호가 입력한 값과 일치한다면, JWT Token 발급. 브라우저의 Local Storage에 TOKEN을 저장.

      이후, 회원만 할 수 있는 요청에 대해 Spring Cloud Gateway의 필터에서 토큰 유효성 검사를 시행. 토큰이 유효하다면, 정보를 꺼내 ‘회원(Member)’의 고유 id인 memberId를 Header에 넣어준다.

      해당 과정을 거쳐 유효한 회원과 비회원을 구분하고, 이에 따라, 접근할 수 있는 페이지에 제한을 둔다.

    • 멤버십 가입 Kakao Payments API(단건 결제)를 이용하여, 멤버십 가입을 진행. 단건 결제 과정은 ‘준비 요청’과 ‘승인 요청’으로 나뉜다.

      준비 요청에서, 멤버십 명, 멤버십 가격, 가맹점 코드, approval_url 등의 값을

      Kakao Payments Server로 보낸다. 준비 요청이 완료되면 Kakao Payments Server가 보내주는 응답 중 하나인 값인 ‘next_redirect_pc_url’을 클라이언트로 넘겨 카카오 결제 QR코드가 팝업 창으로 뜨게 한다.

      사용자가 결제 정보를 입력하고, 결제하기 버튼을 누르면, 준비 요청 때 보내주었던

      approve_url로 요청이 보내지고, Kakao Payments Server에 최종적인 승인 요청을 보내게 된다. Kakao Payments Server에서 정상적인 응답이 오면, DB에 최종적인 결제 정보를

      넣고, 트랜잭션 처리하여 결제처리를 완료딩


✔️ 회고

이름 내용
이상원 msa 환경에서 서비스에 적절한 테이블 분리와 클래스 설계가 잘 이뤄졌으며, 이후 프로젝트에서는 성능에 대한 고민과 함께 설계를 진행하고 싶습니다. jpa의 영속성에 대한 더 깊은 이해가 필요하다고 느꼈으며, 데이터베이스 성능에 대한 학습과 고민을 통해 프로젝트에 적용해 보고 싶습니다. 프론트 기술스택에 대한 이해가 부족해 기술을 제대로 사용하지 못한 것이 아쉽습니다. 이후 프로젝트에서는 효율적인 협업과 코드리뷰로 잘 설계된 프로젝트를 수행하고 싶습니다.
이우엽 Spring Security와 JWT에 대해 배우고 적용하는 부분에서 동작원리에 대해 시행착오를 많이 겪으면서, 많이 배울 수 있었습니다. 이 과정에서 Spring Security에서 더 깊게 알아보고자 하는 욕심도 생겨서 더 파보고 싶습니다. 이번 프로젝트에서 github 활용이나 협업하는 방식에 대해 가장 많이 배울 수 있었습니다.
이진우 -
이채민 -
최소영 MSA, VUE3, Kafka 등 처음 시도하는 기술 스택이 많은 만큼 배운 점이 많은 프로젝트였습니다. 맡은 기능을 모두 구현하였지만, 코드 리펙토링, 디벨롭을 하지 못해, 아쉬움이 있습니다. 이번 프로젝트를 통해, 각 서비스에 적합한 설계를 찾으며, 탄탄하게 설계를 하는 것이 얼마나 중요한지 알게 되었습니다. 좋은 팀원을 만나서 좋은 결과물을 얻을 수 있었고, 또, 잦은 회의와 소통을 통해 짧은 가간에도 프로젝트를 원활하게 진행할 수 있었던 것 같습니다.

About

크라우드 펀딩 쇼핑몰 LOTDIZ

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published