<aside> ❗ 본 문서는 초기 개발 환경을 설정하는 방법을 안내합니다.

</aside>

설정

시작하기

본 문서는 Toduck Backend 프로젝트 로컬 개발 환경 설정에 대한 전반적 이해를 돕는 것을 목적으로 합니다.

<aside> ❗ 해당 문서는 항상 최신 상태를 유지해야 합니다. 초기 개발환경 설정에 영향을 주는 경우가 있는 경우 해당 문서를 업데이트해 주세요. 각 단계에서 문제가 발생하면, 해당 단계의 명령어와 설정 파일을 다시 확인하고, 필요한 경우 팀원에게 문의하세요.

</aside>

리포지토리 클론

아래 명령어를 통해 리포지토리를 클론합니다.

git clone <https://github.com/toduck-App/toduck-backend.git>

Submodule 초기화

<aside> ❗ 해당 섹션을 수행하기 위해서는 toduck-backend-private 리포지토리에 대한 접근 권한이 있어야 합니다. 권한이 필요한 경우 관리자에게 요청하세요. 리포지토리의 민감 정보가 외부로 노출되지 않도록 유의해주세요.

</aside>

본 프로젝트는 데이터베이스 암호, 엔트리포인트와 같은 민감정보를 submodule을 통해 관리합니다. 빌드 시점에서 모듈 내의 application.properties 파일을 사용합니다. submodule 리포지토리명은 toduck-backend-private 이며, private 권한을 가집니다.

초기 설정에서는 submodule 사용을 위한 초기화 작업이 필요합니다. 아래 명령어를 통해 submodule을 초기화 합니다.

git submodule init
git submodule update

Lint 도구 설정

본 프로젝트는 코드 품질을 높이고 일관성을 유지하기 위해 Lint 도구를 적극적으로 사용합니다.

Checkstyle

Checkstyle은 코드 스타일 가이드를 준수하도록 돕는 도구입니다. IntelliJ IDEA에서 CheckStyle-IDEA 플러그인을 설치하고 설정하는 방법을 안내합니다. 이를 통해 본 프로젝트의 코드 스타일을 일관성 있게 유지할 수 있습니다. 본 프로젝트는 네이버 캠퍼스 핵데이 Java 코딩 컨벤션 을 준수합니다.

  1. IntelliJ IDEA에서 CheckStyle-IDEA 플러그인을 찾아 Install 버튼을 클릭합니다.

  2. Settings -> Checkstyle로 이동하여 아래와 같이 설정합니다.

    스크린샷 2024-07-19 오전 12.55.31.png

  3. Configuration File+ 버튼을 누른 뒤, naver-checkstyle-rules.xml 파일을 아래와 같이 설정합니다.

    스크린샷 2024-07-19 오전 1.00.27.png

    참고: Checkstyle 파일 경로는 현재 프로젝트 내의 toduck-backend/rule-config/naver-checkstyle-rules.xml입니다. 해당 파일의 원본은 https://github.com/naver/hackday-conventions-java/tree/master/rule-config에 있습니다.

    1. Next를 누르면 위와 같은 창이 뜨고, 프로퍼티 설정의 Value 부분을 이전에 받았던 naver-checkstyle-suppressions.xml로 작성합니다.

    스크린샷 2024-07-19 오전 1.01.51.png

저장 시 코드 포메팅 수행하기

저장 시 코드 포맷팅을 자동으로 수행하여 코드 일관성을 유지하도록 합니다.

  1. Editor -> Code Style -> Java에서 IntelliJ IDEA code style XML을 클릭합니다. 이후에 toduck-backend/rule-config/naver-intellij-formatter 경로의 파일을 선택합니다.

    스크린샷 2024-07-25 오후 5.05.48.png

  2. 설정→ 저장 시 액션에서 위에 두 항목 체크 후 저장한다.

    스크린샷 2024-07-19 오전 1.06.59.png

Husky

Husky는 Git 훅을 쉽게 관리할 수 있게 해주는 도구입니다. 이를 통해 커밋, 푸시 등의 Git 이벤트 전에 Lint 검사를 자동으로 수행할 수 있습니다. Husky 설정은 프로젝트 루트 디렉토리의 .husky 폴더를 참조합니다. 아래 명령어를 통해 husky 관련 의존성을 설치합니다.

npm install

현재 다음과 같은 경우에 Commit을 금지하고 있습니다.

  1. 커밋 메시지가 컨벤션에 맞지 않는 경우
  2. 코드 컨벤션이 맞지 않는 경우

Commit 조건은 ./.husky/pre-commit 파일에서 관리합니다.

개발 인프라 설정

<aside> ❗ Docker Compose 관련 설정은 반드시 Entity 정의 및 Database 사용을 위한 사전 설정이 완료된 이후에 진행해야 합니다.

</aside>

Docker Compose

Docker Compose를 사용하여 애플리케이션과 필요한 모든 서비스를 정의하고 실행할 수 있습니다. ./docker-infra/docker-compose.yml 파일을 사용하여 다음 명령어로 Docker Compose를 실행하세요:

cd docker-infra
REDIS_PASSWORD="abcd1234@" MYSQL_HOST_PORT=3308 MYSQL_ROOT_PASSWORD="abcd1234@" MYSQL_USER="user" MYSQL_PASSWORD="abcd1234@" REDIS_HOST_PORT=6380 RABBITMQ_USER=user RABBITMQ_PASSWORD=abcd1234@ docker-compose up -d

이 명령어는 MySQL과 Redis 서비스를 정의된 파일을 기반으로 실행합니다.

처음 설정이 진행될 때, ./sql/init.sql 에 정의된 DDL을 기준으로 데이터베이스를 정의합니다.

개발환경 MySQL의 포트는 3308, 개발환경 Redis의 포트는 6380 입니다.

Profile 활성화

본 프로젝트는 다양한 프로필을 사용하여 환경별 설정을 관리합니다. 로컬 개발 환경에서는 local 프로필을 활성화 해야 합니다.

  1. 빌드 구성 설정에서 프로필 local 설정

    스크린샷 2024-07-19 오전 2.30.32.png

변경 이력:

Version # Revision Date Description Author
v0.0.1 2024.07.19 기본 설명서 작성 설진영
v0.0.2 2024.07.26 formatter 설정 오류 해결 설진영