Skip to content

helloJosh/bookstore-3runner

Repository files navigation

bookstore-3runner

3조업고튀어(3runner)

배포 사이트 들어가기 : 📚3runner.shop (8/30일 부로 MySQL, Redis, RabbitMQ, Elasticsearch 지원이 끊겨 웹사이트가 닫혔습니다)

시연 영상 보기 👇🏼

Watch the video (사진을 클릭하면 시연 영상을 볼 수 있습니다)

1. 팀원

2. 업무 분담 및 주요기능

김병우

담당

  • 장바구니
    • 비회원, 회원 장바구니 REST API 구축과 UI 구현
  • 주문
    • 회원,비회원 주문 프로세스 REST API 구축과 UI 구현
    • 행안부 주소도로명 API 연동
    • TOSS PAYMENTS API, 결제 서비스 트랜젝션 연동 구현
  • 쿠폰
    • 쿠폰 REST API 구축과 UI 구현
    • 높은 트래픽을 안정적으로 처리하기 위해 쿠폰 발급 요청시 Redis로 데이터를 모으고 RabbitMQ로 Spring Batch에 데이터를 보내 10분 배치로 DB에 인서트
  • 포인트
    • 포인트 REST API 구축과 UI 구현하였습니다.
    • 포인트 정책 REST API 구축과 UI 구현하였습니다.
  • 인프라
    • Spring Eureka, Spring Gateway, Docker compose를 사용하여 CI/CD 구현

김은비

담당

  • 카테고리 (CRUD)
    • 2단계 이상 자기 참조 카테고리 구현
    • 메인 페이지 카테고리 전체 조회 UI 구현
  • 도서
    • 도서 페이지 조회/정렬 (이름순, 조회순, 좋아요순, 가격순) - 내림차순/오름차순 구현
    • 메인/도서 상세 페이지 UI 구현
  • 리뷰 (CRUD)
    • 등록 : 자신이 구매한 도서에서만 작성이 가능하도록 구현 (toast ui 이용, 이미지 등록 가능)
    • 삭제 : 관리자 권한 확인/삭제 사유 적은 후 soft delete -> 각종 조회 시 리뷰 상태가 delete인 경우 조회에서 제외되도록 구현
    • 조회 : 마이페이지에서 자신이 작성한 리뷰 페이지/ 도서 상세 페이지에서 해당 리뷰 페이지 조회/정렬(추천순/날짜순)되도록 구현
  • 도서-좋아요 (CRD)
  • 리뷰-좋아요 (CRD) : 자신이 작성한 리뷰에서는 좋아요 추가되지 않도록 구현
  • 리뷰-댓글 (CRD)
  • 인프라
    • Git, GitAction, Docker로 네트워크를 설계 프로젝트의 유지보수성 높임
  • Spring cache
    • redis cache를 이용해서 메인 페이지(도서 조회/카테고리 조회) 성능 약 96% 개선 (5000개의 요청이 갔을 때 6092ms -> 240ms)
  • 프론트
    • 타임리프 레이아웃(header, footer, sidebar, login_check.js) 설정

오연수

담당

  • 회원
    • 멤버 정보 수정 및 삭제 구현
    • 멤버 인증 정보 관련 API 작성
    • JWT, Redis 활용한 인증 시스템 구현
    • 로그인 및 로그아웃 기능 구현
  • 스프링 게이트웨이
    • 클라이언트 요청을 각 서비스로 라우팅하고, JWT를 검증하여 유효한 요청만 전달

유지아

담당

  • 회원
    • 회원가입 및 탈퇴 구현
    • 로그아웃 구현
    • 멤버 정보 조회 구현
    • 멤버 정보 삭제 조회
    • Payco 인증 구현
    • 휴면 상태 인증번호로 인증 후 해지 구현
  • 스프링배치
    • 회원 구매 비용 주기적으로 확인하여 등급변경 구현
    • 회원 마지막 접속일 주기적으로 확인하여 휴면 상태 변경

정주혁

담당

  • 주문
    • 주문 내역 조회 (회원, 비회원) UI 구현
    • 주문 내역 상태 변환 구현
    • 주문 환불 구현 및 결제 취소 구현 및 UI 구현
    • 회원 주문 및 장바구니 서비스 구현
  • 도서
    • 북 태그 서비스 구현
  • ERD
    • 관리 및 보수

한민기

담당

  • 도서
    • 도서 REST API 구축
    • 도서 설명에 Toast UI를 적용시켜 다양한 방식의 도서 설명 활용성을 증가
    • 도서 이미지를 object storage에 저장하여 유지보수를 높임
    • 알라딘 API를 통해 도서 등록 기능 구현
  • 검색
    • 도서 검색 REST API 구축
    • Elastic Search 도입으로 2.7배 속도 개선
    • Elastic Search nori, ngram을 적용하여 Full Text Search 구현
    • Elastic Search 사전 정의어, 동의어, 금지어 구현
  • 스프링 배치
    • 배치 서버를 통해 Elastic Search 데이터 입력 및 백업 데이터 생성
  • front
    • Spring Security를 사용하여 회원의 인증, 인가 확인 기능 구현
  • 기타 편의기능
    • Log & Crash Search 적용하여 로그 수집
    • Key Manager 적용하여 정보 보안
    • Rest Doc, Swagger 사용하여 API 명세서 적용

3. ERD

Copy of bookstore

  • 꾸준히 변경할 때 마다 버전 관리하여 0.05버전이 최종 버전이 되었습니다.

DB관리자

4. 아키텍처

systemarchitecture drawio

네트워크 설계

  • Spring Gateway가 각 서버를 효율적으로 찾아가기 위해 Spring Eureka를 사용하여 서버의 내부 정보를 캐싱하여 네트워크를 설계하였습니다.
  • Client Side 로드밸런싱을 하기위해 OpenFeign을 사용하여 각 서버에 효율적으로 접근하도록 네트워크를 설계하였습니다

인증

  • 여러 서버에서 같은 토큰으로 인증을 관리하기 위해서 JWT 토큰을 도입하였습니다.

5. 프로젝트 관리

체계적이고 효율적인 관리를 위해, Github Project을 활용하여 프로젝트를 진행하였습니다.

BackLog, RoadMap 활용

image

  • 매일 9:30에 RoadMap과 BackLog를 활용하여 스크럼 회의를 진행했습니다.

Scrum

image

  • 스크럼은 평일, 하루에 한 번씩 진행하였습니다.

Issue관리

image - 개발시 Issue가 나왔을때 Issue관리를 통해서 해결하였습니다.

Manage

image

  • git flow branch 전략은 main/develop/feature로 나누어 개발을 하였습니다.
  • feature는 각각 기능을 만들때 사용하였고
  • develop은 기능이 완료되고 확인이 되었을때 pr을 올려 merge를 진행했습니다.
  • main은 배포시에 merge를 진행하였습니다.

PR, CodeReview

Screenshot 2024-07-16 at 7 52 31 PM

  • 완성되지 않은 코드도 PR로 올려 팀원들이 코드리뷰를 지속적으로 진행하였고
  • 팀원들이 전부 한번씩 확인해야만 코드를 merge할 수 있게 하였습니다.

일정관리 - WBS

Screenshot 2024-07-16 at 7 54 54 PM

  • 일정은 도서, 주문, 회원 파트로 나누어서 일정을 유연하게 관리하였습니다.
  • 처음부터 중요도가 있는 파트에 일정을 배분하였습니다.

6. REST API Specification

스크린샷 2024-07-18 14 55 50

  • Spring REST DOC을 사용하여 API 명세서를 만든 후 Swagger UI를 사용하였습니다.

7. 테스트 커버리지

북스토어 API 서버 테스트 커버리지

image

쿠폰서버 API 테스트 커버리지

image

기술

  • Spring
    Spring Spring Boot Spring Security Spring Session Spring Batch Spring Cloud

  • DB
    Redis Redis

  • CI/CD
    Jenkins Github Actions Docker iCloud Nginx Ubuntu

  • Search
    Elastic Elastic Stack Elastic Search

  • 그 외 기술
    JavaScript HTML5 CSS3 CSS3 JAVA Hibernate JPA QueryDsl
    SonarLint SonarQube JWT RabbitMQ ApacheMaven Toss Payments Swagger

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •