spring-internals-lab로 다시 읽는 Spring 4 - 의존성 주입과 후보 선택 Notes GitHub 저장소 이번 글의 질문 의존성 주입은 흔히 한 덩어리로 설명되지만, 실제로는 두 단계로 나뉜다. 어떤 생성자를 쓸 것인가 그 생성자의 각 파라미터를 무엇으로 채울 것인가 여기에 후보가 여러 개일 때는 또 별도 규칙이 붙는다. @Primary @Qualifier 파라미터 이름 일치 순환 참조 여부 이번... 2026/08/13 Notes, Spring spring-internals-lab로 다시 읽는 Spring 4편
spring-internals-lab로 다시 읽는 Spring 5 - Bean lifecycle과 후처리기 Notes GitHub 저장소 Bean lifecycle은 한 줄로 끝나지 않는다 Spring에서 Bean 생명주기를 단순하게 설명하면 보통 이렇게 말한다. 생성 의존성 주입 초기화 사용 소멸 이 설명은 틀리진 않지만 너무 평평하다. 실제로는 이 사이에 Aware, BeanPostProcessor, @PostConstruct, Ini... 2026/08/13 Notes, Spring spring-internals-lab로 다시 읽는 Spring 5편
spring-internals-lab로 다시 읽는 Spring 6 - 프록시와 AOP Notes GitHub 저장소 이번 글의 질문 Spring AOP를 이해할 때 가장 먼저 잡아야 하는 건 @Aspect 문법이 아니다. 그보다 더 아래 질문이 있다. 언제 JDK 프록시를 쓰고 언제 CGLIB을 쓰는가 인터셉터 체인은 어떻게 진행되는가 final, private, self-invocation은 왜 AOP를 우회하는가 수동 P... 2026/08/13 Notes, Spring spring-internals-lab로 다시 읽는 Spring 6편
spring-internals-lab로 다시 읽는 Spring 7 - @Transactional의 실체 Notes GitHub 저장소 @Transactional은 애노테이션이 아니라 인터셉터다 Spring을 오래 써도 @Transactional은 자꾸 마법처럼 느껴진다. 하지만 앞선 글에서 AOP 구조를 먼저 정리해 두면 이 기능도 훨씬 덜 추상적으로 보인다. 이번 글의 질문은 다음과 같다. @Transactional은 실제로 어디서 트랜잭션을 시작하... 2026/08/13 Notes, Spring spring-internals-lab로 다시 읽는 Spring 7편
spring-internals-lab로 다시 읽는 Spring 8 - DispatcherServlet과 MVC 요청 흐름 Notes GitHub 저장소 이번 글의 질문 Spring MVC를 처음 배울 때는 @GetMapping과 @RequestBody부터 보게 된다. 하지만 이 시점에는 아직 가장 중요한 질문이 비어 있다. 요청은 어떤 순서로 컨트롤러 메서드에 도달하는가 HandlerMapping과 HandlerAdapter는 왜 분리되어 있는가 리터럴 경로와 변... 2026/08/13 Notes, 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의 17... 2026/08/13 Notes, Spring spring-internals-lab로 다시 읽는 Spring 9편
무신사 「Kafka와 Strimzi를 이용하여 6개의 도메인을 하나의 도메인으로 합쳐보았습니다」 리뷰 — 배치 없이 CDC와 Kafka Streams로 옮긴 결정, 그리고 통합 모델이 원본과 같다는 것을 누가 확인하는가 Tech Blog Review 원문: Kafka와 Strimzi를 이용하여 6개의 도메인을 하나의 도메인으로 합쳐보았습니다 — MUSINSA techblog, 조유신(커뮤니티개발팀), 2024-06-27 같은 날 리뷰한 네이버페이 전환 글과 나란히 읽으면 좋은 글이다. 둘 다 오래된 시스템을 멈추지 않고 새 구조로 옮기는 이야기이고, 둘 다 CDC를 쓴다. 다른 것은 네이버 글이... 2026/08/06 TechBlog, Musinsa 빅테크 기술 블로그 리뷰 56편
네이버 D2 「@RequestCache: HTTP 요청 범위 캐싱을 위한 커스텀 애너테이션 개발기」 리뷰 — 캐시의 수명을 '요청 하나'로 맞추면 TTL 고민이 사라진다, 그리고 @RequestScope가 안 되는 이유 Tech Blog Review 원문: @RequestCache: HTTP 요청 범위 캐싱을 위한 커스텀 애너테이션 개발기 — NAVER D2, 이상혁, 2025-11-26 한 줄 요약 한 HTTP 요청을 처리하는 동안 같은 외부 API를 여러 번 부르는 일이 흔하다. 원문은 “캐시의 수명을 요청 하나와 똑같이” 맞추는 애너테이션 @RequestCache를 만들었다. TTL을 정... 2026/08/02 TechBlog, Naver 빅테크 기술 블로그 리뷰 54편
컬리 「컬리의 입고 시스템이 외부 인입 데이터를 안전하게 동기화하는 방법」 리뷰 — 145회 재시도가 맞는 도메인과 재시도를 금지한 도메인, 그리고 발행부와 수신부가 각자 책임지는 구조 Tech Blog Review 원문: 컬리의 입고 시스템이 외부 인입 데이터를 안전하게 동기화하는 방법 — 아웃박스 패턴과 재시도 토픽으로 외부 채널 입고 정보를 안전하게 동기화하기 — 컬리 기술 블로그, 이창섭(SCM프로덕트개발), 2026-01-12 parity-pay 5편과 같은 패턴, 같은 스택(Spring, Kafka), 같은 해에 쓴 글이다. 그런데 재시도에 대한 결론... 2026/07/27 TechBlog, Kurly 빅테크 기술 블로그 리뷰 51편
카카오 「잃어버린 리포트를 찾아서: 카카오 메시징 시스템의 경쟁 조건 문제와 안티 패턴 제거 과정」 리뷰 — 벤더가 8ms 만에 리포트를 보냈고, 우리는 101ms짜리 트랜잭션 안에 있었다 Tech Blog Review 원문: 잃어버린 리포트를 찾아서: 카카오 메시징 시스템의 경쟁 조건 문제와 안티 패턴 제거 과정 — kakao tech, ravae.c 최지원(커넥티비티 플랫폼), 2026-02-09 한 줄 요약 사내 SMS 플랫폼 KIMS(하루 약 100만 건)에서 벤더의 전송 결과 리포트가 분명히 수신됐는데 DB의 메시지 상태가 SENT에 멈춰 있는 일이 0.... 2026/07/26 TechBlog, Kakao 빅테크 기술 블로그 리뷰 50편