Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/f-lab-edu/joy-mall

온라인 전자 상거래를 기반으로 한 쇼핑 플랫폼
https://github.com/f-lab-edu/joy-mall

java17 spring-boot spring-data-jdbc

Last synced: 6 days ago
JSON representation

온라인 전자 상거래를 기반으로 한 쇼핑 플랫폼

Awesome Lists containing this project

README

        

# 🛍 ️JoyMall


조이몰_로고

`JoyMall`은 **쇼핑몰이 필요한 물건을 구매하기 위한 수단이 아닌 상품을 한눈에 살펴보고 소통하는 공간을 제공함으로써 즐거움을 주는 것이 이 프로젝트의 취지입니다.**


# 📗 프로젝트 아키텍쳐


image


# 🎯 프로젝트 목표

**1. `객체지향`의 원리를 적용하여 유지보수와 확장에 용이한 코드 작성**
- 중복되는 코드, 객체의 역할과 책임을 적절하게 분리하여 응집도를 향상시킨 코드를 작성합니다.
- SOLID 원칙과 디자인 패턴의 이해를 바탕으로 객체지향 프로그래밍의 장점을 활용합니다.

**2. `스프링`에 대한 깊은 이해와 장점을 활용**
- IOC/DI, AOP 등의 핵심 원리 및 기능을 통해 코드의 결합도를 낮추고 유지보수성을 향상시킵니다.

**3. `문서화`를 통한 기록 관리**
- wiki 를 적극 활용하여 프로젝트 설계, 요구사항, 버전 관리를 통해 변화 과정을 추적하고 공유합니다.
- 백엔드, 프론트, 디자이너, PM 등 에게 공통 관심사를 공유하고 협업하는 공간을 제공합니다.

**4. `애자일` 방법론에 따른 프로젝트 관리**
- 스프린트 관리, 스크럼, 회고를 통해 변화하는 요구사항에 유연하게 대처하고 지속적인 개선과 목표를 수립합니다.

**5. `테스트 코드`를 통한 품질 향상**
- 테스트 코드 작성과 지속적인 테스트 자동화를 통해 서비스의 품질과 안정성을 보장하는 데 중점을 둡니다.
- 대용량 트래픽과 데이터를 처리할 수 있는지 확인하기 위해 성능 테스트 합니다. 로드 테스트, 스트레스 테스트, 속도 테스트 등을 포함하여, 시스템의 처리 용량, 응답 시간, 병목 현상 탐지 등을 평가합니다.


# 🧩 사용 기술

- Java 17
- SpringBoot 3.2.3
- Spring Data JDBC
- JUnit5
- Mockito
- MySql
- Redis
- Naver Cloud Platform
- VPC
- Github Action
- k8s
- Docker
- NAS
- NGrinder
- Pinpoint
- Apache Kafka


# ✏️️ 프로토타입

image


# 📚 설계

커뮤니케이션 다이어그램, 클래스 다이어그램, ER 다이어그램의 순서로 설계하였습니다.
- 서비스를 객체와 메세지로 분리하였습니다.
- 분리한 객체와 메세지를 생각하면서 클래스의 속성과 행위를 정의하였습니다.
- 클래스의 역할과 책임을 따라 연관관계를 생각하면서 데이터베이스를 설계하였습니다.

joy-mall-use-case-스샷

---

joy-mall-class-diagram_3

---

joy-mall-erd


# 🥁 Git 브랜치 전략

프로젝트의 버전 관리 및 협업을 위해 Git-Flow 전략을 채택하였습니다.

image

- **main**: 제품으로 출시될 수 있는 브랜치입니다. 릴리스 이력을 관리하기 위해 사용됩니다.
- **develop**: 다음 출시 버전을 개발하는 브랜치입니다. 기능 개발 및 버그 수정이 이루어지며, 모든 변경사항은 이 브랜치에 병합됩니다.
- **feature**: 새로운 기능 개발이나 실험적인 작업을 위한 브랜치입니다. 각 기능 개발이 완료되면 `develop` 브랜치로 병합됩니다.
- **release**: 이 브랜치는 준비 중인 릴리스의 최종 버그 수정 및 문서 작업 등을 위해 사용됩니다. 준비가 완료되면 `main`과 `develop` 브랜치에 병합됩니다.
- **hotfix**: 이미 출시된 버전에서 발생한 긴급한 버그를 수정하기 위한 브랜치입니다. 수정이 완료되면 `main`과 `develop` 브랜치에 병합됩니다.


> ### JoyMall 의 기록
> #### [Sprint](https://github.com/f-lab-edu/joy-mall/projects?query=is%3Aopen) | [Wiki](https://github.com/f-lab-edu/joy-mall/wiki)