<aside> ❗ 본 문서는 전반적인 개발 프로세스 및 코드 컨벤션에 대한 가이드를 제공합니다.
</aside>
본 문서는 프로젝트 개발 과정에서 일관성과 효율성을 높이기 위해 따라야 할 개발 프로세스와 코드 컨벤션을 안내합니다. 백엔드 프로젝트에 적용되는 규칙을 상세히 설명하며, 브랜치 전략, 네이밍 규칙, 커밋 메시지 작성법, 그리고 이슈 및 PR 관리에 대한 지침을 포함하고 있습니다.
<aside> ❗ 해당 문서는 항상 최신 상태를 유지해야 합니다. 가이드에 변경이 있는 경우 해당 문서를 업데이트해 주세요.
</aside>
<aside>
❗ 현재는 main
브랜치만 사용하여 모든 개발과 배포를 진행합니다. 하지만, 애플리케이션 출시 이후에는 테스트를 위한 develop
브랜치를 추가로 도입할 계획입니다.
</aside>
GitHub Flow 는 간단한 분기 기반 워크플로우 입니다. 본 프로젝트는 Github Flow
기반의 브랜치 전략을 활용하고 있습니다.
본 프로젝트에서 사용 가능한 브랜치 종류는 다음과 같습니다:
브렌치 유형 | 설명 |
---|---|
main |
항상 배포 가능한 상태를 유지하는 브랜치입니다. 모든 기능과 버그 수정은 이 브랜치에 최종적으로 병합됩니다. |
feature /* |
새로운 기능을 개발하기 위한 브랜치입니다. 기능별로 브랜치를 생성하며, 작업이 완료되면 main 브랜치로 병합됩니다. |
fix /* |
버그를 수정하기 위한 브랜치입니다. 각 버그 수정 작업은 개별 브랜치에서 진행되며, 완료되면 main 브랜치로 병합됩니다. |
refactor /* |
코드 리팩터링을 위한 브랜치입니다. 기능의 동작은 그대로 유지하면서 코드의 구조를 개선할 때 사용하며, 완료되면 main 브랜치로 병합됩니다. |
main
브랜치는 CI/CD 파이프라인을 통해 자동화된 배포가 이루어지는 주요 브랜치입니다. 이 브랜치에 병합된 코드는 자동으로 빌드되고, 테스트를 거쳐 최종적으로 배포됩니다
Branch Naming 컨벤션은 작업 흐름을 명확히 추적할 수 있도록 도와줍니다. 또한, JIRA 티켓을 사용하여 이슈와 작업을 관리하기 때문에, 브랜치명에 이슈 번호를 포함하여 작업과 이슈를 쉽게 연동할 수 있습니다.
네이밍 구성은 다음과 같습니다:
{Branch 유형}/{이슈있다면 이슈 번호}-{브랜치 설명}
/
로 구분합니다.Jira 이슈의 고유 식별자
를 포함합니다. 이슈 ID를 통해 작업을 추적하고, 관련 문서와의 연계를 용이하게 합니다.kebab-case
를 사용하여 소문자와 하이픈으로 구성합니다. 명사형으로 작성합니다.Branch Naming 예시
feature/29-user-profile-update
: 사용자 프로필 업데이트 기능 개발feature/42-payment-integration
: 결제 시스템 통합 기능 개발fix/resolve-login-error
: 로그인 오류 해결refactor/rename-variable
: 변수명 변경 및 코드 정리<aside> ❗
커밋 메시지 규칙을 강제하기 위해 Husky와 Commitlint를 사용합니다. 커밋 메시지가 규칙에 맞지 않으면, Husky가 자동으로 커밋을 거부할 수 있으니, 커밋 메시지를 작성할 때는 이하 규칙을 준수하세요.
</aside>
이 컨벤션은 커밋 메시지를 구조화하여 코드 변경의 목적과 내용을 간결하고 명확하게 전달하도록 합니다.
커밋 메시지는 다음과 같은 형식을 따라야 합니다:
<타입>: <제목>
feat:
[선택적 본문]
[선택적 바닥글]
다음은 사용 가능한 커밋 메시지 타입과 그 의미입니다:
타입 | 설명 |
---|---|
feat |
새로운 기능 추가 |
fix |
버그 수정 |
docs |
문서 수정 |
style |
코드 포맷팅 변경 (코드 동작 변경 없음) |
refactor |
코드 리팩토링 |
test |
테스트 코드 추가/수정 |
chore |
빌드 작업, 패키지 매니저 수정 등 |
scope-empty
규칙 적용)header-max-length
규칙 적용)body-max-line-length
규칙 적용)type-enum
규칙 적용)<aside>
❗ Java 코딩 컨벤션을 준수하기 위해 **Checkstyle
**과 **EditorConfig
**를 사용하고 있습니다. 또한, **Husky
**를 통해 코드 컨벤션 준수 여부를 자동으로 검토합니다. 관련 설정과 구체적인 내용은 초기 개발환경 설정 문서에서 확인하실 수 있습니다.
</aside>
본 프로젝트의 모든 컨벤션은 아래의 “네이버 캠퍼스 핵데이 Java 코딩 컨밴션”
을 기준으로 합니다.
추가적인 코딩 컨벤션은 다음과 같습니다:
@Transactional
@Transactional
사용한다.@Transactional(readOnly = true)
사용한다.ResponseEntity
**를 사용한다.given, when, then 패턴
을 사용한다.
&
으로 합쳐 작성한다.