Skip to content

chaewss/chaewsstore

Repository files navigation

🏷 chaewsstore

Coverage Reliability Rating Security Rating Maintainability Rating Vulnerabilities Code Smells

다양한 상품을 판매하고 구매할 수 있는 거래 서비스입니다.


⚒️ 사용 기술 및 환경

  • Java 17, Spring Boot 3.0.4, Gradle, Spring Data JPA, H2
  • Spring Security, JWT, QueryDSL
  • Spring REST Docs, GitHub Actions, JaCoCo, SonarCloud, JMeter

☁️ 프로젝트 주요 관심사

  • RESTful API 원칙 준수
  • 단일 책임 원칙을 준수하고 불필요한 의존성을 최소화한 멀티 모듈 구성
  • Spring Security와 JWT를 이용한 인증 및 인가
  • Fetch Join을 사용한 N+1 문제 해결
  • 경매 시스템 동시성 문제 해결
  • 개별 기능을 독립적으로 검증하기 위한 단위 테스트, 멀티 스레드 환경에서 동시성 문제를 검증하기 위한 통합 테스트 및 JMeter 작성
  • Spring REST Docs를 통한 API 문서화
  • GitHub Actions를 사용하여 자동화된 빌드, JaCoCo 테스트 커버리지 측정, SonarCloud 정적 분석 파이프라인 구축

☄️ 트러블 슈팅







📁 프로젝트 구조

├── chaewsstore-admin  
│       └── com.chaewsstore
│           └── apis # 각 usecase 별 패키지 ex) auth, bid, user
│               └── controller
│               └── dto
│               └── helper  # 해당 모듈이나 기능과 관련된 다양한 보조 작업 수행
│               └── usecase  # 비즈니스 로직 구현, 특정 기능이나 시나리오에 대한 작업 수행
│           ├── common  # 프로젝트에서 공통적으로 사용되는 유틸리티, 예외 처리
│           └── config  # 프로젝트 각종 설정
├── chaewsstore-app
│       └── com.chaewsstore # 어드민과 동일
├── chaewsstore-core
│       └── com.chaewsstore.core
│           ├── domain  # 각 도메인별 엔티티, 레포지토리, 서비스, dto, 에러 코드 등
│           └── infra  # 설정 정보를 동적으로 로드하고 처리하는 기능 제공
└── global-utils  # 프로젝트 전체에서 공통으로 사용되는 유틸리티 기능 제공

📑 API 문서


📝 Git 브랜치 전략

Git-Flow 브랜치 전략을 사용하여 관리합니다. 모든 feature 브랜치는 develop 브랜치에서 시작되며 Approve 받은 PR만 develop 브랜치로 merge 됩니다.

  • main: 배포 시 사용됩니다.
  • develop: PR을 거친 후 승인된 feature 브랜치가 모입니다.
  • feature: 기능 개발을 진행할 때 사용됩니다.
  • hot-fix: 배포를 진행한 후 발생한 버그를 수정해야 할 때 사용합니다.

🧪 테스트

  • Unit Test는 Mockito를 사용하여 작성되었으며, 테스트 커버리지 80% 이상을 유지하고 있습니다.
  • JMeter를 사용한 동시성 테스트 진행

🚀 CI/CD 파이프라인

GitHub Actions + JaCoCo + SonarCloud

  • GitHub Actions를 사용하여 자동화된 CI/CD 파이프라인을 구축하였습니다.
  • JaCoCo를 도입하여 코드의 테스트 커버리지를 측정하고 있습니다.
  • 코드 변경 시 JaCoCo가 테스트 커버리지를 측정하며, 80% 이상의 커버리지를 유지하는 것을 목표로 하고 있습니다.
  • SonarCloud를 사용해 코드 커버리지, 코드 스멜, 보안 취약점 등을 검사하고 있습니다.
  • PR 또는 커밋이 develop 브랜치에 푸시될 때마다 테스트 커버리지 측정과 정적 분석이 자동으로 실행되며, 이를 통해 코드 품질을 지속적으로 유지하고 있습니다.
  • 코드 커버리지가 일정 기준에 미치지 못하거나, 코드 스멜 및 보안 취약점이 발견되면 merge가 제한되도록 설정하여 유지 보수성과 안정성을 강화하였습니다.

☁️ DB

chaewsstore DB