이상 현상이 뭔지, 1NF~3NF가 어떻게 이를 해결하는지, 그리고 실무에서 의도적으로 정규화를 깨는 경우는 언제인지 정리한다.
EXPLAIN 실행 계획에서 type, key, Extra가 뭘 의미하는지, OFFSET 페이징이 느린 이유와 커버링 인덱스로 해결하는 방법을 정리한다.
Controller, Service, Domain, Repository 각 계층이 무엇을 해야 하고 무엇을 하지 말아야 하는지, 흔한 위반 패턴과 해결책을 정리한다.
락 없이 읽기 일관성을 보장하는 MVCC, 갭 락이 Phantom Read를 막는 원리, 데드락이 생기는 이유와 예방법까지. MySQL InnoDB의 동시성 처리 방식을 정리한다.
OrderService에 주입되는 의존성이 계속 늘어나는 문제를 Spring Event와 @TransactionalEventListener로 해결하는 방법을 다룬다.
B-Tree 구조부터 복합 인덱스 순서 규칙, 커버링 인덱스, 인덱스가 무력화되는 6가지 패턴까지. 쿼리가 느리다면 인덱스부터 봐야 한다.
외부 API 호출 코드에서 흐름은 똑같은데 구현만 다른 상황, 템플릿 메서드 패턴으로 중복 없이 해결하는 법을 다룬다.
비즈니스 로직이 Service에 흩어지는 빈약한 도메인 모델의 문제를 짚고, 엔티티가 스스로 상태를 검증하는 풍부한 도메인 모델로 전환하는 방법을 안내한다.
Ghostty + zsh 환경에서 Starship 프롬프트를 세팅한 기록. 최종 config 전체 공개 + 개발 스택별로 유용한 모듈 정리.
터미널 환경 세팅하면서 vim 자리에 Neovim + LazyVim을 넣었다. 기본 vim 사용법부터 LazyVim 단축키, 플러그인 추가 방법까지 정리했다.
개인정보처리방침