Skip to content

Mark-ToyProject/music-site-api

Repository files navigation

MUSIC SITE


logo


사용 기술

  • 언어: Java 17
  • 데이터베이스: MSSQL
  • 주요 라이브러리:
    • JPA
    • Mybatis
    • Spring Security
    • Swagger
    • JUnit
  • 설계 기법:
    • TDD (Test-Driven Development)
    • DDD (Domain-Driven Design)
    • Layered Architecture

외부 서비스

  • Jira: 프로젝트 관리 및 이슈 추적
  • GitHub: 소스 코드 관리 및 협업

프로젝트 핵심 요소

1. 멀티 모듈 설계

  • Gradle 기반 멀티 모듈 구조로 코드 레벨을 명확히 구분하여 가독성과 유지보수성을 향상시킴.
  • 각 모듈은 특정 역할을 담당하며, 공통 모듈을 통해 모듈 간 의존성을 관리:
    • api 모듈: API, DTO, Security
    • admin 모듈: ADMIN 관련 API, DTO, Security
    • common 모듈: DB 및 도메인 관련 코드 (mybatis, JPA 등)
    • integration 모듈: 슬랙 알림, 이메일, 푸시 알림 등 통합 기능 관리

2. 테스트 코드 작성

  • TDD 방식을 적용하여 API 테스트를 코드상에서 실행 가능.
  • 테스트 코드를 통해 로직의 이해도를 높이고, 코드 품질을 보장.
  • Swagger 문서화를 자동화하여 API 문서 관리의 효율성을 높임.

3. JPA와 MyBatis의 하이브리드 사용

  • JPA를 통해 간단한 CRUD 작업을 빠르게 처리하며, 복잡한 조회 로직은 MyBatis로 처리하는 하이브리드 방식을 도입.
  • JPA는 단순 로직에 적합하며, 이를 활용해 개발 속도를 극대화함.
  • MyBatis는 복잡한 쿼리와 비즈니스 로직에 유연성을 제공함.

4. Git 컨벤션 및 코드 리뷰

  • Pull Request → 리뷰 → Merge 전략을 도입하여 팀원 간의 협업을 강화.
  • PR을 통해 동료의 동의를 얻은 코드만 Merge하여 코드 품질을 보장.
  • 이 프로세스를 통해 프로젝트의 전체적인 이해도를 높이고, 팀원의 부재 시에도 다른 팀원이 작업을 대체할 수 있는 환경을 조성.

5. CI/CD 구축

  • GitHub Actions를 활용한 자동 배포 시스템을 구축하여 수동 배포 과정을 개선.
  • 자동 배포를 통해 리뷰와 다른 작업을 동시에 처리할 수 있어 업무 효율성을 극대화.
  • Discord 와 연동하여 실시간 배포 알림을 받아 배포 상태를 신속하게 파악 가능.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 3

  •  
  •  
  •