- G2nee Book Shop은 사용자가 책을 조회하고 주문할 수 있는 사이트입니다.
- 스프링 기술과 데이터베이스, 클라우드 서비스를 활용한 인터넷 도서 쇼핑몰 프로젝트입니다.
- URL: https://www.g2nee.shop
- 2024-03-11 ~ 2024-05-17
김수빈 |
김수현 |
박재희 |
신동민 |
정지은 |
---|
- 개발도구: 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
- 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
Github 제공하는
Projects
를 활용하여 전반적인 프로젝트 관리
- 시간
- 매일 13:10 Scrum Meeting 진행
- 회의 내용
- 금일 Scrum Meeting까지 진행한 내용
- 다음 Scrum Meeting까지 진행할 내용
- 진행하면서 어려웠던 사항
- 필요한 회의사항
- github RoadMap 활용으로 전체적인 일정 진행상황 관리
- 요구사항을 이슈로 작성해 역할을 분담한 후 일정 관리
- 개발 도중 발생하는 데이터베이스 수정사항을 반영하고 ERD Diagram, DDL 을 버전별로 관리
- 관리자가 배송 규정 수정(생성), 조회
- 관리자가 포인트 규정 생성, 수정, 조회, 삭제(soft delete)
- 관리자가 포장지 생성, 수정, 조회, 삭제(soft delete)
- 포장지 이미지 등록 가능
- 회원에게 쿠폰 발급: 일괄 발급, 개별 발급
- 마이페이지에서 쿠폰 목록 확인
- 다양한 결제 수단을 위해 Factory pattern을 적용
- tossPayment api를 사용한 결제
- 결제 시, 포인트 및 쿠폰 적용
- 결제 성공 시 재고 변경
- tossPayment api를 사용한 배송 전 결제 취소
- 주문서 생성
- 프론트에서 처리된 결과를 바탕으로 데이터베이스에 주문 및 주문상세 저장
- 회원, 쿠폰, 배송비, 배송 날짜 등이 유요한지 확인하여 예외 처리
- 관리자가 카테고리 등록, 수정, 조회, 삭제(soft delete)
- 카테고리 계층 구조 설계
- 로그인 시 auth server를 통해 JWT token 발급
- accessToken 만료시 auth server를 통해 JWT token 재발급
- redis의 refreshToken을 검증해 accessToken 재발급
- 로그아웃시 저장된 access/refresh token 초기화
- admin 쿠폰 조회
- admin 쿠폰 생성
- admin 주문 조회
- admin 주문 목록 조회
- admin 단일 주문 조회
- NHN Cloud Object Storage를 통한 파일 관리
- 파일 업로드, 수정, 삭제, 다운로드 처리
- 파일 Multiple 기능 : multiple로 생성 및 수정이 가능하도록 구현
- 관리자 페이지 출판사 등록, 수정, 조회 삭제
- 페이지네이션
- 관리자 페이지 저자 등록, 수정, 조회, 삭제
- 페이지네이션
- 관리자 페이지 저자 등록, 수정, 조회, 삭제
- 페이지네이션
- 관리자 페이지 도서 등록, 수정, 조회, 삭제(Soft Delete)
- 도서 등록 시 ToastUI WYSIWYG 적용
- 도서 판매, 절판, 매진, 삭제 상태 구현
- 도서 리스트 조회
- 도서 상세 조회
- 도서 좋아요 및 취소
- 회원 좋아요한 도서 목록 조회
- ELK 스택 사용
- Elasticsearch 인덱스 생성, 매핑
- Ngram, Nori 플러그인을 사용하여 분석기 설정
- Logstash를 이용 데이터 생성
- Kibana를 이용한 데이터 탐색
- 통합검색, 출판사, 참여자, 태그 별 검색
- 초성, 영문 오타 교정 검색
- 인기도순(조회수), 신상품순(출시일), 가격순, 평점순, 리뷰순으로 정렬
- 빈번한 내용 변경이 이루어지는 장바구니에 Redis를 적용하여 캐싱
- 장바구니 담기, 조회
- 장바구니 페이지 내에서 수량 조절 및 삭제
- 비회원은 쿠키를 사용하여 Redis에서 조회, 장바구니 정보는 30일간 유효
- 회원은 회원아이디를 사용하여 Redis에서 조회, 영구 유지
- 회원은 로그아웃 혹은 토큰이 만료되면 RDB에 Redis 정보를 복제하여 데이터 유지
- 리뷰 등록, 수정, 조회
- 회원만 등록 가능
- 별점 부여 (1 ~ 5)
- 리뷰 이미지 등록
- 리뷰는 1개만 등록
- 기본적으로 5개 조회하고 더보기를 누를 시 5개씩 추가 조회하는 페이지네이션
- 책 조회 시 평균 평점과 리뷰 개수를 함께 출력
- 포인트 사용이력 - Mypage에서 포인트 적립/사용 내역을 확인
- front server에서 페이지 접근 마다 Interceptor를 통해 token 검증 + 재발급
- 특정 권한이 필요한 page 접근 시 Interceptor를 통해 권한 확인
- 로그인후 회원의 기본 정보를 redis에 저장하여 빠른 조회가 가능하도록 설정
- 회원가입
- 회원가입 시 모든 input 값 유효성 검사
- 회원 아이디, 회원 닉네임 중복검사
- 비밀번호를 BCrypt를 사용해 암호화
- 회원 주소 관리
- mypage에서 관리 가능
- 주소 조회
- 주소 등록
- Daum 주소 API 사용
- 최대 10개까지 등록가능
- 주소 삭제
- redis를 사용해 회원기본정보 저장
- 회원 정보 수정
- mypage에서 수정 가능
- 회원 등급 조회
- mypage에서 조회 가능
- 회원 탈퇴
- 탈퇴시 회원의 상태를 변경하여 같은 아이디를 사용할 수 없도록 구현
- Mypage에 탈퇴기능 제공
- 주문서 생성
- 회원/비회원 모두 주문가능
- 바로주문과 장바구니 주문가능
- 배송받고 싶은 날짜 선택가능
- 주문하는 도서마다 정책에서 저장한 포장지를 불러와 선택
- 결제금액기준으로 정책에서 저장된 배송비기준을 적용해 배송비적용
- 결제금액기준으로 포인트 사용 가능
- 포인트 적립
- 회원가입/리뷰/도서구매시 정책에 저장된 적립률로 적립
- 도서구매적립시 주문Id도 함께 저장하여 반품 시 구매포인트를 다시 회수
- 도서구매사용시 주문Id도 함께 저장하여 반품 시 구매포인트를 다시 반환
- 포인트 결제
- 포인트를 사용하여 결제금액 차감 가능
- page별 HTML layout 설계
- 서버별 CI/CD 관리
- Jenkins : gateway 서버
- Github Actions : front, shop, eureka, batch, auth 서버 관리
- Jenkins: auth, gateway 서버 CI/CD 관리
- 데이터베이스 설계 및 ERD Diagram 작성
- NHN Cloud Load balance를 통해 front server 로드밸런싱
- Eureka를 사용한 스프링 클라우드환경 구축