Skip to content

My-Books-projects/etc

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

43 Commits
 
 
 
 
 
 
 
 

Repository files navigation

📖 My-Books

개발 기간

  • 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 Apache Maven JWT
Bootstrap5 Thymeleaf JavaScript
Spring Spring Boot Spring Batch Spring Eureka Spring Cloud Gateway
MySQL JPA Hibernate QueryDSL Elasticsearch Redis
GitHub Actions Jenkins Docker Linux Ubuntu Nginx
Git GitHub IntelliJ IDEA DataGrip SonarLint SonarQube

아키텍쳐 구조

my-books service architecture

CI/CD

CI_CD

ERD

er1

WBS

테스트 커버리지

  • Resource API
    tc2
  • Authorization API
    td_auth

기능

회원

  • 담당자 : 이승재
  • 회원가입 , 수정 , 탈퇴 ,조회
  • 회원가입 시 유효성 검사 및 중복검사 , 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 서버에 대해 운영 환경별로 로그 레벨 설정
  • 로그 파일 생성

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published