TECH NOTES
기술노트
현장에서 검증된 개발 지식을 기록합니다.
159615951594159315921591159015891588158715861585
Frontend
콘텐츠 진위 증명 구현하기 — C2PA 자격증명을 웹에서 다루는 법
이미지가 진짜인지 증명하는 C2PA 콘텐츠 자격증명의 구조와 웹 서비스에서의 처리 방법을 정리한다. 업로드 파이프라인에서 메타데이터를 보존하는 법, 검증 UI 문구 설계, 한계까지 다룬다.
Backend
깃을 객체 스토리지 위에 올리기 — packfile 구조와 S3 기반 저장소 설계
깃 저장소를 S3 같은 객체 스토리지에 올리려면 무엇이 걸림돌인지, packfile과 인덱스 구조를 이해하고 어떤 재구성이 필요한지 정리한다. LFS·대용량 모노레포 운영 관점의 실전 고려사항까지 다룬다.
AI
와트당 지능 — 로컬 AI 추론 효율을 측정하는 법
토큰/초만으로는 로컬 추론 성능을 설명할 수 없다. 메모리 대역폭 한계, 프리필과 디코드의 차이, 전력당 처리량, 배치 효과까지 실제로 측정하고 비교하는 기준을 정리한다.
Mobile
메이저 OS 업데이트 대응 플레이북 — iOS 27 사이클로 정리한 앱 점검 순서
메이저 OS가 나온 첫 2주에 무엇을 보고 무엇을 미룰지 정리한다. OS별 크래시 분할, 심볼리케이션, 레이아웃 회귀, 앱 인텐트 노출, 최소 지원 버전 결정까지 순서대로 다룬다.
Infra
복구 불가를 만들지 않는 법 — RPO·RTO부터 복구 리허설까지
백업이 있다는 것과 복구할 수 있다는 것은 다르다. RPO·RTO 정의, 복제와 백업의 구분, 3-2-1 규칙의 현대적 해석, 그리고 실제로 돌려 보는 복구 리허설 절차를 정리한다.
Frontend
AI 크롤러 제어하기 — robots.txt의 한계와 실제로 막는 방법
학습·인덱싱·에이전트 요청이 뒤섞인 2026년의 봇 트래픽을 어떻게 구분하고 통제하는지 정리한다. robots.txt가 하는 일과 못 하는 일, 엣지 차단 전략, 검색 노출을 잃지 않는 선택적 허용까지 다룬다.
Backend
고루틴 누수 잡기 — 새는 패턴 6가지와 프로파일로 찾는 법
고루틴이 끝나지 않고 쌓이는 전형적인 패턴과 탐지 방법을 정리한다. 채널 블로킹, 컨텍스트 미전파, 타임아웃 없는 대기 같은 원인별 재현 코드와 pprof·테스트 기반 검출법을 다룬다.
AI
코딩 에이전트 하네스 설계 — 같은 모델로 결과가 달라지는 이유
에이전트 성능은 모델만으로 결정되지 않는다. 도구 설계, 컨텍스트 구성, 검증 루프, 실패 복구 같은 하네스(harness) 요소가 결과를 좌우한다. 직접 만들 때의 설계 원칙과 흔한 실패를 정리한다.
Database
포스트그레SQL 전문검색의 한계 — tsvector로 안 되는 것과 BM25 확장의 자리
tsvector·ts_rank가 실제 검색 품질에서 부족해지는 지점을 짚는다. 랭킹 모델의 차이, 한국어 형태소 처리, 자동완성과 오타 보정, 그리고 언제 전용 검색엔진이나 BM25 확장으로 넘어가야 하는지 정리한다.
Infra
npm 공급망 방어 실전 — 설치 훅·출처 증명·CI 격리로 막는 7가지
패키지 하나가 개발자 노트북과 CI를 장악하는 경로를 차단하는 방법을 정리한다. 설치 스크립트 비활성화, 락파일 정책, provenance 검증, CI 자격증명 분리, 이상 탐지까지 실행 가능한 순서로 다룬다.
Frontend
CSS 타이포그래피 2026 — text-box-trim·text-wrap:balance로 줄맞춤 끝내기
제목 위아래 여백이 안 맞는 이유(하프 리딩)부터 text-box-trim, text-wrap의 balance·pretty, font-size-adjust까지. 2026년 기준으로 CSS만으로 해결되는 타이포그래피 문제들을 정리한다.
Backend
TLS 핸드셰이크 왕복 줄이기 — HelloRetryRequest·키 공유·세션 재개 실전
TLS 1.3에서 핸드셰이크 왕복이 하나 더 생기는 원인과 해결책을 정리한다. HelloRetryRequest의 발생 조건, 키 공유 그룹 선택, 세션 재개와 0-RTT의 트레이드오프, 그리고 실제로 측정하는 방법까지 다룬다.