Java/Spring Boot 백엔드 온보딩 체크리스트
백엔드 개발자로 합류하셨나요? Java와 Spring Boot 기반 프로젝트를 빠르게 빌드하고 실행하기 위한 기술 스택 세팅 가이드입니다.
1. JDK 선택 및 설치 (17/21)
최근 프로젝트는 LTS 버전인 17 또는 21을 주로 사용합니다. SDKMAN을 사용하여 버전을 관리하는 것을 추천합니다.
curl -s "https://get.sdkman.io" | bash
# JDK 21 설치
sdk install java 21.0.1-tem
2. IntelliJ IDEA 설정
자바 개발의 표준 IDE인 IntelliJ 설정을 최적화하세요.
- Lombok 플러그인: 최신 버전에는 내장되어 있으니 활성화 여부 확인
- Annotation Processing: 컴파일 시 어노테이션 처리를 위해 켜야 합니다.
- Editor Config: 팀의 코딩 컨벤션을 따르기 위한 설정 파일 확인
3. Docker 및 데이터베이스
로컬 개발 환경에서 DB를 직접 설치하는 대신 Docker Compose를 사용하세요.
docker-compose up -d
MySQL, PostgreSQL, Redis 등 필요한 컨테이너가 정상적으로 뜨는지 확인합니다.
4. 검증 (빌드 및 실행)
터미널에서 직접 빌드를 수행하여 환경이 완벽한지 체크합니다.
java -jar build/libs/*.jar
Java/Spring 개발 FAQ
Q1. Oracle JDK와 OpenJDK 중 무엇을 써야 하나요?
A. 라이선스 문제로 인해 대부분의 기업에서는 OpenJDK(Temurin, Amazon Corretto 등)를 사용합니다.
Q2. Maven과 Gradle 중 무엇이 대세인가요?
A. 신규 프로젝트는 설정이 유연하고 속도가 빠른 Gradle을 주로 선택합니다.
Q3. JUnit 4와 5의 차이가 큰가요?
A. JUnit 5는 모듈화가 잘 되어 있고 다양한 테스트 기능을 지원합니다. 신규라면 JUnit 5를 공부하세요.
Q4. Spring Boot 2.x와 3.x의 주요 차이점은?
A. Boot 3.x는 Java 17 이상이 필수이며, Jakarta EE API를 사용합니다.
Q5. API 문서는 어떻게 관리하나요?
A. Swagger(SpringDoc)나 Spring Rest Docs를 사용하여 자동화하는 것이 일반적입니다.
Q6. JPA 사용 시 N+1 문제가 무엇인가요?
A. 연관 관계 데이터 조회 시 불필요한 쿼리가 다량 발생하는 현상입니다. Fetch Join 등으로 해결합니다.
Q7. 로컬 DB 연결이 안 됩니다.
A. application.yml의 URL, Username, Password가 Docker 컨테이너 설정과 일치하는지 확인하세요.
Q8. 로그가 안 찍혀요.
A. 로그 레벨(debug, info) 설정이나 logback-spring.xml 설정이 누락되었는지 확인하세요.
Q9. JVM 메모리 설정은 어떻게 하나요?
A. 실행 시 `-Xms`, `-Xmx` 옵션을 통해 힙 메모리 크기를 조절할 수 있습니다.
Q10. 스프링 시큐리티 설정이 너무 복잡해요.
A. 3.x부터는 컴포넌트 기반 설정 방식으로 바뀌었으니 공식 문서의 마이그레이션 가이드를 참조하세요.