JoyMall
은 쇼핑몰이 필요한 물건을 구매하기 위한 수단이 아닌 상품을 한눈에 살펴보고 소통하는 공간을 제공함으로써 즐거움을 주는 것이 이 프로젝트의 취지입니다.
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
커뮤니케이션 다이어그램, 클래스 다이어그램, ER 다이어그램의 순서로 설계하였습니다.
- 서비스를 객체와 메세지로 분리하였습니다.
- 분리한 객체와 메세지를 생각하면서 클래스의 속성과 행위를 정의하였습니다.
- 클래스의 역할과 책임을 따라 연관관계를 생각하면서 데이터베이스를 설계하였습니다.
프로젝트의 버전 관리 및 협업을 위해 Git-Flow 전략을 채택하였습니다.
- main: 제품으로 출시될 수 있는 브랜치입니다. 릴리스 이력을 관리하기 위해 사용됩니다.
- develop: 다음 출시 버전을 개발하는 브랜치입니다. 기능 개발 및 버그 수정이 이루어지며, 모든 변경사항은 이 브랜치에 병합됩니다.
- feature: 새로운 기능 개발이나 실험적인 작업을 위한 브랜치입니다. 각 기능 개발이 완료되면
develop
브랜치로 병합됩니다. - release: 이 브랜치는 준비 중인 릴리스의 최종 버그 수정 및 문서 작업 등을 위해 사용됩니다. 준비가 완료되면
main
과develop
브랜치에 병합됩니다. - hotfix: 이미 출시된 버전에서 발생한 긴급한 버그를 수정하기 위한 브랜치입니다. 수정이 완료되면
main
과develop
브랜치에 병합됩니다.