Skip to content
@nhnacademy-be5-t2m

nhnacademy-be5-t2m

📖 G2nee Book Shop

  • 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

사용 기술

언어

Java

Framework

Spring Spring Boot SpringDataJPA
Spring Cloud Gateway Spring Eureka
JWT Hibernate QueryDSL

Build Tool

Apache Maven

DataBase

MySQL Redis

CI/CD

Github Action Jenkins

DevOps

NHN Cloud SonarQube

ETC

Git GitHub Junit5
IntelliJ IDEA SonarLint DataGrip
Elasticsearch Linux Ubuntu

Front

Thymeleaf Bootstrap5 JavaScript


아키텍쳐 구조

image


CI/CD

image


ERD

image


테스트 커버리지

  • 목표 : Line Coverage 80% 이상 (2024년 5월 10일 (금) 기준 35%) image

Project Management

Github 제공하는 Projects를 활용하여 전반적인 프로젝트 관리

Scrum

image

  • 시간
    • 매일 13:10 Scrum Meeting 진행
  • 회의 내용
    • 금일 Scrum Meeting까지 진행한 내용
    • 다음 Scrum Meeting까지 진행할 내용
    • 진행하면서 어려웠던 사항
    • 필요한 회의사항

일정관리

  • github RoadMap 활용으로 전체적인 일정 진행상황 관리
  • 요구사항을 이슈로 작성해 역할을 분담한 후 일정 관리

image

  • github Kanban 활용으로 실시간 진행 상황 관리 image

기능

김수빈

데이터베이스 관리

  1. 개발 도중 발생하는 데이터베이스 수정사항을 반영하고 ERD Diagram, DDL 을 버전별로 관리

배송, 포인트, 포장지 규정

  1. 관리자가 배송 규정 수정(생성), 조회
  2. 관리자가 포인트 규정 생성, 수정, 조회, 삭제(soft delete)
  3. 관리자가 포장지 생성, 수정, 조회, 삭제(soft delete)
    • 포장지 이미지 등록 가능

쿠폰

  1. 회원에게 쿠폰 발급: 일괄 발급, 개별 발급
  2. 마이페이지에서 쿠폰 목록 확인

결제

  1. 다양한 결제 수단을 위해 Factory pattern을 적용
  2. tossPayment api를 사용한 결제
    • 결제 시, 포인트 및 쿠폰 적용
    • 결제 성공 시 재고 변경
  3. tossPayment api를 사용한 배송 전 결제 취소

주문

  1. 주문서 생성
    • 프론트에서 처리된 결과를 바탕으로 데이터베이스에 주문 및 주문상세 저장
    • 회원, 쿠폰, 배송비, 배송 날짜 등이 유요한지 확인하여 예외 처리

카테고리

  1. 관리자가 카테고리 등록, 수정, 조회, 삭제(soft delete)
  2. 카테고리 계층 구조 설계

김수현

인증/인가

  1. 로그인 시 auth server를 통해 JWT token 발급
  2. accessToken 만료시 auth server를 통해 JWT token 재발급
    • redis의 refreshToken을 검증해 accessToken 재발급
  3. 로그아웃시 저장된 access/refresh token 초기화

쿠폰

  1. admin 쿠폰 조회
  2. admin 쿠폰 생성

박재희

주문

  1. admin 주문 조회
    • admin 주문 목록 조회
    • admin 단일 주문 조회

신동민

ObjectStorage 파일 관리

  1. NHN Cloud Object Storage를 통한 파일 관리
  2. 파일 업로드, 수정, 삭제, 다운로드 처리
  3. 파일 Multiple 기능 : multiple로 생성 및 수정이 가능하도록 구현

출판사

  1. 관리자 페이지 출판사 등록, 수정, 조회 삭제
  2. 페이지네이션

저자

  1. 관리자 페이지 저자 등록, 수정, 조회, 삭제
  2. 페이지네이션

태그

  1. 관리자 페이지 저자 등록, 수정, 조회, 삭제
  2. 페이지네이션

상품(도서)

  1. 관리자 페이지 도서 등록, 수정, 조회, 삭제(Soft Delete)
    • 도서 등록 시 ToastUI WYSIWYG 적용
  2. 도서 판매, 절판, 매진, 삭제 상태 구현
  3. 도서 리스트 조회
  4. 도서 상세 조회

상품좋아요

  1. 도서 좋아요 및 취소
  2. 회원 좋아요한 도서 목록 조회

검색

  1. ELK 스택 사용
  • Elasticsearch 인덱스 생성, 매핑
    • Ngram, Nori 플러그인을 사용하여 분석기 설정
    • Logstash를 이용 데이터 생성
    • Kibana를 이용한 데이터 탐색
    • 통합검색, 출판사, 참여자, 태그 별 검색
    • 초성, 영문 오타 교정 검색
  1. 인기도순(조회수), 신상품순(출시일), 가격순, 평점순, 리뷰순으로 정렬

장바구니

  1. 빈번한 내용 변경이 이루어지는 장바구니에 Redis를 적용하여 캐싱
  2. 장바구니 담기, 조회
  3. 장바구니 페이지 내에서 수량 조절 및 삭제
  4. 비회원은 쿠키를 사용하여 Redis에서 조회, 장바구니 정보는 30일간 유효
  5. 회원은 회원아이디를 사용하여 Redis에서 조회, 영구 유지
  6. 회원은 로그아웃 혹은 토큰이 만료되면 RDB에 Redis 정보를 복제하여 데이터 유지

리뷰(상품평)

  1. 리뷰 등록, 수정, 조회
    • 회원만 등록 가능
    • 별점 부여 (1 ~ 5)
    • 리뷰 이미지 등록
    • 리뷰는 1개만 등록
  2. 기본적으로 5개 조회하고 더보기를 누를 시 5개씩 추가 조회하는 페이지네이션
  3. 책 조회 시 평균 평점과 리뷰 개수를 함께 출력

포인트

  1. 포인트 사용이력 - Mypage에서 포인트 적립/사용 내역을 확인

정지은

인증/인가

  1. front server에서 페이지 접근 마다 Interceptor를 통해 token 검증 + 재발급
  2. 특정 권한이 필요한 page 접근 시 Interceptor를 통해 권한 확인
  3. 로그인후 회원의 기본 정보를 redis에 저장하여 빠른 조회가 가능하도록 설정

회원

  1. 회원가입
    • 회원가입 시 모든 input 값 유효성 검사
    • 회원 아이디, 회원 닉네임 중복검사
    • 비밀번호를 BCrypt를 사용해 암호화
  2. 회원 주소 관리
    • mypage에서 관리 가능
    • 주소 조회
    • 주소 등록
      • Daum 주소 API 사용
      • 최대 10개까지 등록가능
    • 주소 삭제
  3. redis를 사용해 회원기본정보 저장
  4. 회원 정보 수정
  • mypage에서 수정 가능
  1. 회원 등급 조회
  • mypage에서 조회 가능
  1. 회원 탈퇴
  • 탈퇴시 회원의 상태를 변경하여 같은 아이디를 사용할 수 없도록 구현
  • Mypage에 탈퇴기능 제공

주문

  1. 주문서 생성
    • 회원/비회원 모두 주문가능
    • 바로주문과 장바구니 주문가능
    • 배송받고 싶은 날짜 선택가능
    • 주문하는 도서마다 정책에서 저장한 포장지를 불러와 선택
    • 결제금액기준으로 정책에서 저장된 배송비기준을 적용해 배송비적용
    • 결제금액기준으로 포인트 사용 가능

포인트

  1. 포인트 적립
  • 회원가입/리뷰/도서구매시 정책에 저장된 적립률로 적립
  • 도서구매적립시 주문Id도 함께 저장하여 반품 시 구매포인트를 다시 회수
  • 도서구매사용시 주문Id도 함께 저장하여 반품 시 구매포인트를 다시 반환
  1. 포인트 결제
  • 포인트를 사용하여 결제금액 차감 가능

front layout 구조 설게

  • 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를 사용한 스프링 클라우드환경 구축

Popular repositories Loading

  1. t2m_BookStore t2m_BookStore Public

    nhnacademy-be5-t2n-bookstore

    1

  2. g2nee-auth g2nee-auth Public

    Java

  3. g2nee-gateway g2nee-gateway Public

    gateway server

    Java

  4. g2nee-shop g2nee-shop Public

    g2nee's shop server

    Java

  5. g2nee-front g2nee-front Public

    front server for g2nee

    HTML

  6. g2nee-delivery g2nee-delivery Public

    Java

Repositories

Showing 9 of 9 repositories
  • .github Public
    nhnacademy-be5-t2m/.github’s past year of commit activity
    0 0 0 0 Updated Jun 21, 2024
  • g2nee-front Public

    front server for g2nee

    nhnacademy-be5-t2m/g2nee-front’s past year of commit activity
    HTML 0 0 4 0 Updated May 24, 2024
  • nhnacademy-be5-t2m/g2nee-auth’s past year of commit activity
    Java 0 0 1 0 Updated May 22, 2024
  • g2nee-shop Public

    g2nee's shop server

    nhnacademy-be5-t2m/g2nee-shop’s past year of commit activity
    Java 0 0 4 0 Updated May 22, 2024
  • g2nee-gateway Public

    gateway server

    nhnacademy-be5-t2m/g2nee-gateway’s past year of commit activity
    Java 0 0 4 0 Updated May 20, 2024
  • nhnacademy-be5-t2m/g2nee-eureka’s past year of commit activity
    Java 0 0 0 0 Updated Apr 27, 2024
  • g2nee-batch Public

    g2nee-batch

    nhnacademy-be5-t2m/g2nee-batch’s past year of commit activity
    Java 0 0 3 0 Updated Apr 9, 2024
  • nhnacademy-be5-t2m/g2nee-delivery’s past year of commit activity
    Java 0 0 1 0 Updated Mar 21, 2024
  • t2m_BookStore Public

    nhnacademy-be5-t2n-bookstore

    nhnacademy-be5-t2m/t2m_BookStore’s past year of commit activity
    1 0 21 0 Updated Mar 21, 2024

People

This organization has no public members. You must be a member to see who’s a part of this organization.

Top languages

Java HTML

Most used topics

Loading…