@TransactionalEventListener 빠른 체크 노트 Notes @TransactionalEventListener를 쓸 때 가장 먼저 확인할 것은 두 가지다. 이벤트가 실제로 트랜잭션 안에서 발행되는가 내가 원하는 실행 시점이 커밋 이후인가, 즉시 실행인가 핵심 요약 기본 @EventListener는 발행 즉시 실행된다. @TransactionalEventListener는 트랜잭션 phas... 2025/05/13 Notes, Spring
콜백(callback) Notes 0. 콜백(callback)의 탄생 배경 콜백(callback)은 “코드를 나중에 실행하기 위해 전달하는 기술”로, 함수형 프로그래밍과 비동기 프로그래밍의 핵심 요소이다. 콜백은 단순히 기술적인 편의성을 넘어서 제어 흐름을 위임하고 추상화하기 위한 패러다임에서 출발했다. 0.1. 콜백의 탄생 배경 프로그래밍의 구조적 진화 흐름 속에서 등장 ... 2025/05/12 Archive, Programming
헬퍼 클래스는 안티패턴일까? Notes 실무에서는 도메인 객체가 너무 비대해지는 걸 막기 위해 Helper 클래스가 자주 사용된다. 하지만 어느 순간부터 로직이 섞이고, 도메인 책임과 기술 책임이 뒤섞이면서 코드 유지보수가 어려워진다. 객체 지향 프로그래밍의 SOLID 원칙을 기준으로 하면 헬퍼 클래스는 존재 자체가 안티패턴이라고도 주장할 수 있으나, 실질적으로 도메인과 전혀 관련없는 정적... 2025/05/12 Archive, Programming
백엔드 개발자: 데이터 흐름의 설계자 Notes 1. 백엔드는 왜 중요한가? 웹 사이트나 앱에서 버튼을 클릭했을 때 어떤 일이 일어날까? 화면에는 무언가가 나타나지만, 그 이면에는 수많은 처리 과정이 있다. 버튼에 의해 요청되는 데이터를 수신하고, DB에 저장하며 필요한 데이터를 응답하는 일련의 과정이 백엔드 시스템에서 동작한다. 바로 그 보이지 않는 세계를 설계하고 책임지는 존재가 백엔드다. ... 2025/05/02 Notes, Common
2025-04-22-TIL TIL Today I Learned 인증/인가는 어디에 구현해야 할까? 인증/인가는 어디에 어떻게 구현해야 할까? 쿠폰 발급 시스템 효율적인 쿠폰 발급 시스템 구현을 위한 기술적 접근 쿠폰 발급 시스템 디자인 Today I Interview Redis가 싱글 스레드로 만들어진 이유를 설명해주세요. Redis가 단일 스레드(... 2025/04/22 TIL, 2025-TIL
CPU부터 CDN까지: 모든 계층에서의 캐싱 Notes 캐싱은 반복적인 계산과 원격 조회 비용을 줄이기 위해 데이터를 더 가까운 위치에 저장하는 기술이다. CPU 내부부터 CDN까지 거의 모든 계층에 등장하며, 계층이 달라도 핵심 질문은 비슷하다. 무엇을 저장할 것인지, 언제 무효화할 것인지, 원본과 얼마나 차이를 허용할 것인지가 중요하다. 1. CPU 캐시 개요: CPU는 메모리에서 데이... 2025/04/22 Notes, Cache
캐시 스탬피드(Cache Stampede) Notes 캐시 스탬피드(Cache Stampede)란? 캐시 스탬피드는 많은 요청이 동시에 같은 캐시 키를 조회하는 순간, 그 키가 비어 있거나 만료되어 원본 저장소로 요청이 한꺼번에 몰리는 현상이다. 평소에는 캐시가 흡수하던 부하가 한순간에 DB나 외부 API로 전환되기 때문에, 응답 시간 급증과 장애로 이어지기 쉽다. 아래의 간단한 예시를 통해 발생원인... 2025/04/22 Notes, Cache
데이터베이스 페이징 성능을 어떻게 봐야 하는가 Notes 페이징은 왜 느려지는가 목록 조회에서 페이지네이션은 당연한 기능처럼 보이지만, 데이터가 커질수록 단순 limit offset 방식이 병목이 되기 쉽다. 문제는 DB가 offset = 100000이라고 해서 100000개를 건너뛰는 비용이 공짜가 아니라는 점이다. 보통은 앞 데이터를 훑은 뒤 버리는 식으로 처리되기 때문에 뒤 페이지로 갈수록 느려질 ... 2025/04/22 Notes, Database
Spring에서 이해해야 할 JPA 아키텍처 Notes JPA를 왜 아키텍처 관점에서 봐야 하는가 Spring에서 JPA를 쓴다고 할 때, 실제로는 JPA 명세와 구현체(Hibernate), 그리고 Spring Data JPA가 함께 동작한다. 이 층위를 섞어서 이해하면 “JPA가 해주는 일”과 “Spring이 편의로 제공하는 일”이 뒤엉키기 쉽다. 큰 구조 애플리케이션 코드 Spring D... 2025/04/22 Notes, Spring
2025-04-21-TIL TIL Today I Learned Today I Interview Q. 응집도와 결합도에 대해서 설명해주세요. 응집도(Cohesion)는 모듈에 포함된 내부 요소들이 연관되어 있는 정도를 나타냅니다. 결합도(Coupling)는 의존성의 정도를 나타내며, 다른 모듈에 대해 얼마나 많은 지식을 갖고 있는지를 나타냅니다. 응집도와 결합도는 변경과... 2025/04/21 TIL, 2025-TIL