콜백(callback) Notes 0. 콜백(callback)의 탄생 배경 콜백(callback)은 “코드를 나중에 실행하기 위해 전달하는 기술”로, 함수형 프로그래밍과 비동기 프로그래밍의 핵심 요소이다. 콜백은 단순히 기술적인 편의성을 넘어서 제어 흐름을 위임하고 추상화하기 위한 패러다임에서 출발했다. 0.1. 콜백의 탄생 배경 프로그래밍의 구조적 진화 흐름 속에서 등장 ... 2025/05/12 Notes, Programming
헬퍼 클래스는 안티패턴일까? Notes 실무에서는 도메인 객체가 너무 비대해지는 걸 막기 위해 Helper 클래스가 자주 사용된다. 하지만 어느 순간부터 로직이 섞이고, 도메인 책임과 기술 책임이 뒤섞이면서 코드 유지보수가 어려워진다. 객체 지향 프로그래밍의 SOLID 원칙을 기준으로 하면 헬퍼 클래스는 존재 자체가 안티패턴이라고도 주장할 수 있으나, 실질적으로 도메인과 전혀 관련없는 정적... 2025/05/12 Notes, 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개를 공짜로 건너뛰지는 않는다. 앞 데이터를 실제로 읽은 뒤 버리기 때문에 뒤 페이지로 갈수록 느려질 수 있다. PostgreSQL 문... 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
응집도와 결합도에 관하여: About Cohesion and Coupling Notes 응집도와 결합도를 이야기하기에 앞서, 자주 나오는 “모듈(Module)”이라는 단어가 정확히 어떤 의미인지 정리해보았다. 모듈(Module) 모듈(Module)이란? 모듈은 소프트웨어를 구성하는 기능적 단위 또는 구성 단위로, 관련된 코드(클래스, 함수, 설정 등)를 의미 있게 묶은 단위를 말한다. In computer software... 2025/04/21 Notes, Programming