Spring
총 17편
MySQL 8에서 격리 수준을 올려도 Lost Update는 막히지 않았습니다
재고 100개에 주문 120건을 동시에 넣고 격리 수준 3가지와 비관적 락, 조건부 UPDATE, 낙관적 락을 5회씩 돌려 본 기록입니다.
인덱스가 있는데도 느린 쿼리와 복합·커버링 인덱스
계약 300만 건 테이블에서 같은 쿼리가 사이트에 따라 2ms와 226ms로 갈렸고, 복합 인덱스로 0.8ms가 됐으며 커버링 인덱스는 거의 차이가 없었던 측정 기록입니다.
JWT Refresh Token 탈취 감지와 Reuse Detection
Refresh Token 재사용 감지의 상태 관리, 폐기 작업의 롤백 문제, 동시 갱신과 탈취를 구분하기 어려운 이유를 설명합니다.
캐시 테이블 불일치로 인한 전자계약 발송 실패 - Spring Cache의 숨겨진 함정
Spring Cache를 쓰다가 실제 DB와 캐시가 불일치하여 전자계약 발송이 실패했습니다. 문제를 발견한 과정과 캐시 무효화 전략으로 해결한 방법을 정리합니다.
스케줄러 배치가 어쩔 땐 성공하고 어쩔 땐 실패한 이유 - 데드락 해결기
10분 주기 스케줄러에서 간헐적 데드락이 발생할 때, 원인 분석부터 4가지 해결 방법과 실제 적용 효과까지 정리합니다.
200줄 메서드를 파사드 패턴으로 정복하기
200줄 메서드를 파사드 패턴으로 해체한 실전 리팩토링기. 외부 API 호출·검증·변환·저장·예외 처리가 뒤섞인 갓 메서드를 작은 서비스로 분리하고 Facade로 조합하는 과정을 단계별로 기록했습니다.
시니어도 헷갈리는 @Transactional 실수 5가지
@Transactional을 잘못 사용하면 데이터가 롤백되지 않는다는 걸 장애 후에 알았습니다. 자체 호출, checked exception, readOnly 오해 등 실수 유형과 올바른 사용법을 정리합니다.
실무에서 바로 쓰는 JPA (5편) - 실무 안티패턴 총정리
실무에서 자주 저지르는 JPA 실수 7가지를 정리했습니다. N+1 무시, 영속성 컨텍스트 오남용, 벌크 연산 후 flush 누락 등 — 코드 예시와 수정 방법을 함께 담았습니다.
실무에서 바로 쓰는 JPA (4편) - 엔티티 설계 마스터하기
양방향 연관관계 남발·cascade 무분별 사용·setter 도배. 엔티티 설계부터 고쳐야 N+1도 잡힌다. 단방향 우선·cascade 최소화·Builder 패턴으로 변경 경계를 제한한 엔티티 설계하는 실무 기준.
실무에서 바로 쓰는 JPA (3편) - 쿼리 최적화 실전
JPQL, QueryDSL, Native Query — 언제 뭘 써야 하는지 성능 측정 결과와 함께 정리합니다. 슬로우 쿼리를 발견했을 때 단계별로 최적화하는 방법도 다룹니다.
실무에서 바로 쓰는 JPA (2편) - 영속성 컨텍스트와 흔한 실수들
영속성 컨텍스트를 모르면 JPA는 시한폭탄이다. OSIV 함정, detached 객체 수정, 벌크 연산 후 flush 누락까지. N+1이 아닌 곳에서 성능을 잡아먹는 흔한 실수 모음.
실무에서 바로 쓰는 JPA (1편) - N+1 문제 해결
JPA N+1 문제를 실무에서 마주치면 어떻게 해결할까요? Fetch Join, EntityGraph, Batch Size 세 가지 방법을 성능 측정 결과와 함께 비교하고, 상황별로 어떤 방법을 선택해야 하는지 정리합니다.
Spring Batch 병렬 처리와 청크 크기 조정 (2편)
병목을 찾았으니 이제 해결할 차례입니다. 병렬 처리와 청크 조정의 트레이드오프를 살펴보고, 성능 수치의 측정 범위와 한계를 구분합니다.
접속기록 배치가 느린 이유 (1편) - 문제 진단과 병목 분석
접속 기록 배치가 느렸습니다. 어디가 병목인지 찾는 과정부터 — JVM 프로파일러, 슬로우 쿼리 로그, 청크 사이즈 분석까지. 진단편입니다.
Spring WebFlux는 무엇이며, 왜 쓰나?
Spring WebFlux가 무엇이고 언제 써야 하는지 실무 관점 정리. 논블로킹 비동기 처리가 필요한 MSA 환경에서 WebFlux를 도입하게 된 배경과 기존 MVC 방식과의 차이를 설명합니다.
Spring Batch 간단 정리
Spring Batch를 처음 접하는 개발자를 위한 핵심 정리. Tasklet과 Chunk 방식의 차이, 실무에서 반드시 알아야 할 ItemReader/Writer 선택 기준과 트랜잭션 처리 전략을 정리했습니다.
스프링 프레임워크란 무엇인가 — 핵심 개념과 Request Life Cycle
스프링 프레임워크의 핵심 개념(IoC, DI, AOP, MVC)과 HTTP 요청이 Filter·DispatcherServlet·HandlerMapping·Controller를 거쳐 응답이 되기까지의 흐름을 한 편에 정리했습니다.