Blog

Backend

자바 리플렉션과 Spring·JPA가 객체를 만드는 방식

실행 중에 클래스 메타데이터를 읽는 리플렉션의 동작 원리와 Spring 생성자 주입, JPA 기본 생성자의 관계를 정리합니다.

Backend

모니터링 장애 대응 실습 3편 - 앱이 죽어가는 신호, 메모리 누수와 에러율 급증

힙은 톱니를 잃고 우상향하다 로그 한 줄 없이 죽었고, 에러율은 0에서 20%로 치솟아 50초 만에 Discord를 울렸습니다. 추세형과 급변형, 정반대 장애 두 개를 추적한 기록입니다.

Backend

모니터링 장애 대응 실습 2편 - 자원이 마르면 생기는 일, 커넥션 풀 고갈과 느린 쿼리

HikariCP 풀 고갈은 에러율 93%로 비명을 질렀고, 100만 행 풀스캔은 에러 0건인 채 11배 느려졌습니다. 같은 자원 장애에서 정반대 신호를 추적한 기록입니다.

Backend

모니터링 장애 대응 실습 1편 - 정상이 뭔지 모르면 장애도 못 본다

장애 대응 경험을 만들기 위해 Spring Boot 앱에 Prometheus, Grafana, Loki 관측 스택을 직접 구성하고, k6 부하로 p95/p99, 에러율, HikariCP의 baseline을 확보한 기록.

Backend

테스트가 어려운 이유는 테스트 코드가 아니라 설계에 있다

테스트 코드를 잘 짜고 싶어서 공부하다 보니, 문제는 대부분 설계에 있었습니다. 제어할 수 없는 값, 외부 의존성, 아키텍처 관점에서 테스트하기 좋은 코드란 무엇인지 공부하고 정리한 내용입니다.

Database

DB 조회 성능 개선기 - 30초를 5초로

스칼라 서브쿼리를 CTE + PIVOT으로 리팩토링하고, 커버링 인덱스를 적용해 조회 성능을 6배 개선한 과정을 정리합니다.

Backend

TPS와 성능 최적화 - 서버 늘리기 전에 코드부터 보자

TPS의 개념부터 벌크 처리, 비동기, CQRS, 샤딩까지 실무 성능 최적화 기법을 비용 효율 순으로 정리합니다.