Wiki

Backend

응답 시간 백분위 (p50 / p95 / p99)

평균과 최댓값이 놓치는 것을 백분위가 어떻게 잡아내는지, 계산 방식과 Prometheus histogram_quantile의 오차까지 정리합니다.

Spring

Spring Security 요청 흐름과 필터 체인

요청이 Controller에 닿기까지 Spring Security가 어느 길목에서 동작하는지, 어떻게 필터 체인에 끼어들고, 결국 무슨 일을 하는지 큰 그림을 정리합니다.

JPA

JPA 낙관적 락이 새는 3가지 지점

@Version 한 줄로는 끝나지 않습니다. 락이 우회되는 함정, 트랜잭션 안에서 예외를 못 잡는 이유, 진짜 동작을 검증하는 동시성 테스트 패턴까지 정리합니다.

Spring

스프링 내부 이벤트, 왜 쓸까?

스프링 내부 이벤트를 왜 쓰는지, 직접 호출과 무엇이 다른지 정리합니다.

Java

Checked Exception과 Unchecked Exception

Java의 Checked Exception과 Unchecked Exception의 차이, 선택 기준, Spring 트랜잭션 롤백과 실무에서 주의할 점을 정리합니다.

Java

ReentrantLock 기반 동시성 제어

멀티스레드 환경에서 공유 자원을 보호하는 방법. ReentrantLock, ConcurrentHashMap, computeIfAbsent를 조합해 계좌별 인메모리 락을 구현하고, 인메모리 락과 분산 락의 선택 기준을 살펴봅니다.

Spring

Bean Validation과 @Valid

Bean Validation의 선언-실행 두 단계 구조를 이해하고, @Valid가 동작하지 않는 상황과 SelfValidating 패턴으로 생성 시점에 검증하는 방법을 살펴봅니다.

Testing

Fake 객체와 Mockito

테스트에서 외부 의존성을 대체하는 두 가지 방법, Fake 객체와 Mockito의 차이와 언제 어떤 것을 선택해야 하는지 살펴봅니다.

Spring

예외 계층 설계

커스텀 예외가 늘어날 때 계층 구조로 정리하는 방법, Spring 전역 예외 처리, RFC 9457 표준 에러 응답까지 순서대로 살펴봅니다.

Java

일급 컬렉션 (First Class Collection)

컬렉션을 클래스로 감싸는 이유와 일급 컬렉션이 가져다주는 네 가지 장점을 정리합니다.

Java

Value Object (VO)

원시 타입 대신 Value Object를 사용하는 이유와 불변 객체 설계 방법을 정리합니다.

Java

자바 메모리 구조 (JVM)

JVM의 메모리 구조를 영역별로 정리하고, 각 영역의 역할과 동작 방식을 설명합니다.

Database

MySQL 인덱스 정리 및 설계 원칙

MySQL B-Tree 인덱스의 개념, 구조, 설계 원칙을 정리합니다.