Spring
총 18편
JWT Refresh Token 탈취 감지 — 서버 저장과 Reuse Detection
JWT Refresh Token을 "서명만 검증하면 된다"고 생각했다가 실제 사고를 겪었습니다. RT를 서버에 저장하지 않으면 Reuse Detection 자체가 불가능하고, 탈취된 RT는 수명 내내 살아있습니다. 직접 운영하는 시스템에서 이 사실을 확인했습니다.
캐시 테이블 불일치로 인한 전자계약 발송 실패 - 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 병렬 처리로 20배 빠르게 만들기 (2편)
병목을 찾았으니 이제 해결할 차례입니다. 병렬 처리, 청크 조정, 인덱스 추가로 처리 속도를 20배 올린 방법을 단계별로 설명합니다.
접속기록 배치가 느린 이유 (1편) - 문제 진단과 병목 분석
접속 기록 배치가 느렸습니다. 어디가 병목인지 찾는 과정부터 — JVM 프로파일러, 슬로우 쿼리 로그, 청크 사이즈 분석까지. 진단편입니다.
Spring WebFlux는 무엇이며, 왜 쓰나?
Spring WebFlux가 무엇이고 언제 써야 하는지 실무 관점 정리. 논블로킹 비동기 처리가 필요한 MSA 환경에서 WebFlux를 도입하게 된 배경과 기존 MVC 방식과의 차이를 설명합니다.
트랜잭션 간단정리
스프링 개발자라면 반드시 알아야 할 트랜잭션 개념 간단 정리. ACID 특성, 격리 레벨, @Transactional 주의사항까지 실무에서 자주 실수하는 포인트를 중심으로 설명합니다.
Spring JPA 영속성컨텍스트 간단정리
Spring JPA의 핵심인 영속성 컨텍스트(Persistence Context) 간단 정리. 1차 캐시, 변경 감지(Dirty Checking), 지연 로딩의 동작 원리를 이해하면 JPA 관련 버그의 절반이 해결됩니다.
Spring Batch 간단 정리
Spring Batch를 처음 접하는 개발자를 위한 핵심 정리. Tasklet과 Chunk 방식의 차이, 실무에서 반드시 알아야 할 ItemReader/Writer 선택 기준과 트랜잭션 처리 전략을 정리했습니다.
스프링 프레임워크란 무엇인가? - 2 (Request Life Cycle)
스프링에서 HTTP 요청이 들어왔을 때 어떤 경로로 처리되는지 Request Life Cycle 전체를 그림으로 이해하는 가이드. 이 구조를 모르면 스프링 개발자가 아니라 코더에 머문다는 생각으로 작성했습니다.
스프링 프레임워크란 무엇인가? - 1 (개요편)
스프링 프레임워크가 무엇인지, 왜 자바 엔터프라이즈 개발의 표준이 되었는지 개요편. IoC, DI, AOP 등 핵심 개념을 처음 접하는 개발자도 이해할 수 있게 정리했습니다.