spring-internals-lab로 다시 읽는 Spring 3 - refresh()와 Bean 생성 파이프라인 Notes GitHub 저장소 이번 글의 질문 ApplicationContext.refresh()는 Spring 컨테이너 초기화의 중심이다. 그런데 실무에서는 이 메서드를 직접 호출할 일보다 결과만 접할 일이 훨씬 많다. 그래서 다음 질문이 자주 흐릿하게 남는다. BeanFactoryPostProcessor와 BeanPostProcessor는 정확... 2026/08/13 Spring spring-internals-lab로 다시 읽는 Spring 3편
spring-internals-lab로 다시 읽는 Spring 4 - 의존성 주입과 후보 선택 Notes GitHub 저장소 이번 글의 질문 의존성 주입은 흔히 한 덩어리로 설명되지만, 실제로는 두 단계로 나뉜다. 어떤 생성자를 쓸 것인가 그 생성자의 각 파라미터를 무엇으로 채울 것인가 같은 타입의 후보가 여러 개이면 별도 규칙이 더 붙는다. @Primary @Qualifier 파라미터 이름 일치 순환 참조 여부 ... 2026/08/13 Spring spring-internals-lab로 다시 읽는 Spring 4편
spring-internals-lab로 다시 읽는 Spring 5 - Bean lifecycle과 후처리기 Notes GitHub 저장소 Bean lifecycle은 한 줄로 끝나지 않는다 Spring에서 Bean 생명주기를 단순하게 설명하면 보통 이렇게 말한다. 생성 의존성 주입 초기화 사용 소멸 이 설명은 틀리진 않지만 너무 평평하다. 실제로는 이 사이에 Aware, BeanPostProcessor, @PostConstruct, I... 2026/08/13 Spring spring-internals-lab로 다시 읽는 Spring 5편
spring-internals-lab로 다시 읽는 Spring 6 - 프록시와 AOP Notes GitHub 저장소 이번 글의 질문 Spring AOP를 이해할 때 가장 먼저 잡아야 하는 건 @Aspect 문법이 아니다. 그보다 더 아래 질문이 있다. 언제 JDK 프록시를 쓰고 언제 CGLIB을 쓰는가 인터셉터 체인은 어떻게 진행되는가 final, private, self-invocation은 왜 AOP를 우회하는가 수동... 2026/08/13 Spring spring-internals-lab로 다시 읽는 Spring 6편
spring-internals-lab로 다시 읽는 Spring 7 - @Transactional의 실체 Notes GitHub 저장소 @Transactional은 애노테이션이 아니라 인터셉터다 Spring을 오래 써도 @Transactional은 자꾸 마법처럼 느껴진다. 하지만 앞선 글에서 프록시와 AOP 구조를 먼저 정리해 두면 이 기능도 훨씬 덜 추상적으로 보인다. 이번 글의 질문은 다음과 같다. @Transactional은 실제로 어디서 트랜... 2026/08/13 Spring spring-internals-lab로 다시 읽는 Spring 7편
spring-internals-lab로 다시 읽는 Spring 8 - DispatcherServlet과 MVC 요청 흐름 Notes GitHub 저장소 이번 글의 질문 Spring MVC를 처음 배울 때는 @GetMapping과 @RequestBody부터 보게 된다. 하지만 이 시점에는 아직 가장 중요한 질문이 비어 있다. 요청은 어떤 순서로 컨트롤러 메서드에 도달하는가 HandlerMapping과 HandlerAdapter는 왜 분리되어 있는가 리터럴 경로와... 2026/08/13 Spring spring-internals-lab로 다시 읽는 Spring 8편
spring-internals-lab로 다시 읽는 Spring 9 - Spring Boot는 무엇을 자동으로 조립하는가 Notes GitHub 저장소 Spring Boot를 별도 프레임워크처럼 보면 오해가 생긴다 Boot를 처음 쓰면 모든 것이 너무 쉽게 돌아간다. SpringApplication.run(App.class, args); 이 한 줄 때문에 Boot를 Framework와는 다른 거대한 마법처럼 느끼기 쉽다. 하지만 spring-internals-lab의 ... 2026/08/13 Spring spring-internals-lab로 다시 읽는 Spring 9편
2026-08-09-TIL: rollback-only 버그로 다시 본 트랜잭션 전파, 그리고 Muse Code TIL 최근 2주는 spring-internals-lab에서 커밋이 가장 많이 나왔다. 트랜잭션 전파부터 DispatcherServlet, Spring Boot 자동 구성까지 로드맵의 남은 부분을 몰아서 진행했다. 그 사이 monticker 정산 도메인을 설계했고, Dudecide라는 새 프로젝트를 문서부터 시작했다. 요즘 한 작업 spring-int... 2026/08/09 2026-TIL
파티셔닝과 샤딩 - 기준 선택, 로컬과 글로벌 인덱스, 재분배 비용 Notes 테이블이 커져서 느려졌을 때 “파티셔닝하자”가 나오는데, 무엇이 해결되고 무엇은 그대로인지 구분하지 않으면 복잡도만 늘어난다. 그리고 파티셔닝과 샤딩은 같은 단어로 묶이기 쉽지만, 한 대 안에서 나누는 것과 여러 대로 나누는 것은 전혀 다른 문제다. 둘의 차이 파티셔닝 샤딩 ... 2026/08/09 Database
순서와 격리는 같은 자원을 반대로 당긴다 - 핫 키가 워커 하나를 넘는 순간 세 설계가 갈라지는 지점 실무 사례 Notes 카카오뱅크 알림 플랫폼 리뷰에서 “순서와 격리는 같은 자원을 두고 반대 방향으로 당긴다”고 썼다. monticker의 파티션 실험에서는 핫 종목이 같은 파티션 이웃을 p99 13초로 함께 밀어내는 것을 봤다. 두 번 다 현상은 확인했지만, 어느 지점에서 갈라지는지는 재지 않았다. 이 글이 그 측정이다. 저장소는 data-ops-lab이고 재실행은 한... 2026/08/08 Common