- My-Books는 고객이 책을 검색하고 주문할 수 있는 인터넷 서점입니다.
- 스프링 기술과 데이터베이스, 클라우드 서비스를 활용한 인터넷 도서 쇼핑몰 프로젝트
- URL: https://www.my-books.store
- 2024-02-05 ~ 2024-03-29
박민수 |
신재훈 |
이담호 |
이승재 |
정재현 |
---|
- 개발도구: Intellij IDEA - Ultimate
- 언어: Java 11 LTS
- 빌드도구: Maven
- 개발
- Spring Framework: 5.3
- Spring Boot: 2.7.18
- Spring Cloud
- Spring Cloud Gateway
- Spring Cloud Netflex(Eureka)
- Spring Cloud Config
- Spring Data
- Spring Data JPA
- Spring Data Elasticsearch
- Spring Data Redis
- Spring Batch
- Spring Rest Docs
- JPA
- QueryDSL
- 테스트
- Junit5
- AssertJ
- Mockito
- SonarQube
- 데이터베이스
- MySQL: 8.0.25
- Redis
- 검색엔진
- Elastic Search: 7.11.1
- ERD
- ERDCloud
- UI
- BOOTSTRAP5
- TOAST UI
- NHN Cloud
- Instance
- Secure Key Manager
- Object Storage
- Load Balancer
- 기타
- Dooray Hook Sender
- GitHub Projects의 Road Map 사용
Github 제공하는
Projects
를 활용하여 전반적인 프로젝트 관리
- 일주일 마다 Scrum Master 맡아서 매일 9:00 진행
- 지난날에 했던 일, 이제 할일, 특이사항등을 정리하여 체계적으로 프로젝트 진행
- RoadMap 활용
- 일정 진행 상황 관리 및 공유
Road Map
- Kanban 활용으로 실시간 진행 상황 관리 및 공유
Kanban
- rest docs 활용으로 사용자 친화적인 문서 제공
RESOURCE : https://www.my-books.store/api-docs
- 담당자 : 이승재
- 회원가입 , 수정 , 탈퇴 ,조회
- 회원가입 시 유효성 검사 및 중복검사 , dooray message hook을 이용한 인증
- 회원 비밀번호는 BCrypt 를 사용해 암호화 하여 DB에 저장
- payco 로그인 API 추가
- 회원 등급
- 등록 , 조회
- 회원 등급은 추가시 기존의 등급을 자동으로 대체 (기존 등급은 비활성으로 변경)
- 회원 상태
- 조회
- 활성 , 휴면 , 잠금 , 탈퇴
- 담당자 : 이승재
- Filter, Interceptor , AOP , JWT 사용
- 담당자: 신재훈, 박민수
- 출판사 등록, 수정, 삭제
- 담당자: 신재훈, 박민수
- 저자 등록, 수정, 삭제
- 한명의 저자에 대해 소개글을 추가로 입력하여 저자 구분
- 담당자 : 이담호
- 카테고리 생성, 수정, 조회
- 1단계, 2단계, 3단계 카테고리로 이루어진 3차원 형태
- 담당자 : 이담호
- 태그 생성, 수정, 삭제
- 담당자 : 정재현
- 파일 업로드, 수정, 삭제, 다운로드 처리
- 오브젝트 스토리지에 파일을 저장할 수 있다
- 파일 Multiple 기능
- 파일은 multiple로 생성 및 수정이 가능하다
- 담당자: 신재훈
- 상품 등록, 수정, soft delete
- ToastUI 사용
- 상품 상세조회
- 관리자용 상품 요약 조회
- 담당자: 신재훈
- 상품의 좋아요 및 취소
- 회원용 좋아요한 상품 요약 조회
- 담당자: 신재훈
- ELK 사용
- Elasticsearch에서 데이터 저장 및 인덱싱
- Logstash를 이용하여 데이터 입력
- Kibana를 이용하여 데이터 탐색
- Ngram, Nori 분석기를 이용한 상품 검색
- 정확도순(가중치), 인기도순(조회수), 신상품순(출시일), 가격순, 평점순, 리뷰순으로 정렬
- 담당자 : 정재현
- 빈번한 내용 변경이 이루어지는 장바구니에 알맞게 Redis 적용
- DB의 부하를 줄이고 빠른 응답을 통한 사용성 확보
- 메인 페이지에서 보여지는 각각의 책 목록들 캐싱
- 담당자: 정재현
- 장바구니 페이지 내에서 수량 조절 및 삭제 가능
- 장바구니 수정 등록 삭제 조회 가능하도록 구현
- 비회원 장바구니는 쿠키로 구현
- 회원 장바구니는 redis, mysql 을 이용하여 구현
- 수량은 1 부터 해당 책의 재고 까지 설정
- 도서 상태가 판매중이 아닐경우 장바구니안의 해당 도서 삭제
- redis의 Pub sub, Phantom Key를 사용하여 Redis의 TTL 만료 시 DB 자동저장을 통한 데이터 영구 저장 및 복원
- 담당자 : 박민수, 이승재
- 주문 생성 및 조회
- 주문자의 기본 주문 정보
- 특정 주문 상태에서만 주문 취소
- 담당자 : 박민수
- 결제 생성 및 수정
- toss payment API 사용
- 담당자 : 이담호, 박민수, 이승재
- 포인트 내역 생성 조회, 포인트 적립
- 리뷰, 상품 구매, 등급 별 포인트 부여
- 정책에 따라 적립
- 담당자 : 이담호
- 쿠폰 생성, 삭제, 조회
- 생일쿠폰 발급
- Spring Bach 사용
- 담당자 : 이승재
- 주소 등록 , 수정 , 삭제 , 조회
- Daum 주소 api 를 이용해 우편번호 , 도로명 주소 조회
- 최대 10개까지의 주소 저장
- 담당자 : 이승재
- 리뷰 등록, 수정, 조회
- 별점 부여 가능 (1 ~ 5)
- 구매인만 리뷰 작성 가능
- 리뷰는 구매한 도서당 1회만 작성 가능
- 리뷰 작성시 포인트 적립
- 책 조회시 전체 리뷰 개수와 평점의 평균을 함께 보여줌
- 담당자 : 정재현
- 배송 규정명 등록, 수정, 조회, 삭제
- 배송 규정 등록, 조회, 수정, 약삭제
- 배송 규정은 상태 값으로 활성화 비활성화로 약 삭제를 함
- 담당자 : 박민수, 신재훈
- Github Actions: front, resource, eureka, batch 서버 CI/CD 관리
- Jenkins: auth, gateway 서버 CI/CD 관리
- 프론트 서버의 Nginx 웹 서버 설치 및 L4 적용
- 유레카: client server의 상태를 관측하기 위한 도구
- 담당자 : 정재현
- logback 사용
- 각 api 서버에 대해 운영 환경별로 로그 레벨 설정
- 로그 파일 생성