Java7 @Async 사용 시 주의사항과 ThreadPool 설정 @Async란?Spring Framework에서 제공하는 비동기 처리 어노테이션메서드 실행을 별도 스레드에서 처리하여 메인 스레드를 블로킹하지 않음@Async 사용 조건1. @EnableAsync 설정 필수@Configuration@EnableAsyncpublic class AsyncConfig { // 설정 내용}2. public 메서드에만 적용 가능// ✅ 올바른 사용@Asyncpublic CompletableFuture asyncMethod() { return CompletableFuture.completedFuture("결과");}// ❌ 동작하지 않음@Asyncprivate void privateMethod() { }3. 같은 클래스 내부 호출 시 동작하지 않음// ❌ 비동기로 동작하.. 2025. 8. 17. IntelliJ에서 Spring Boot VM Options 설정하기 스프링부트 개발하면서 IntelliJ에서 VM Options 설정하는 방법을 정리했다.VM Options란?JVM(Java Virtual Machine)에 전달되는 시스템 프로퍼티나 환경변수를 설정하는 방법이다.쉽게 말해서 코드에 박기 곤란한 설정값들을 실행할 때 주입해주는 거다.IntelliJ에서 VM Options 설정하는 방법1. Run Configuration 열기상단 메뉴바에서 Run > Edit Configurations 클릭또는 실행 버튼 옆 드롭다운에서 Edit Configurations 선택2. 실행옵션추가 -> VM Options 입력VM Options 필드에 -D 옵션으로 시작하는 프로퍼티들을 입력각 옵션은 줄바꿈 또는 공백으로 구분3. 설정 예시와 용도AWS SES 설정 (이메일 발.. 2025. 7. 22. Java 백엔드 장애 발생 시 빠른 원인 파악 방법 1. 즉시 확인사항시스템 상태 점검CPU 사용률: top, htop 명령어로 확인메모리 사용량: free -h 또는 JVM 힙 메모리 상태 확인디스크 용량: df -h 명령어로 디스크 공간 확인네트워크 연결: netstat -an 또는 ss -an으로 포트 상태 확인애플리케이션 로그 확인에러 로그: tail -f application.log 또는 grep ERRORGC 로그: -XX:+PrintGC 옵션으로 가비지 컬렉션 상태 확인액세스 로그: 요청 패턴 및 응답 시간 분석2. JVM 관련 진단메모리 분석힙 덤프 생성: jmap -dump:format=b,file=heap.hprof [PID]메모리 사용량: jmap -histo [PID] 또는 jstat -gc [PID]OutOfMemoryError: .. 2025. 7. 8. DB 커넥션 풀 사이즈 설정 기준 - Java 개발자 기준 커넥션 풀이란?DB 연결을 미리 생성해서 풀에 저장요청 시 풀에서 가져다 쓰고 반납매번 새로 생성/삭제하는 오버헤드 제거풀 사이즈가 중요한 이유너무 작으면: 대기 시간 증가, 성능 저하너무 크면: 메모리 낭비, DB 부하 증가적절한 균형점 찾는 것이 핵심기본 설정 공식최소 풀 사이즈 = CPU 코어 수최대 풀 사이즈 = CPU 코어 수 × 2 ~ 4[홈페이지 제작 기준 설정값]소규모 개인 홈페이지최소: 2-5개최대: 10-20개동시 접속자 50명 이하중소규모 회사 홈페이지최소: 5-10개최대: 20-50개동시 접속자 100-500명대규모 서비스최소: 10-20개최대: 50-100개 이상부하 테스트 필수HikariCP 설정 예시# application.ymlspring: datasource: hik.. 2025. 6. 11. Java Exception 처리 전략과 커스텀 예외 설계 1. Exception 처리 기본 전략Checked vs Unchecked Exception 선택 기준Checked Exception: 복구 가능한 예외 (파일 없음, 네트워크 연결 실패)Unchecked Exception: 프로그래밍 오류 (NPE, IllegalArgument)실무 권장: 대부분 RuntimeException 상속 사용Exception 처리 레벨 구분// Controller 레벨: HTTP 상태코드 변환// Service 레벨: 비즈니스 로직 예외 처리// Repository 레벨: 데이터 접근 예외 변환2. 커스텀 예외 설계 원칙예외 계층 구조 설계// 최상위 비즈니스 예외public abstract class BusinessException extends RuntimeExcepti.. 2025. 6. 8. 테스트 커버리지는 얼마나 확보해야 할까? 테스트 커버리지란?정의: 전체 코드 중 테스트가 실행된 코드의 비율측정 단위: 퍼센트(%)로 표현목적: 코드 품질과 안정성 확보적정 테스트 커버리지 수치일반적인 권장사항최소 기준: 70% 이상권장 수준: 80-90%100%는 현실적이지 않음 (비용 대비 효과 낮음)프로젝트별 기준금융/의료 시스템: 90% 이상일반 웹 애플리케이션: 80% 정도스타트업/MVP: 60-70%커버리지 유형별 이해Line Coverage (라인 커버리지)public class Calculator { public int divide(int a, int b) { if (b == 0) { throw new IllegalArgumentException("Division by zero"); // 이 .. 2025. 5. 30. 이전 1 2 다음