🧩 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 |
🧱 시스템 구조
- Spring Boot Application: REST API 구현
- Dockerfile: 컨테이너 이미지 빌드
- GitHub CI: 빌드 및 테스트 자동화
- MySQL Service: Docker 또는 외부 RDS 연동
🚀 개발 단계
- Spring Boot 프로젝트 생성 및 로컬 실행
- Dockerfile 작성 및 이미지 빌드
- GitHub Actions로 CI 설정 (
.github/workflows/build.yml) - 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 예시:
feature/signup-api→ 기능 구현develop에 PR 생성 및 리뷰 후 병합- 배포 전
release/v1.0생성 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.0 → main 으로 PR 작성
→ CI/CD 확인 및 코드 리뷰 진행
→ 머지 시 자동 배포 실행
📘 요약:
Issue → Branch → Commit → PR(dev) → Review → Merge(develop) → Release → PR(main) → Merge(main) & Deploy(server)
📅 향후 계획
- Docker Compose로 로컬 통합 환경 구성
- GitHub Actions + AWS EC2 자동배포 파이프라인 완성
댓글남기기