백엔드 체크리스트
본 장은 TQS-S/W 인증의 백엔드 영역에 대한 상세 체크리스트를 정의합니다. 백엔드 체크리스트는 개발환경, Java 코드 컨벤션, Spring Boot, 데이터베이스, 빌드, 파일 업로드의 6개 영역으로 구성됩니다. 각 항목의 분류는 필수(O), 권장(R), 선택(S)으로 구분되며, 검증 방법을 함께 명시합니다.
32.2.1. 개발환경
개발환경 체크리스트는 프로젝트 팀이 TQS 규격에서 정의한 표준 개발환경을 올바르게 구성하고 있는지 검증합니다.
| 번호 | 항목 | 분류 | 검증 방법 |
|---|---|---|---|
| 1 | VSCode를 표준 IDE로 사용한다 | O | 설정 파일 확인 |
| 2 | .vscode/settings.json을 프로젝트에 포함하여 공유한다 | O | 파일 존재 확인 |
| 3 | .vscode/extensions.json에 필수 확장을 정의한다 | O | 파일 존재 및 내용 확인 |
| 4 | .editorconfig 파일을 프로젝트 루트에 포함한다 | O | 파일 존재 확인 |
| 5 | Java 21을 런타임으로 사용한다 | O | pom.xml의 java.version 확인 |
| 6 | Node.js LTS 버전을 사용한다 | O | .nvmrc 파일 확인 |
개발환경 항목은 프로젝트의 기본 인프라를 구성하는 요소입니다. 모든 팀원이 동일한 개발환경에서 작업할 수 있도록 설정 파일을 버전 관리 시스템에 포함해야 합니다.
32.2.2. Java 코드 컨벤션
Java 코드 컨벤션 체크리스트는 소스코드의 일관성과 가독성을 검증합니다.
| 번호 | 항목 | 분류 | 검증 방법 |
|---|---|---|---|
| 7 | Google Java Format을 spotless-maven-plugin으로 적용한다 | O | mvn spotless:check 실행 결과 확인 |
| 8 | 포매터 위반 건수가 0건이다 | O | 빌드 로그 확인 |
| 9 | 클래스명은 PascalCase를 사용한다 | O | 코드 리뷰 |
| 10 | 메서드명과 변수명은 camelCase를 사용한다 | O | 코드 리뷰 |
| 11 | 상수명은 UPPER_SNAKE_CASE를 사용한다 | O | 코드 리뷰 |
| 12 | 패키지명은 소문자만 사용한다 | O | 코드 리뷰 |
| 13 | 기능별 패키지 구조를 적용한다 (계층별 패키지 구조 미사용) | O | 디렉토리 구조 확인 |
| 14 | 매직 넘버를 사용하지 않고 상수로 정의한다 | R | 코드 리뷰 |
| 15 | 변경되지 않는 변수에 final 키워드를 사용한다 | R | 코드 리뷰 |
| 16 | 메서드당 라인 수를 30줄 이하로 유지한다 | R | 코드 리뷰 |
| 17 | 불필요한 주석을 작성하지 않는다 (자명한 코드 우선) | R | 코드 리뷰 |
코드 컨벤션은 프로젝트의 유지보수성에 직접적으로 영향을 미칩니다. Google Java Format은 빌드 프로세스에 통합하여 자동으로 검증해야 합니다.
32.2.3. Spring Boot
Spring Boot 체크리스트는 프레임워크의 올바른 사용과 표준 설정 적용 여부를 검증합니다.
| 번호 | 항목 | 분류 | 검증 방법 |
|---|---|---|---|
| 18 | Spring Boot 3.x 버전을 사용한다 | O | pom.xml의 spring-boot-starter-parent 버전 확인 |
| 19 | 프로파일별 설정 파일을 분리한다 (local / dev / staging / prod) | O | application-{profile}.yml 파일 존재 확인 |
| 20 | @ConfigurationProperties를 사용하여 설정을 타입 안전하게 관리한다 | R | 코드 리뷰 |
| 21 | @RestControllerAdvice를 사용하여 글로벌 예외 처리를 구현한다 | O | 코드 확인 |
| 22 | 에러 코드를 Enum으로 정의하여 관리한다 | O | 코드 확인 |
| 23 | SLF4J를 사용하여 로깅한다 (System.out.println 미사용) | O | 코드 검색 (System.out 검색 결과 0건) |
| 24 | 로그 레벨을 환경별로 적절히 설정한다 | O | 설정 파일 확인 |
| 25 | @Transactional의 범위를 서비스 레이어에 한정한다 | R | 코드 리뷰 |
| 26 | 컨트롤러에 비즈니스 로직을 포함하지 않는다 | O | 코드 리뷰 |
Spring Boot의 설정과 구조는 프로젝트의 안정성과 운영 편의성에 핵심적인 영향을 미칩니다. 프로파일 분리와 글로벌 예외 처리는 반드시 적용해야 합니다.
32.2.4. 데이터베이스
데이터베이스 체크리스트는 데이터 접근 계층의 표준 구현과 스키마 관리 체계를 검증합니다.
| 번호 | 항목 | 분류 | 검증 방법 |
|---|---|---|---|
| 27 | PostgreSQL을 데이터베이스로 사용한다 | O | application.yml 데이터소스 설정 확인 |
| 28 | jOOQ를 데이터 접근 계층으로 사용한다 (JPA / Hibernate 미사용) | O | pom.xml 의존성 확인 |
| 29 | Flyway를 사용하여 데이터베이스 마이그레이션을 관리한다 | O | pom.xml 의존성 및 마이그레이션 파일 확인 |
| 30 | jOOQ codegen을 Maven 빌드에 연동한다 | O | pom.xml의 jooq-codegen-maven 플러그인 확인 |
| 31 | HikariCP 커넥션 풀을 설정한다 | O | application.yml HikariCP 설정 확인 |
| 32 | 테이블명, 컬럼명에 snake_case를 사용한다 | O | DDL 파일 확인 |
| 33 | Flyway 마이그레이션 파일 네이밍 규칙을 준수한다 (V{버전}__{설명}.sql) | O | 마이그레이션 파일명 확인 |
| 34 | 인덱스 네이밍 규칙을 준수한다 (idx_{테이블}_{컬럼}) | R | DDL 파일 확인 |
데이터베이스 영역은 TQS 규격의 핵심 기술 스택인 PostgreSQL + jOOQ + Flyway의 올바른 적용을 검증합니다. JPA 또는 Hibernate를 사용하는 경우 필수 항목 미충족으로 판정합니다.
32.2.5. 빌드
빌드 체크리스트는 Maven 빌드 구성의 표준 준수와 품질 도구 연동 여부를 검증합니다.
| 번호 | 항목 | 분류 | 검증 방법 |
|---|---|---|---|
| 35 | pom.xml이 TQS 표준 구조를 따른다 | O | 파일 구조 확인 |
| 36 | maven-compiler-plugin에 Java 21 설정을 명시한다 | O | pom.xml 플러그인 설정 확인 |
| 37 | JaCoCo 플러그인을 설정하여 커버리지를 측정한다 | O | pom.xml의 jacoco-maven-plugin 확인 |
| 38 | JaCoCo 라인 커버리지 기준을 80% 이상으로 설정한다 | O | JaCoCo 리포트 확인 |
| 39 | JaCoCo 브랜치 커버리지 기준을 70% 이상으로 설정한다 | O | JaCoCo 리포트 확인 |
| 40 | OWASP Dependency-Check 플러그인을 설정한다 | R | pom.xml 플러그인 확인 |
| 41 | OWASP 스캔 결과 CVSS 7 이상 취약점이 0건이다 | R | 스캔 리포트 확인 |
| 42 | maven-surefire-plugin을 설정하여 테스트를 빌드에 통합한다 | O | pom.xml 플러그인 확인 |
빌드 구성은 프로젝트의 품질 게이트 역할을 수행합니다. JaCoCo 커버리지 기준과 OWASP 의존성 스캔은 코드 품질과 보안을 자동으로 검증하는 핵심 도구입니다.
32.2.6. 파일 업로드
파일 업로드 체크리스트는 파일 업로드 기능의 보안과 스토리지 관리 체계를 검증합니다.
| 번호 | 항목 | 분류 | 검증 방법 |
|---|---|---|---|
| 43 | 업로드 파일의 확장자를 화이트리스트 방식으로 검증한다 | R | 코드 리뷰 |
| 44 | 업로드 파일의 MIME 타입을 서버 측에서 검증한다 | R | 코드 리뷰 |
| 45 | 업로드 파일 크기를 제한한다 | R | 설정 파일 확인 |
| 46 | 스토리지 디렉토리 구조가 TQS 표준을 준수한다 | R | 설정 파일 및 디렉토리 구조 확인 |
| 47 | 업로드된 파일명을 UUID 등으로 변환하여 저장한다 | R | 코드 리뷰 |
파일 업로드는 보안 취약점이 발생하기 쉬운 영역입니다. 확장자와 MIME 타입을 모두 검증하는 이중 검증 방식을 적용하는 것을 권장합니다.
32.2.7. 항목 요약
백엔드 체크리스트의 전체 항목 수와 분류별 분포는 다음과 같습니다.
| 영역 | 필수(O) | 권장(R) | 선택(S) | 합계 |
|---|---|---|---|---|
| 개발환경 | 6 | 0 | 0 | 6 |
| Java 코드 컨벤션 | 7 | 4 | 0 | 11 |
| Spring Boot | 7 | 2 | 0 | 9 |
| 데이터베이스 | 7 | 1 | 0 | 8 |
| 빌드 | 6 | 2 | 0 | 8 |
| 파일 업로드 | 0 | 5 | 0 | 5 |
| 합계 | 33 | 14 | 0 | 47 |
백엔드 체크리스트는 총 47개 항목으로 구성됩니다. 필수 항목 33개를 모두 충족해야 기본 인증을 획득할 수 있으며, 권장 항목 14개의 충족률에 따라 우수 또는 최우수 인증 등급이 결정됩니다.