TECH NOTES
기술노트
현장에서 검증된 개발 지식을 기록합니다.
87654321
Backend
로그 레벨과 구조화 로깅 — 디버깅이 쉬워지는 로그 쓰기
console.log만 흩뿌리면 정작 장애 때 원하는 로그를 못 찾는다. ERROR·WARN·INFO·DEBUG 구분과 JSON 구조화 로깅으로 검색 가능한 로그 만들기.
Tools
curl 완벽 활용 — API 디버깅에 꼭 쓰는 옵션
Postman 켜기 전에 curl 한 줄이면 끝나는 게 많다. 헤더·본문 전송, 응답 헤더 보기, 리다이렉트 추적, 타이밍 측정까지 필수 옵션 정리.
Infra
nginx 502 Bad Gateway, 원인부터 잡기
502는 nginx가 업스트림(앱)에서 정상 응답을 못 받았다는 뜻. 앱 다운·소켓 경로·타임아웃·권한 순으로 점검한다.
Backend
Node.js 메모리 누수 찾기 — 힙 스냅샷 실전
시간이 지날수록 메모리가 계속 오른다면 누수다. 전역 캐시·이벤트 리스너·클로저가 단골 범인. 힙 스냅샷 비교로 추적.
Backend
Node.js EADDRINUSE, 포트가 이미 사용 중일 때
"address already in use :3000" 에러 해결. 점유 프로세스 찾아 종료, 우아한 종료(graceful shutdown)로 재발 방지.
Frontend
Tailwind 클래스가 안 먹힐 때 체크리스트
content 경로 누락, 동적 클래스 문자열 조합, 빌드 캐시. Tailwind가 클래스를 못 찾아 purge하는 흔한 원인들.
Frontend
TypeScript "Type X is not assignable" 자주 만나는 5가지
가장 흔한 타입 에러를 패턴으로 정리. union 좁히기 누락, as const, 인덱스 시그니처, 함수 매개변수 반공변성까지.
Frontend
React useEffect 무한 루프, 왜 생기고 어떻게 끊나
useEffect 무한 루프의 99%는 의존성 배열 안에 매 렌더마다 새로 만들어지는 객체·함수가 들어가서다. 원인 3가지와 해결법.