/healthz 아래 어드민 API가 인증 없이 열려 있었다
운영 서버의 /healthz/admin 엔드포인트에 인증을 걸어놨는데, 브라우저에서 토큰 없이 접근이 됐다. 처음엔 Spring Security 설정을 잘못 한 줄 알았다. 설정 파일을 세 번 뒤져봐도 문제가 없었다. 알고 보니 Spring Boot Actuator가 인증 정책을 통째로 삼키고 있었다. #Health Group 경로가 인증을 먹는 구조 CV
Spring, JPA, Kotlin, 대용량 트래픽 — 한국 백엔드 개발자를 위한 실전 기술 블로그.
운영 서버의 /healthz/admin 엔드포인트에 인증을 걸어놨는데, 브라우저에서 토큰 없이 접근이 됐다. 처음엔 Spring Security 설정을 잘못 한 줄 알았다. 설정 파일을 세 번 뒤져봐도 문제가 없었다. 알고 보니 Spring Boot Actuator가 인증 정책을 통째로 삼키고 있었다. #Health Group 경로가 인증을 먹는 구조 CV
새벽 2시 반, 슬랙 알림이 울렸다. "API 응답 지연 3초 초과." Kotlin + Spring Boot 서버였고, 코루틴을 "제대로" 도입한 지 2주째. 그라파나를 열어보니 힙 메모리가 톱니바퀴처럼 올라가다 GC 한 번에 뚝 떨어지는 패턴이 아니라, 그냥 일직선으로 우상향하고 있었다. 코루틴 자체의 문제가 아니었다.
Spring Boot 4.0 마이그레이션은 코드 변경보다 서드파티 라이브러리 호환성이 진짜 병목이며, 빌드를 올리기 전에 의존성 전수 조사부터 해야 한다. Spring Boot 4.0.5까지 나온 마당에, 여전히 3.x에서 업그레이드를 미루고 있는 팀이 꽤 많다. 2에서 3으로 넘어갈 때 javax에서 jakarta로 패키지를 전부 바꾸느라 며칠을 통째로
운영 서버에 Virtual Thread를 켰다. 성능 테스트에서 처리량이 3배 올랐다. 팀 전체가 기분 좋았다. 그리고 다음 날 새벽, 슬랙 알람이 터졌다. #뭐가 문제였나 Java 21의 Virtual Thread는 스레드를 거의 무제한으로 만들어준다. 기존 플랫폼 스레드 200개 제한이 사라지니까, 동시 요청이 수천 개까지 올라간다. 문제는 DB 커넥션
Spring Security가 설정한 보안 헤더를 조용히 삼켜버리는 CVE-2026-22732가 3월에 공개됐는데, 영향 범위가 5.7부터 7.0까지 사실상 운영 중인 거의 모든 버전이다. 금요일 새벽 2시, 슬랙에 보안팀 알림이 떴다. 🚨 주간 보안 스캔 결과: CSP 헤더 미탐지, HSTS 미탐지, X-Frame-Options 미탐지 처음엔 스캐너 오