🧩 boardgamecommunityservice

boardgamecommunityservice는 보드게임 커뮤니티의 회원, 게시글, 댓글 기능을 제공하는 Spring Boot 백엔드 서비스입니다.
Docker 기반으로 컨테이너화하여 배포를 목표로 합니다.


⚙️ 주요 기술 스택

구분 기술
Backend Framework Spring Boot (3.5.7)
Build Tool Maven
Java 21
Database MySQL (Docker Compose or RDS)
Source Repo GitHub
CI/CD GitHub CI/CD
Containerization Docker
Image Repository Docker Hub
Authentication Spring Security + JWT
API Style RESTful API

🧱 시스템 구조

  1. Spring Boot Application: REST API 구현
  2. Dockerfile: 컨테이너 이미지 빌드
  3. GitHub CI: 빌드 및 테스트 자동화
  4. MySQL Service: Docker 또는 외부 RDS 연동

🚀 개발 단계

  1. Spring Boot 프로젝트 생성 및 로컬 실행
  2. Dockerfile 작성 및 이미지 빌드
  3. GitHub Actions로 CI 설정 (.github/workflows/build.yml)
  4. Docker Hub → AWS EC2 자동 배포 파이프라인 구성

📜 협업 규칙 및 컨벤션

🧩 1. PR 템플릿 (.github/pull_request_template.md)

## 🔥 PR 제목
- ex) feat: 회원가입 API 구현 (#12)

## 📄 개요
> 이 PR에서 어떤 작업을 했는지 간단히 설명해주세요.

## ✅ 작업 내용
- [ ] 기능 추가 / 수정
- [ ] 버그 수정
- [ ] 리팩토링
- [ ] 테스트 코드 추가
- [ ] 문서화 (README 등)
- [ ] 기타 설정

## 🧪 테스트 방법
> 테스트 시나리오 또는 재현 절차를 적어주세요.

## 💬 참고사항
> 관련된 이슈 번호, 리뷰 요청사항 등을 남겨주세요.


⚙️ 2. PR 규칙

구분 내용
PR 단위 가능하면 300줄 이하
리뷰어 지정 ?
머지 조건 코드리뷰 ? + CI 통과
머지 방식 Merge (Squash, rebase X)
금지사항 main 브랜치 직접 푸시 금지 - 긴급해도 수정해서 브랜치 거쳐서 반영

🐛 3. 이슈 템플릿 (.github/ISSUE_TEMPLATE/feature_request.md)

---
name: Feature Request
about: 새로운 기능 또는 개선 요청
title: "[Feature] "
labels: enhancement
---

## 🧩 개요
> 요청하려는 기능의 간단한 설명

## 🎯 설명
> 이 기능이 왜 필요한가요?

## 🧰 참고 자료
> 예상되는 구현 방법 또는 참고 자료가 있다면 작성해주세요.

## ✅ 체크리스트
- [ ] 기능 정의 완료
- [ ] 구현 담당자 지정

🌿 4. 브랜치 네이밍 규칙

타입 예시 설명
feature/ feature/signup-api 새로운 기능 개발
fix/ fix/login-bug 버그 수정 or refactoring
chore/ chore/dependency-update 설정, 의존성, CI 관련
docs/ docs/readme-update 문서 수정

🧱 5. 커밋 컨벤션 (Conventional Commits)

타입 의미 예시
feat 새로운 기능 추가 feat: 회원가입 API 구현
fix 버그 수정 fix: JWT 토큰 검증 오류 수정
refactor 코드 구조 변경 refactor: BoardController 리팩토링
docs 문서 변경 docs: README 업데이트
style 코드 포맷팅 (로직 영향 없음) style: import 순서 정렬
test 테스트 관련 작업 test: PostService 단위 테스트 추가
chore 빌드, 설정, 패키지 등 chore: maven dependency 정리

💡 규칙: <type>: <간결한 설명> 형식 사용


🧩 6. 코드 컨벤션 (Java/Spring 기준)

구분 규칙
패키지 구조 controller → service → repository → domain
클래스 네이밍 PascalCase (UserController)
메서드 네이밍 camelCase (getUserList)
상수 UPPER_SNAKE_CASE (MAX_SIZE)
로그 log.info("message"); 형식 사용
주석 클래스 상단 Javadoc 형식 사용 (/** ... */)

🌐 7. 깃 브랜치 전략 (Git Flow 기반 경량화)

main        → 실제 배포용 (배포 승인만 머지 가능)
develop     → 통합 개발 브랜치 (기능 브랜치 병합) - default
feature/*   → 기능 단위 개발
fix/*       → 버그 수정 및 리팩토링
chore/*     → 빌드 설정 등 수정
docs/*      → 문서화
release/*   → 배포 준비

Flow 예시:

  1. feature/signup-api → 기능 구현
  2. develop에 PR 생성 및 리뷰 후 병합
  3. 배포 전 release/v1.0 생성
  4. main 머지 시 GitHub Actions로 자동 배포

🔄 8. 작업 흐름

1️⃣ 이슈 생성 → GitHub Issues → New Issue 에서 기능/버그 등록 (템플릿 자동 적용)

2️⃣ 브랜치 생성develop 기준으로 새 브랜치 생성 예: feature/signup-api-#12

3️⃣ 개발 및 커밋 → 커밋 메시지 규칙 준수 예: feat: 회원가입 API 구현 (#12)

4️⃣ 푸시 및 PR 생성develop 대상으로 PR 작성 본문에 Closes #12 작성 시 머지 시 자동 종료

5️⃣ 리뷰 & 병합 → 코드리뷰 승인 후 develop에 Merge → 기능 단위로 반복 진행

6️⃣ 릴리즈 준비 (release 브랜치 생성) → 충분한 기능이 모이면

git checkout -b release/v1.0 develop
git push origin release/v1.0

7️⃣ 테스트 & QA 완료 후 PR 생성release/v1.0main 으로 PR 작성 → CI/CD 확인 및 코드 리뷰 진행 → 머지 시 자동 배포 실행

📘 요약: Issue → Branch → Commit → PR(dev) → Review → Merge(develop) → Release → PR(main) → Merge(main) & Deploy(server)


📅 향후 계획

  • Docker Compose로 로컬 통합 환경 구성
  • GitHub Actions + AWS EC2 자동배포 파이프라인 완성

댓글남기기