본문으로 건너뛰기

개발 환경

본 문서는 빌드와 검사 절차, 정적 분석 도구의 역할 분담, 설정 주입 경로를 정의합니다.

라이브러리 버전과 의존성의 원본은 build.gradle 입니다. 본 문서가 옮겨 적지 않습니다.

1. 명령

작업 명령
개발 서버 ./gradlew bootRun --args="--spring.profiles.active=local"
테스트 ./gradlew test
빌드 ./gradlew build
린트 ./gradlew check -x test
포맷 적용 ./gradlew spotlessApply

2. 빌드가 성립하는 조건

빌드는 실행 중인 데이터베이스 없이 통과해야 합니다.

스키마에서 코드를 생성하는 구성에서는 이 조건이 저절로 성립하지 않습니다. 생성기가 실행 중인 데이터베이스에 붙는 방식을 고르면 빌드가 외부 상태에 의존하게 되고, CI가 컨테이너를 먼저 띄워야 합니다. 마이그레이션 SQL에서 직접 생성하면 그 의존이 사라집니다(데이터 접근 6절).

컨테이너가 필요한 것은 통합 테스트뿐이며 Testcontainers 가 1회용 PostgreSQL 을 띄웁니다.

3. 로컬 실행에 필요한 것

대상 조건
PostgreSQL 기본 접속은 localhost:5432/devkit 이며 DB_URL · DB_USERNAME · DB_PASSWORD 로 덮을 수 있습니다
시크릿 auth.secret 은 기본값이 없어 주입하지 않으면 기동에 실패합니다(보안 4절)
메일 SMTP 자격증명이 없으면 발송만 실패하고 나머지는 동작합니다. OTP 코드를 직접 읽어야 하는 검증에서는 로컬 SMTP 캐처로 돌리되 mail.smtp.auth · starttls.enable · starttls.required 셋을 모두 꺼야 합니다. 기본값이 Gmail 기준의 true 이며 셋 중 하나만 남아도 연결이 거부됩니다
소셜 로그인 키를 넣지 않으면 자리표시자로 기동합니다. 소셜 없이도 바로 실행할 수 있어야 하기 때문입니다

로컬 전용 값은 추적하지 않는 src/main/resources/application-local.properties 에 두고 --spring.profiles.active=local 로 활성화합니다.

4. 정적 분석

코딩 표준은 검토자의 판단이 아니라 도구가 강제합니다. 세 도구의 역할을 겹치지 않게 나눕니다.

도구 역할 원본
포맷터 포맷을 기계가 재작성합니다. 개발자가 포맷을 관리하지 않습니다 빌드 설정
컨벤션 검사기 명명 규칙과 금지 패턴을 빌드 오류로 처리합니다 config/checkstyle/checkstyle.xml
버그 패턴 탐지기 바이트코드를 분석해 결함 패턴을 찾습니다 빌드 설정

도구 선택의 근거는 결정-0056에 있습니다. Lombok 을 어느 계층에 허용하는지처럼 린터 설정으로 표현할 수 없는 표준은 결정-0023이 소유합니다.

컨벤션 검사기에 포맷 규칙을 넣지 않습니다. 자동으로 고칠 수 있는 항목이 개발자에게 오류로 전달되면, 도구가 해 줄 일을 사람이 하게 됩니다.

정당한 예외는 억제 목록에 사유 주석과 함께 등록합니다. 억제 목록은 표준을 벗어난 위치와 사유의 등록부입니다.

중요

사유가 없는 억제를 등록하지 않습니다

주석이 없는 항목은 나중에 그것이 여전히 필요한지 판단할 수 없어 영구히 남습니다. 억제가 쌓이면 검사기가 통과시키는 코드의 범위를 아무도 모르게 되며, 그때부터 게이트는 통과 여부만 알려 주는 장치가 됩니다.

생성 코드는 세 도구 모두에서 제외합니다. 우리가 쓰지 않은 코드에 우리 표준을 적용할 이유가 없습니다.

5. 설정과 프로파일

파일 담는 값
공통 설정 전 환경에서 같은 값
환경별 설정 환경마다 달라지는 값
로컬 설정 로컬 전용 값. 추적하지 않습니다

주입 경로는 셋이며 아래로 갈수록 우선순위가 높습니다. application.properties 의 ${VAR:기본값} 은 속성 자리표시자이며 기본값이 없으면 반드시 주입해야 합니다.

방법 쓰는 곳
application-local.properties 로컬 개발. 추적하지 않습니다
환경변수 배포 환경
실행 인자 일회성 덮어쓰기

공통 설정에 환경별 값의 기본값을 두지 않습니다. 자격증명뿐 아니라 콜백 주소처럼 환경마다 달라지는 값도 마찬가지입니다. 기본값이 있으면 환경별 설정에 적는 것을 잊었을 때 조용히 그 값으로 동작합니다.

개발 편의 기능은 운영 프로파일에서 차단합니다. 명세 화면, SQL 로그, 요청 본문 로그가 여기 해당합니다.

6. 문서 주석

설정 파일은 코드보다 열람 빈도가 낮으므로 주석 요구 수준을 올립니다.

계층 위치 담는 것
파일 머리 최상단 이 파일이 무엇의 원본인지, 바꾸면 무엇에 영향이 가는지, 근거 문서
항목 각 항목 위 그 항목의 기능 한 줄
예외 억제 목록 표준을 벗어난 사유

설정 파일이 원본으로 기능하려면 문서 수준의 가독성을 확보해야 합니다. 값만 나열된 파일은 원본이 아니라 결과입니다.

© 2026 dev.goraebap