반응형

코딩:개발일지 34

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.07.08

통합테스트에서 DB 데이터 초기화 방법

왜 DB 데이터 초기화가 필요할까?테스트 간 데이터 오염을 방지하고 독립적인 테스트 환경을 보장하기 위해서다.처음 프로젝트를 진행하면서 테스트가 간헐적으로 실패하는 현상을 겪었는데,원인을 찾아보니 이전 테스트에서 생성된 데이터가 남아있어서 발생한 문제였다.예를 들어 findAll() 메서드를 테스트할 때 예상한 결과는 3개였는데 실제로는 5개가 나오는 식이었다.**테스트 격리(Test Isolation)**의 중요성을 깨달은 순간이었다.각 테스트는 다른 테스트의 영향을 받지 않아야 한다는 기본 원칙을 지켜야 했다.주요 초기화 방법들1. @Transactional + @Rollback@SpringBootTest@Transactionalclass UserServiceTest { @Test ..

코딩:개발일지 2025.07.04

API 문서 작성 도구 선택 가이드 (Swagger, Redoc 등)

API 문서 작성에 가장 많이 사용되는 도구들을 간단히 비교 정리 주요 API 문서 작성 도구1. Swagger UI특징: OpenAPI 스펙 기반의 대표적인 도구장점: 실시간 테스트 가능, 무료 사용단점: 디자인 커스터마이징 제한2. Redoc특징: 깔끔한 UI와 반응형 디자인장점: 모바일 친화적, 빠른 로딩 속도단점: 테스트 기능 부족3. Postman특징: API 테스트와 문서화 통합 솔루션장점: 팀 협업 기능 강화, 자동 문서 생성단점: 유료 플랜 필요 (고급 기능)4. GitBook특징: 위키 스타일의 문서 작성 플랫폼장점: 직관적인 편집기, 버전 관리단점: API 특화 기능 부족5. Insomnia특징: API 클라이언트 겸 문서화 도구장점: GraphQL 지원 우수단점: 문서 퍼블리싱 기능 ..

코딩:개발일지 2025.06.04

코드 리뷰에서 자주 지적받는 실수는 무엇일까

주니어 자바 개발자로 일하면서 자주 언급하는 실수들을 정리했다. 1. 변수명과 메서드명이 불명확변수명을 a, b, c나 temp, data 같은 모호한 이름으로 짓는 실수// 나쁜 예: String s = getUserData();// 좋은 예: String userName = getUserData();2. 매직 넘버 사용숫자를 하드코딩해서 나중에 유지보수가 힘들어진다.// 나쁜 예: if (user.getAge() > 19)// 좋은 예: if (user.getAge() >= ADULT_AGE)3. 메서드가 너무 김하나의 메서드에서 너무 많은 일을 처리하려고하는 점. 100줄 넘는 메서드는 읽기도 어렵고 테스트하기도 어렵다. 4. Exception 처리를 대충모든 예외를 Exception으로 잡거나 p..

코딩:개발일지 2025.05.31

테스트 커버리지는 얼마나 확보해야 할까?

테스트 커버리지란?정의: 전체 코드 중 테스트가 실행된 코드의 비율측정 단위: 퍼센트(%)로 표현목적: 코드 품질과 안정성 확보적정 테스트 커버리지 수치일반적인 권장사항최소 기준: 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.05.30
728x90
반응형