<aside> ❗ 본 문서는 전반적인 개발 프로세스 및 코드 컨벤션에 대한 가이드를 제공합니다.

</aside>

가이드라인

시작하기

본 문서는 프로젝트 개발 과정에서 일관성과 효율성을 높이기 위해 따라야 할 개발 프로세스와 코드 컨벤션을 안내합니다. 백엔드 프로젝트에 적용되는 규칙을 상세히 설명하며, 브랜치 전략, 네이밍 규칙, 커밋 메시지 작성법, 그리고 이슈 및 PR 관리에 대한 지침을 포함하고 있습니다.

<aside> ❗ 해당 문서는 항상 최신 상태를 유지해야 합니다. 가이드에 변경이 있는 경우 해당 문서를 업데이트해 주세요.

</aside>

컨밴션

Branch 전략

<aside> ❗ 현재는 main 브랜치만 사용하여 모든 개발과 배포를 진행합니다. 하지만, 애플리케이션 출시 이후에는 테스트를 위한 develop 브랜치를 추가로 도입할 계획입니다.

</aside>

GitHub Flow 는 간단한 분기 기반 워크플로우 입니다. 본 프로젝트는 Github Flow 기반의 브랜치 전략을 활용하고 있습니다.

본 프로젝트에서 사용 가능한 브랜치 종류는 다음과 같습니다:

브렌치 유형 설명
main 항상 배포 가능한 상태를 유지하는 브랜치입니다. 모든 기능과 버그 수정은 이 브랜치에 최종적으로 병합됩니다.
feature/* 새로운 기능을 개발하기 위한 브랜치입니다. 기능별로 브랜치를 생성하며, 작업이 완료되면 main 브랜치로 병합됩니다.
fix /* 버그를 수정하기 위한 브랜치입니다. 각 버그 수정 작업은 개별 브랜치에서 진행되며, 완료되면 main 브랜치로 병합됩니다.
refactor/* 코드 리팩터링을 위한 브랜치입니다. 기능의 동작은 그대로 유지하면서 코드의 구조를 개선할 때 사용하며, 완료되면 main 브랜치로 병합됩니다.

main 브랜치는 CI/CD 파이프라인을 통해 자동화된 배포가 이루어지는 주요 브랜치입니다. 이 브랜치에 병합된 코드는 자동으로 빌드되고, 테스트를 거쳐 최종적으로 배포됩니다

Branch Naming 컨벤션

Branch Naming 컨벤션은 작업 흐름을 명확히 추적할 수 있도록 도와줍니다. 또한, JIRA 티켓을 사용하여 이슈와 작업을 관리하기 때문에, 브랜치명에 이슈 번호를 포함하여 작업과 이슈를 쉽게 연동할 수 있습니다.

네이밍 구성은 다음과 같습니다:

{Branch 유형}/{이슈있다면 이슈 번호}-{브랜치 설명}

Branch Naming 예시

Commit Message 컨벤션

<aside> ❗

커밋 메시지 규칙을 강제하기 위해 HuskyCommitlint를 사용합니다. 커밋 메시지가 규칙에 맞지 않으면, Husky가 자동으로 커밋을 거부할 수 있으니, 커밋 메시지를 작성할 때는 이하 규칙을 준수하세요.

</aside>

이 컨벤션은 커밋 메시지를 구조화하여 코드 변경의 목적과 내용을 간결하고 명확하게 전달하도록 합니다.

  1. 커밋 메시지 형식

커밋 메시지는 다음과 같은 형식을 따라야 합니다:

<타입>: <제목>
feat: 
[선택적 본문]
[선택적 바닥글]
  1. 커밋 메시지 타입

다음은 사용 가능한 커밋 메시지 타입과 그 의미입니다:

타입 설명
feat 새로운 기능 추가
fix 버그 수정
docs 문서 수정
style 코드 포맷팅 변경 (코드 동작 변경 없음)
refactor 코드 리팩토링
test 테스트 코드 추가/수정
chore 빌드 작업, 패키지 매니저 수정 등
  1. 커밋 메시지 규칙

Java 코딩 컨벤션

<aside> ❗ Java 코딩 컨벤션을 준수하기 위해 **Checkstyle**과 **EditorConfig**를 사용하고 있습니다. 또한, **Husky**를 통해 코드 컨벤션 준수 여부를 자동으로 검토합니다. 관련 설정과 구체적인 내용은 초기 개발환경 설정 문서에서 확인하실 수 있습니다.

</aside>

본 프로젝트의 모든 컨벤션은 아래의 “네이버 캠퍼스 핵데이 Java 코딩 컨밴션” 을 기준으로 합니다.

캠퍼스 핵데이 Java 코딩 컨벤션

추가적인 코딩 컨벤션은 다음과 같습니다:

스프링 코딩 컨벤션

테스트 코드 컨벤션