https://github.com/f-lab-edu/e-commerce-mall
대용량 데이터를 처리하는 전자 상거래 서비스 API, Coupang을 모티브로 개발
https://github.com/f-lab-edu/e-commerce-mall
elasticsearch java java-backend jpa jwt kafka mysql spring-boot spring-security
Last synced: 2 months ago
JSON representation
대용량 데이터를 처리하는 전자 상거래 서비스 API, Coupang을 모티브로 개발
- Host: GitHub
- URL: https://github.com/f-lab-edu/e-commerce-mall
- Owner: f-lab-edu
- Created: 2024-04-11T07:07:14.000Z (over 1 year ago)
- Default Branch: develop
- Last Pushed: 2024-10-28T09:31:07.000Z (about 1 year ago)
- Last Synced: 2025-06-10T22:09:20.690Z (5 months ago)
- Topics: elasticsearch, java, java-backend, jpa, jwt, kafka, mysql, spring-boot, spring-security
- Language: Java
- Homepage:
- Size: 311 KB
- Stars: 4
- Watchers: 3
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# E-Commerce Mall



## 소개
E-Commerce Mall은 Coupang을 모티브로 한 고성능 전자 상거래 서비스 API입니다.
이 프로젝트는 대용량 데이터를 효율적으로 처리하고 온라인 마켓플레이스를 위한 필수 기능을 제공합니다.
## 프로젝트 목표
- **객체지향 원리 적용**: 객체지향 원리를 고려하여, 유지보수성과 확장성이 높은 코드를 작성합니다.
- **단위 테스트**: 철저한 단위 테스트로 코드의 신뢰성을 확보합니다.
- **성능 최적화**: 성능 테스트를 통해 시스템을 최적화하고 대용량 트래픽을 효과적으로 처리합니다.
- **CI/CD 자동화**: CI/CD를 통해 자동화된 빌드, 테스트, 배포 프로세스를 구현합니다.
## 주요 기능
- **사용자 인증**: 안전한 사용자 등록 및 로그인
- **상품 관리**: 상품 추가, 수정 및 조회
- **검색 기능**: 효율적인 상품 검색
- **주문 처리**: 기본 배송지 설정 및 고객 주문
## 프로젝트 규칙 및 개발 전략
### 코드 컨벤션
- **Java**: [Google Java Style Guide](https://google.github.io/styleguide/javaguide.html)
- **파일 및 클래스 이름**: PascalCase를 사용합니다.
- **메소드 및 변수 이름**: camelCase를 사용합니다.
### 성능최적화
- 검색 속도 개선을 위해 검색 엔진 적극 활용
- 비동기를 활용하여 빠른 시간 내에 데이터 setup
- DB 서버와 통신 최소화
### 테스트
- **단위 테스트**: `JUnit 5`를 사용하여 각 기능의 단위 테스트를 작성
- **통합 테스트**: `Spring Boot Test`를 사용하여 애플리케이션의 통합 동작을 테스트
- **테스트 커버리지**: `Jacoco`를 사용하여 코드 커버리지를 측정
- **테스트 커버리지 목표**: 80% 이상
- 전체 코드의 80% 이상 테스트 커버리지를 충족해야 합니다. 80% 미만인 경우, 커버리지 부족으로 인해 테스트가 실패한 것으로 처리됩니다.
### 브랜치 전략
이 프로젝트에서는 **[Git Flow](https://nvie.com/posts/a-successful-git-branching-model/)** 전략을 따릅니다:
- **`main`**: 배포 가능한 상태의 코드가 포함된 브랜치
- **`develop`**: 다음 배포를 위한 기능 통합 브랜치
- **`feature`**: 새로운 기능 개발 브랜치
- **`fix`**: 버그 수정 브랜치
- **`release`**: 배포 준비 브랜치
- **`hotfix`**: 긴급 수정 브랜치
브랜치 전략은 다음과 같이 사용됩니다:
- **기능 개발 시**: `이슈번호-feat-기능명` 브랜치에서 작업 후 `develop` 브랜치에 병합
- **버그 수정 시**: `선택적 이슈번호-fix-버그명` 브랜치에서 작업 후 `develop` 브랜치에 병합
- **배포 준비 시**: `release-버전명` 브랜치에서 작업 후 `main` 및 `develop` 브랜치에 병합
- **긴급 수정 시**: `hotfix-버전명` 브랜치에서 작업 후 `main` 및 `develop` 브랜치에 병합
### 커밋 컨벤션
커밋 메시지는 다음과 같은 형식을 따릅니다:
```bash
<타입>: <설명>
<선택적 본문>
```
- **타입**:
- **feat**: 새로운 기능 추가
- **fix**: 버그 수정
- **docs**: 문서 변경
- **style**: 코드 포맷팅, 세미콜론 누락 등
- **refactor**: 코드 리팩토링
- **test**: 테스트 추가 또는 수정
- **chore**: 빌드 작업, 패키지 매니저 등
## 사용 기술
- **백엔드**: Java, Spring Boot
- **보안**: Spring Security, JWT
- **데이터베이스**: MySQL
- **메시지 브로커**: Kafka
- **검색 엔진**: Elasticsearch
## 사용 방법
API를 사용하여 주요 기능들을 테스트할 수 있습니다.
### 기능 명세
https://github.com/f-lab-edu/e-commerce-mall/wiki/%F0%9F%94%A8-%EA%B8%B0%EB%8A%A5-%EB%AA%85%EC%84%B8-&-API-signature
### 화면 설계
https://github.com/f-lab-edu/e-commerce-mall/wiki/%F0%9F%8E%A8%ED%94%84%EB%A1%9C%ED%86%A0%ED%83%80%EC%9E%85