TECH NOTES
기술노트
현장에서 검증된 개발 지식을 기록합니다.
868584838281807978777675
Database
학습 기반 쿼리 최적화 — 모델이 옵티마이저를 도울 수 있는 지점
옵티마이저가 실행계획을 고르는 과정에서 무엇이 틀리는지, 학습 기반 접근이 어디를 개선하는지 정리한다. 카디널리티 추정 오류, 플랜 선택, 적용 시 운영 리스크와 검증 방법을 다룬다.
Infra
x86 에뮬레이션 이해하기 — ARM 서버로 옮길 때 무엇이 느려지나
ARM 환경에서 x86 바이너리를 돌릴 때 쓰이는 이진 변환의 구조와 비용을 정리한다. 메모리 모델 차이, 변환 캐시, SIMD 처리, 그리고 실제 마이그레이션에서 네이티브로 가야 하는 지점을 다룬다.
Backend
고루틴 누수 잡기 — 새는 패턴 6가지와 프로파일로 찾는 법
고루틴이 끝나지 않고 쌓이는 전형적인 패턴과 탐지 방법을 정리한다. 채널 블로킹, 컨텍스트 미전파, 타임아웃 없는 대기 같은 원인별 재현 코드와 pprof·테스트 기반 검출법을 다룬다.
Frontend
View Transitions API — 웹에서 네이티브 앱 같은 화면 전환의 원리와 실전
SPA 라우팅의 뚝뚝 끊기는 화면 전환을 브라우저가 스냅샷으로 부드럽게 이어주는 View Transitions API. 원리, 크로스 도큐먼트 전환, 공유 요소 애니메이션, 프레임워크 통합, 접근성까지 코드로 정리했다.
Frontend
React Server Components 실전 — RSC·Server Actions·스트리밍으로 데이터 패칭 재설계
use client 경계, 서버 컴포넌트 직접 패칭, Suspense 스트리밍, Server Actions 뮤테이션, 직렬화 규칙, 캐싱·재검증, 흔한 함정과 안 쓸 때까지 Next.js App Router 실전 코드로 정리한다.
Frontend
ResizeObserver — 요소 크기 변화를 감지하는 실전 패턴
window.resize로는 못 잡는 개별 요소의 크기 변화를 ResizeObserver로 감지합니다. borderBoxSize 사용법, 악명 높은 loop 에러 회피, 컨테이너 기준 반응형 실전 패턴까지 정리했습니다.
Tools
SSH 멀티플렉싱(ControlMaster) — 접속을 재사용해 빨라지는 법
SSH 멀티플렉싱(ControlMaster)은 열린 연결 하나를 재사용해 반복 접속을 인증 없이 빠르게 만듭니다. ~/.ssh/config 세 줄 설정, -O 제어 명령, 주의점까지 정리했습니다.
Backend
캐시 스탬피드(Thundering Herd) — 인기 캐시 만료가 DB를 죽일 때
인기 캐시가 만료되는 순간 요청이 DB로 쏟아지는 캐시 스탬피드 현상. 뮤텍스 락, 확률적 조기 만료, stale-while-revalidate 세 가지 방어법을 비교합니다.
Backend
커넥션 풀 사이징 — 크게 잡을수록 느려지는 역설
DB 커넥션 풀을 키울수록 오히려 느려지는 이유와 적정 크기를 잡는 법. 풀 고갈·커넥션 누수, HikariCP 공식, 서버리스와 PgBouncer까지 실전 정리.
Database
EXPLAIN ANALYZE로 실행계획 읽기 — 느린 쿼리를 눈으로 잡기
EXPLAIN ANALYZE로 데이터베이스가 쿼리를 실제 어떻게 실행했는지 읽는 법 — actual time·rows 추정치·스캔 종류를 보고 느린 쿼리를 감이 아니라 근거로 잡는다.
Frontend
폰트 폴백 메트릭 오버라이드 — 웹폰트 교체 시 CLS 없애기
웹폰트가 뒤늦게 교체되며 화면이 툭 밀리는 CLS를 없애는 폰트 폴백 메트릭 오버라이드 기법. size-adjust와 ascent-override 사용법, 배율을 직접 구하는 방법, next/font 자동화까지 실전 위주로 정리했다.
Frontend
fetchpriority와 preload — LCP 이미지를 먼저 불러오게 만들기
LCP를 차지하는 히어로 이미지를 브라우저가 먼저 내려받게 만드는 fetchpriority와 preload 실전 가이드. loading=lazy 오용과 srcset 불일치 같은 흔한 실수, 적용 후 확인 방법까지 짚었다.