TECH NOTES
기술노트
현장에서 검증된 개발 지식을 기록합니다.
157215711570156915681567156615651564156315621561
Infra
컨테이너 이미지 최적화 — 멀티스테이지·distroless로 1.2GB를 80MB로 줄이기
Docker 이미지가 커지는 진짜 이유부터 멀티스테이지 빌드, distroless와 alpine의 트레이드오프, 레이어 순서와 캐시, .dockerignore, 보안 표면 축소까지 실제 Dockerfile로 정리했다.
Infra
Terraform 상태 관리와 모듈 설계 — 실무에서 안 터지는 IaC 패턴
Terraform 원격 상태와 잠금, 워크스페이스 대 디렉토리 분리, 얇은 모듈 설계, plan/apply 워크플로, 시크릿·드리프트 대응, OpenTofu 이주 판단까지 실무에서 안 터지는 IaC 패턴을 실제 코드와 함께 정리했다.
Infra
GitOps와 ArgoCD — Git을 단일 진실원본으로 삼는 선언형 배포 실전
GitOps와 ArgoCD로 Git을 단일 진실원본 삼아 pull 기반 배포를 구현하는 법. 드리프트 감지·self-heal, App of Apps, 시크릿 관리, 롤백까지 실무 관점으로 정리했다.
Database
SQL 윈도우 함수 실전 — ROW_NUMBER·RANK·LAG/LEAD로 top-N·전월대비·이동평균 뽑기
OVER·PARTITION BY·ORDER BY와 ROWS/RANGE 프레임으로 그룹별 top-N, LAG 전월 대비, 누적합, 7일 이동평균, 세션화를 실제 SQL 예시로 정리했습니다. GROUP BY와의 차이와 흔한 함정까지.
Infra
쿠버네티스 리소스 관리 — requests/limits, OOMKill, CPU 스로틀, QoS 총정리
requests는 스케줄링, limits는 런타임 상한이다. 메모리 초과는 OOMKill(137), CPU 초과는 스로틀링. QoS 클래스와 HPA/VPA, 실전 사이징과 흔한 오설정까지 정리한다.
Database
DB 커넥션 풀 튜닝 — PgBouncer와 풀 사이징 공식으로 커넥션 폭증 잡기
커넥션 풀은 클수록 좋은 게 아니다. 왜 PostgreSQL 커넥션이 비싼지, 풀 크기 공식과 리틀의 법칙, PgBouncer transaction/session 풀링, prepared statement 함정, 서버리스·람다 커넥션 폭증까지 실무로 정리한다.
Database
CDC와 Debezium — DB 변경을 실시간 파이프라인으로 흘려보내기
폴링 대신 트랜잭션 로그(WAL)를 읽어 DB 변경을 실시간으로 캡처하는 CDC. Debezium과 Kafka Connect로 캐시 무효화·검색 인덱스 동기화·아웃박스 패턴을 구현하고 스키마 변경까지 다루는 실전 가이드.
Database
PostgreSQL 인덱스 완전정복 — B-tree·GIN·GiST·BRIN 언제 어떻게 쓰나
PostgreSQL 인덱스 총정리. B-tree·GIN·GiST·BRIN을 언제 쓰는지, 복합 인덱스 컬럼 순서 정하는 법, 부분·표현식·커버링 인덱스, EXPLAIN으로 실제 타는지 확인하는 법과 인덱스가 안 타는 흔한 이유까지 실무 기준으로 정리했다.
Frontend
아일랜드 아키텍처와 부분 하이드레이션 — Astro·Qwik으로 자바스크립트 줄이기
하이드레이션은 왜 비싼가. 아일랜드 아키텍처와 Qwik의 resumability, Astro의 client:* 지시자로 자바스크립트를 줄이는 법, 그리고 언제 SPA를 그냥 쓰는 게 더 나은지까지 실무 경험으로 정리했습니다.
Frontend
TanStack Query로 서버 상태 관리 — 캐싱·무효화·낙관적 업데이트 실전 패턴
TanStack Query로 서버 상태를 다루는 실전 패턴 정리. 서버 vs 클라이언트 상태 구분, staleTime/gcTime 차이, queryKey 설계, invalidation, 낙관적 업데이트, 프리페치, 흔한 실수까지 코드로 설명합니다.
Frontend
INP 최적화 실전 — FID를 대체한 코어 웹 바이탈, 롱태스크를 쪼개 200ms 벽 넘기
FID를 대체한 INP(Interaction to Next Paint) 실전 최적화 가이드. 롱태스크 쪼개기, scheduler.yield(), React transition, LCP·CLS 동반 개선, RUM 측정과 340→170ms 실전 사례까지 정리했다.
Frontend
CSS 컨테이너 쿼리와 :has() — 미디어쿼리로는 못 풀던 반응형을 컴포넌트 단위로
뷰포트 미디어쿼리의 한계를 @container 컨테이너 쿼리와 :has() 부모 선택자로 넘어서는 실전 패턴을 정리했다. 컴포넌트 단위 반응형을 실현하는 실제 CSS 코드, cqi 단위, 마이그레이션 함정, 2025년 브라우저 지원까지 한 번에 다룬다.