Skip to content
@My-Books-projects

My-Books

📖 My-Books

  • 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

사용 기술

언어

Java

Framework

Spring Spring Boot Spring RestDocs SpringDataJPA
Spring Cloud Gateway Spring Batch Spring Eureka
JWT Hibernate
MyBatis QueryDSL

Build Tool

Apache Maven

DataBase

MySQL Redis

CI/CD

Github Action Jenkins

DevOps

NHN Cloud Docker SonarQube Nginx

ETC

Git GitHub Junit5
IntelliJ IDEA SonarLint DataGrip
Elasticsearch Linux Ubuntu

Front

Thymeleaf Bootstrap5 JavaScript


아키텍쳐 구조

my-books service architecture

CI/CD

CI_CD

ERD

er1

WBS

테스트 커버리지

  • Resource API
    tc2
  • Authorization API
    td_auth

Project Management


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

Scrum

  • 일주일 마다 Scrum Master 맡아서 매일 9:00 진행
  • 지난날에 했던 일, 이제 할일, 특이사항등을 정리하여 체계적으로 프로젝트 진행

image

일정관리

  • RoadMap 활용
  • 일정 진행 상황 관리 및 공유

Road Map

image

  • Kanban 활용으로 실시간 진행 상황 관리 및 공유

Kanban

image

Spring Rest Docs

  • rest docs 활용으로 사용자 친화적인 문서 제공

image

기능

회원

  • 담당자 : 이승재
  • 회원가입 , 수정 , 탈퇴 ,조회
  • 회원가입 시 유효성 검사 및 중복검사 , 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

  • 담당자 : 정재현
  • 빈번한 내용 변경이 이루어지는 장바구니에 알맞게 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 서버에 대해 운영 환경별로 로그 레벨 설정
  • 로그 파일 생성

Popular repositories Loading

  1. etc etc Public

    1

  2. front front Public

    HTML 1

  3. resource resource Public

    Java 2

  4. gateway gateway Public

    Java 1

  5. authorization authorization Public

    Java 1

  6. eureka eureka Public

    Java 1

Repositories

Showing 8 of 8 repositories
  • resource Public
    My-Books-projects/resource’s past year of commit activity
    Java 0 2 0 0 Updated May 31, 2024
  • front Public
    My-Books-projects/front’s past year of commit activity
    HTML 0 1 0 0 Updated May 19, 2024
  • gateway Public
    My-Books-projects/gateway’s past year of commit activity
    Java 0 1 0 0 Updated May 19, 2024
  • authorization Public
    My-Books-projects/authorization’s past year of commit activity
    Java 0 1 0 0 Updated May 19, 2024
  • .github Public
    My-Books-projects/.github’s past year of commit activity
    0 0 0 0 Updated Apr 15, 2024
  • etc Public
    My-Books-projects/etc’s past year of commit activity
    0 1 175 0 Updated Apr 13, 2024
  • batch Public
    My-Books-projects/batch’s past year of commit activity
    Java 0 1 0 1 Updated Mar 24, 2024
  • eureka Public
    My-Books-projects/eureka’s past year of commit activity
    Java 0 1 0 0 Updated Mar 22, 2024

Top languages

Loading…

Most used topics

Loading…